一、集成学习简介
集成学习(Ensemble Learning)是一种机器学习技术,它通过将多个学习器(或称为“基学习器”、“弱学习器”)的预测结果结合起来,以提高整体预测性能。集成学习通常分为三种类型:Bagging、Boosting和Stacking。
- Bagging:通过自助采样法(bootstrap sampling)从原始数据集中抽取多个训练子集,并在每个子集上训练一个基学习器,然后将这些基学习器的预测结果通过投票或平均等方式进行组合。随机森林(Random Forest)是Bagging的一个典型代表。
- Boosting:Boosting算法通过串行训练多个基学习器,每个基学习器都针对之前基学习器犯的错误进行修正。梯度提升(Gradient Boosting)是Boosting的一个代表算法。
- Stacking:Stacking算法将多个基学习器的预测结果作为新的特征输入到一个元学习器(meta-learner)中进行训练,元学习器的输出即为最终的预测结果。
二、随机森林(Random Forest)
2.1 Python代码示例
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建随机森林分类器
rf_clf = RandomForestClassifier(n_estimators=100, random_state=42)
# 训练模型
rf_clf.fit(X_train, y_train)
# 预测测试集
y_pred = rf_clf.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Random Forest Accuracy: {accuracy}")
2.2 代码解释
- 加载数据集:使用
sklearn.datasets
模块中的load_iris()
函数加载鸢尾花数据集。这是一个常用的多类分类问题的数据集,包含150个样本,每个样本有4个特征,属于3个类别之一。 - 划分训练集和测试集:使用
train_test_split()
函数将数据集划分为训练集和测试集,其中测试集占20%。random_state
参数用于确保每次划分的结果一致。 - 创建随机森林分类器:使用
RandomForestClassifier()
函数创建一个随机森林分类器。n_estimators
参数指定了基学习器的数量(即树的数量),这里设置为100。random_state
参数用于确保每次训练的结果一致。 - 训练模型:使用
fit()
方法训练模型,传入训练集的特征和标签。 - 预测测试集:使用
predict()
方法对测试集进行预测,得到预测结果。 - 计算准确率:使用
accuracy_score()
函数计算预测结果的准确率,即预测正确的样本数占总样本数的比例。
三、梯度提升(Gradient Boosting)
3.1 Python代码示例
from sklearn.ensemble import GradientBoostingClassifier
# 使用与随机森林相同的训练集和测试集
# 创建梯度提升分类器
gb_clf = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, max_depth=1, random_state=42)
# 训练模型
gb_clf.fit(X_train, y_train)
# 预测测试集
y_pred = gb_clf.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Gradient Boosting Accuracy: {accuracy}")
3.2 代码解释
- 创建梯度提升分类器:使用
GradientBoostingClassifier()
函数创建一个梯度提升分类器。除了n_estimators
和random_state
处理结果:一、集成学习简介
集成学习(Ensemble Learning)是一种机器学习技术,它通过将多个学习器(或称为“基学习器”、“弱学习器”)的预测结果结合起来,以提高整体预测性能。集成学习通常分为三种类型:Bagging、Boosting和Stacking。
- Bagging:通过自助采样法(bootstrap sampling)从原始数据集中抽取多个训练子集,并在每个子集上训练一个基学习器,然后将这些基学习器的预测结果通过投票或平均等方式进行组合。随机森林(Random Forest)是Bagging的一个典型代表。
Boosting:Boosting算法通过串行训练多个基学习器,每个基学习器都针对之前基学习器犯的错误进行修正。梯度提升(Gradient Boosting)是Boosting的一个代表算法。
Stacking:Stacking算法将多个基学习器的预测结果作为新的特征输入到一个元学习器(meta-learner)中进行训练,元学习器的输出即为最终的预测结果。二、随机森林(Random Forest)
2.1 Python代码示例
```python加载数据集
划分训练集和测试集
创建随机森林分类器
训练模型
预测测试集
计算准确率
- 加载数据集:使用
sklearn.datasets
模块中的load_iris()
函数加载鸢尾花数据集。这是一个常用的多类分类问题的数据集,包含150个样本,每个样本有4个特征,属于3个类别之一。三、梯度提升(Gradient Boosting)
3.1 Python代码示例
```python使用与随机森林相同的训练集和测试集
创建梯度提升分类器
训练模型
预测测试集
计算准确率
- 创建梯度提升分类器:使用
GradientBoostingClassifier()
函数创建一个梯度提升分类器。除了n_estimators
和random_state