1. sklearn中的集成算法

  • sklearn中的集成算法模块ensemble
    在这里插入图片描述

2.预测代码及结果

%matplotlib inline
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split, cross_val_score
import matplotlib.pyplot as plt
# 获取数据集
wine = load_wine()
# 划分数据集
x_train, x_test, y_train, y_test = train_test_split(wine.data, wine.target, test_size=0.3)
# 建模
clf = DecisionTreeClassifier(random_state=0) # 决策树自带随机性,如果不设置随机种子,每次运行的结果会不一样(固定生成这一颗树)
rfc = RandomForestClassifier(random_state=0) # 固定生成这一片森林
# 训练
clf = clf.fit(x_train, y_train)
rfc = rfc.fit(x_test, y_test)
# 分类准确率
score_c = clf.score(x_test, y_test)
score_r = rfc.score(x_test, y_test)
print("Single Tree:{}".format(score_c),"Random Forest:{}".format(score_r))

结果:
在这里插入图片描述
可以看出随机森林的表现要比决策树好。

3. 随机森林和决策树在一组交叉验证下的效果对比

# 画出随机森林和决策树在一组交叉验证下的效果对比
rfc = RandomForestClassifier(n_estimators=25)
rfc_s = cross_val_score(rfc, wine.data, wine.target, cv=10)

clf = DecisionTreeClassifier()
clf_s = cross_val_score(clf, wine.data, wine.target, cv=10)

plt.plot(range(1,11), rfc_s, label = 'RandomForest')
plt.plot(range(1,11), clf_s, label = 'Decision Tree')

plt.legend()
plt.show()

结果:
在这里插入图片描述
横坐标为10折交叉验证的每次交叉验证的次数,纵坐标为预测的准确率,即accuracy。

3.2 随机森林和决策树在十组交叉验证下的效果对比
# 画出随机森林和决策树在十组交叉验证下的效果对比
rfc_l = []
clf_l = []

for i in range(10):
    rfc = RandomForestClassifier(n_estimators=25)
    rfc_s = cross_val_score(rfc, wine.data, wine.target, cv=10).mean()
    rfc_l.append(rfc_s)
    
    clf = DecisionTreeClassifier()
    clf_s = cross_val_score(clf, wine.data, wine.target, cv=10).mean()
    clf_l.append(clf_s)
    
plt.plot(range(1,11), rfc_l, label = 'RandomForest')
plt.plot(range(1,11), clf_l, label = 'Decision Tree')

plt.legend()
plt.show()

结果:
在这里插入图片描述
横坐标为交叉验证的组数,纵坐标为每一次10折交叉验证的结果的均值。


【PS】这是我看看sklearn菜菜的视频学习笔记~

更多推荐