如何绘制随机林的误差和树大小

2024-04-27 16:01:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个包含100棵树的RandomForestRegressionor,现在我想检查RandomForest是否过度拟合。因此,我想在y轴和树大小(1,…100,x轴)上绘制误差。但是我找不到我是如何得到每棵树的预测的答案。现在我只有每个数据点的错误。我搜索了好几天,希望有人能帮我找到答案。多谢各位

forest_model = RandomForestRegressor
(estimators=100,
min_sample_split=2,
min_sample_leaf_5,
random_state=42)

forest_model.fit(X_train_v1, y_train_v2)

enter image description here

我想要这样的情节只是为了一个随机回归者


Tags: 数据sample答案model错误绘制trainmin
1条回答
网友
1楼 · 发布于 2024-04-27 16:01:24

您必须为具有不同树大小的训练集和测试集绘制学习曲线。这是做这件事的最小代码。然后通过比较这两条线来检查过盈

from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
from matplotlib.legend_handler import HandlerLine2D

train_results = []
test_results = []
list_nb_trees = [5, 10, 15, 30, 45, 60, 80, 100]

for nb_trees in list_nb_trees:
    rf = RandomForestRegressor(n_estimators=nb_trees)
    rf.fit(X_train, y_train)

    train_results.append(mean_squared_error(y_train, rf.predict(X_train)))
    test_results.append(mean_squared_error(y_test, rf.predict(X_test)))

line1, = plt.plot(list_nb_trees, train_results, color="r", label="Training Score")
line2, = plt.plot(list_nb_trees, test_results, color="g", label="Testing Score")

plt.legend(handler_map={line1: HandlerLine2D(numpoints=2)})
plt.ylabel('MSE')
plt.xlabel('n_estimators')
plt.show()

相关问题 更多 >