0
0 комментариев

Задача обучить случайный лес с различным числом деревьев от 1 до 50 и для каждого из вариантов оценить качество работы полученного леса на кросс-валидации по 5 блокам (sklearn.metrics.r2_score). Я написал такой цикл:

from sklearn.ensemble import RandomForestRegressor
from sklearn.cross_validation import KFold
from sklearn.metrics import r2_score
 
P_scores = []
p = np.linspace(1.0, 50.0, num=50)
p1 = np.array(p)
kf = KFold(4176, n_folds=5, random_state=1, shuffle=True)
 
P = 1
while P < len(p1):
    regressor = RandomForestRegressor(n_estimators=P, random_state=1)
    regressor.fit(X, Y)
    predictions = regressor.predict(X)
    r2_score(Y, predictions)
    P_scores.append(r2_score)
    print(P_scores)
    P += 1

В итоге получается вектор состоящий из элементов:

print(P_scores)
[<function r2_score at 0x0000023304775BF8>, <function r2_score at 0x0000023304775BF8>,...,<function r2_score at 0x0000023304775BF8>]

Хотя я ожидал результата подобного:

y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
r2_score(y_true, y_pred)
0.948...

Только записанной в форме вектора столбца.
Естественно я не смогу узнать минимум:

min(P_scores)
TypeError: unorderable types: function() < function()

Почему я получаю не числовые данные? Как мне получить числовые параметры оценок?


Добавить комментарий