Как изобразить ошибку и размер дерева случайного леса - PullRequest
0 голосов
/ 10 января 2020

Я создал RandomForestRegressor со 100 деревьями, и теперь я хочу проверить, не перегружен ли RandomForest. Поэтому я хочу нанести ошибку на ось Y и размер дерева (1, ... 100, ось X). Но я не мог найти ответ, как я получаю предсказание каждого дерева. Теперь у меня есть только ошибка для каждого datapoint. Я искал несколько дней, и я надеюсь, что кто-нибудь может помочь мне найти ответ. Большое спасибо!

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

Я хочу что-то вроде этого графика только для RandomForestRegressor

1 Ответ

1 голос
/ 10 января 2020

Вы должны построить кривую обучения для обучающего и тестового набора с разными размерами дерева. Это минимальный код для этого. Затем вы проверяете на соответствие, сравнивая две строки.

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()
...