





















集成学习(Ensemble Learning)是一种通过结合多个模型的预测结果来提高整体性能的技术。
Bagging 的目标是通过减少模型的方差来提高性能,适用于高方差、易过拟合的模型。它通过以下步骤实现:
典型算法:
优势:
缺点:
from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 加载数据集 iris = load_iris() X, y = iris.data, iris.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 创建随机森林分类器 rf = RandomForestClassifier(n_estimators=100, random_state=42) # 训练模型 rf.fit(X_train, y_train) # 预测 y_pred = rf.predict(X_test) # 计算准确率 accuracy = accuracy_score(y_test, y_pred) print(f"随机森林的准确率: {accuracy:.2f}")
Boosting 的目标是通过减少模型的偏差来提高性能,适用于弱学习器。Boosting 的核心思想是逐步调整每个模型的权重,强调那些被前一轮模型错误分类的样本。Boosting 通过以下步骤实现:
典型算法:
优势:
缺点:
from sklearn.ensemble import AdaBoostClassifier from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score from sklearn.tree import DecisionTreeClassifier # 加载数据集 iris = load_iris() X, y = iris.data, iris.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 使用默认的弱学习器(决策树),并指定使用 SAMME 算法 ada = AdaBoostClassifier(DecisionTreeClassifier(max_depth=1), n_estimators=50, random_state=42, algorithm='SAMME') # 训练模型 ada.fit(X_train, y_train) # 预测 y_pred = ada.predict(X_test) # 计算准确率 accuracy = accuracy_score(y_test, y_pred) print(f"AdaBoost的准确率: {accuracy:.2f}")
Stacking 是一种通过训练不同种类的模型并组合它们的预测来提高整体预测准确度的方法。其核心思想是:
优势:
缺点:
from sklearn.ensemble import StackingClassifier from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier from sklearn.svm import SVC from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score # 加载数据集 iris = load_iris() X, y = iris.data, iris.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 定义基学习器 estimators = [ ('dt', DecisionTreeClassifier(max_depth=1)), ('svc', SVC(kernel='linear', probability=True)) ] # 创建Stacking分类器 stacking = StackingClassifier(estimators=estimators, final_estimator=LogisticRegression()) # 训练模型 stacking.fit(X_train, y_train) # 预测 y_pred = stacking.predict(X_test) # 计算准确率 accuracy = accuracy_score(y_test, y_pred) print(f"Stacking的准确率: {accuracy:.2f}")
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。