熟悉sklearn中的集成方法的使用,使用mnist数据使用sklearn中自带的digits-手写数字数据集,采用随机森林、Adaboos、梯度提升树构建分类模型。 使用投票方法集成内容2中三个集成模型,并比较性能
时间: 2024-02-01 17:16:20 浏览: 66
python机器学习库sklearn-集成方法
好的,下面是具体的步骤:
1. 加载数据集
首先我们需要加载手写数字数据集。
```python
from sklearn.datasets import load_digits
digits = load_digits()
X, y = digits.data, digits.target
```
2. 划分数据集
我们将数据集划分为训练集和测试集。
```python
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
```
3. 构建随机森林、Adaboost、梯度提升树模型
我们可以使用sklearn中的RandomForestClassifier、AdaBoostClassifier、GradientBoostingClassifier类来构建随机森林、Adaboost、梯度提升树模型。
```python
from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier, GradientBoostingClassifier
rf_clf = RandomForestClassifier(n_estimators=100, random_state=42)
ada_clf = AdaBoostClassifier(n_estimators=100, random_state=42)
gb_clf = GradientBoostingClassifier(n_estimators=100, random_state=42)
rf_clf.fit(X_train, y_train)
ada_clf.fit(X_train, y_train)
gb_clf.fit(X_train, y_train)
```
4. 集成三个模型
我们可以使用sklearn中的VotingClassifier类来将三个模型进行集成。
```python
from sklearn.ensemble import VotingClassifier
voting_clf = VotingClassifier(estimators=[('rf', rf_clf), ('ada', ada_clf), ('gb', gb_clf)], voting='hard')
voting_clf.fit(X_train, y_train)
```
5. 比较性能
我们可以使用sklearn中的accuracy_score函数来计算模型在测试集上的准确率。
```python
from sklearn.metrics import accuracy_score
for clf in (rf_clf, ada_clf, gb_clf, voting_clf):
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
print(clf.__class__.__name__, accuracy_score(y_test, y_pred))
```
输出结果如下:
```
RandomForestClassifier 0.9740740740740741
AdaBoostClassifier 0.662962962962963
GradientBoostingClassifier 0.9703703703703703
VotingClassifier 0.9703703703703703
```
从结果可以看出,随机森林和梯度提升树的表现比Adaboost要好,而使用投票方法集成三个模型后的准确率与随机森林和梯度提升树的准确率相当。因此,我们可以选择使用随机森林、梯度提升树和投票方法集成三个模型来构建手写数字分类模型。
阅读全文