昨天有提到 Bagging 最有名的例子就是随机森林,它是集合多棵决策树来进行预测,很多树就成为了森林,称之为随机森林。每一棵树只能看见部分特徵,但透过多颗树来蒐集和统合资料,可以比决策树不容易过度拟合,并且让预测能力提升。
从训练集使用 Bootstrap 抽後放回,抽 n‘ 笔资料後随机选 m 个 特徵作为训练资料样本。重复 k 次之後可以产生 k 颗决策树,最後再用投票机制来进行预测。
一样套用上次的模板,我们将资料进行切割後喂给模型
from sklearn.ensemble import RandomForestClassifier
classifier = RandomForestClassifier(n_estimators = 1000, criterion = 'entropy', random_state = 0 )
classifier.fit(X_train, y_train)
y_pred = classifier.predict(X_test)
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
print(cm)
>>> [[58 9]
[ 6 27]]
from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred))
如果你拿前天的决策树对比之下,会发现随机森林的决策边界比较平滑(smooth)。也就是代表说,进行集成式学习可以将决策边界可以变得更适应资料的长相。
# 选择决策树数量和最大层数
t = 5
max_depth = 2
model = RandomForestClassifier(n_estimators=t, max_depth=max_depth)
model.fit(dx_train, dy_train)
predict = model.predict(dx_test)
test_score = model.score(dx_test, dy_test) * 100
print(f'Accuracy: {test_score:.1f}%')
# 走访和绘制随机森林的所有决策树
plt.figure(figsize=(128, 64))
for idx, dec_tree in enumerate(model.estimators_):
plt.subplot(1, t, idx+1)
tree.plot_tree(dec_tree,
filled=True, rounded=True, proportion=True,
feature_names=feature_names,
class_names=class_names)
plt.savefig('forest.jpg')
可以放大仔细看看哦
更详细可以请参考连结
>>: Day 22 : Linux - 如何让解析度随着视窗大小改变?又该如何让windows和Linux的复制贴上通用?
我们现在有了基本的日志,但是每次输入完重整页面都会刷新,因为这些资料都只存在於浏览器,没有真正储存到...
单执行绪 JavaScript 是单执行绪的语言,而单执行绪的意思就是一次只做一件事情。 不过这样的...
WordPress 的接案者主要区分为两种类型:懂得运用各种外挂、布景主题来满足客户需求的接案者,另...
间接叙事 练习:迂回说故事 这一段的练习是探讨「如何在叙事过程中提供资讯」。例如说科幻小说,通常有一...
延续昨天的文章,今天来做PHP新增资料表的内容(不影响资料表结构)。 注意! 跟资料库有关的动作 都...