научный случайный лес: серьезное переоснащение? - PullRequest
0 голосов
/ 27 октября 2018

Я пытаюсь применить knn, логистическую регрессию, дерево решений и случайный лес для прогнозирования двоичной переменной ответа.

Первые три дают на первый взгляд приемлемые показатели точности, но выполнение алгоритма случайного леса дает точностьскорость более 99% (правильное значение 1127/1128).

vote_lst = list(range(1, 101))
rf_cv_scores = []
for tree_count in vote_lst:
    maple = RandomForestClassifier(n_estimators = tree_count, random_state = 1618)
    scores = cross_val_score(maple, x, y, cv = 10, scoring = 'accuracy') # 10-fold CV
    rf_cv_scores.append(scores.mean()) 

# find minimum error's index (i.e. optimal num. of estimators)
rf_MSE = [1 - x for x in rf_cv_scores]
min_error = rf_MSE[0]
for i in range(len(rf_MSE)):
    min_error = min_error
    if rf_MSE[i] < min_error:
        rf_min_index = i
        min_error = rf_MSE[i]
print(rf_min_index + 1) # error minimized w/ 66 estimators

Я настроил гиперпараметр радиочастотного алгоритма n_estimators, используя приведенный выше код.Затем я подгоняю модель к своим данным:

# fit random forest classifier
forest_classifier = RandomForestClassifier(n_estimators = rf_min_index + 1, random_state = 1618)
forest_classifier.fit(x, y)

# predict test set
y_pred_forest = forest_classifier.predict(x)

Я обеспокоен тем, что здесь произошло какое-то резкое переоснащение: есть идеи?

1 Ответ

0 голосов
/ 28 октября 2018

Я обеспокоен тем, что здесь произошло какое-то резкое переоснащение: есть идеи?

Вы делаете прогнозы для того же набора данных, который вы обучали выше:

y_pred_forest = forest_classifier.predict(x)
...