随机森林和每棵决策树的决策边界对比

介绍:创建一个模拟数据集,构建一个包含 5 棵决策树的随机森林分类模型,可视化每棵树和集成分类器的决策边界,比较研究。

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
import mglearn

# 生成一个用于模拟的二维数据集
X, y = make_moons(n_samples=100, noise=0.25, random_state=3)
# 训练集和测试集的划分
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y,
                                                   random_state=42)
# 初始化一个包含 5 棵决策树的随机森林分类器
forest = RandomForestClassifier(n_estimators=5, random_state=2)
# 在训练数据集上进行学习
forest.fit(X_train, y_train)

# 可视化每棵决策树的决策边界
fig, axes = plt.subplots(2, 3, figsize=(20, 10))
for i, (ax, tree) in enumerate(zip(axes.ravel(), forest.estimators_)):
    ax.set_title('Tree {}'.format(i))
    mglearn.plots.plot_tree_partition(X_train, y_train, tree, ax=ax)

# 可视化集成分类器的决策边界
mglearn.plots.plot_2d_separator(forest, X_train, fill=True, ax=axes[-1, -1],
                               alpha=0.4)
axes[-1, -1].set_title('Random Forest')
mglearn.discrete_scatter(X_train[:, 0], X_train[:, 1], y_train)

plt.show()

从图中看,每一棵单独的决策树都有不同程度的过拟合和错误,而随机森林模型的过拟合程度较小,给出的决策边界也较为平滑。

 

 

posted @ 2019-11-20 22:23  赏尔  阅读(1708)  评论(0)    收藏  举报