Постоянная ошибка не поддерживается в RandomForestRegressor

Я просто пытаюсь сделать простой пример RandomForestRegressor. Но при тестировании точности я получаю эту ошибку

/Users/noppanit/anaconda/lib/python2.7/site-packages/sklearn/metrics/classification.pyc

in precision_score (y_true, y_pred, normalize, sample_weight) 177 178 # Вычислить точность для каждого возможного представления → 179 y_type, y_true, y_pred = _check_targets (y_true, y_pred) 180, если y_type.startswith('multilabel'): 181 отличаются = 181 = разные count_nonzero (y_true - y_pred, axis = 1)

/Users/noppanit/anaconda/lib/python2.7/site-packages/sklearn/metrics/classification.pyc

в _check_targets (y_true, y_pred) 90 if (y_type не в ["binary", "multiclass", "multilabel-pointer", 91 "multilabel-sequence"]): ---> 92 повысить ValueError ("{0} равно не поддерживается ".format(y_type)) 93 94, если y_type в [" binary "," multiclass "]:

ValueError: continuous is not supported

Это образец данных. Я не могу показать реальные данные.

target, func_1, func_2, func_2, ... func_200
float, float, float, float, ... float

Вот мой код.

import pandas as pd
import numpy as np
from sklearn.preprocessing import Imputer
from sklearn.ensemble import RandomForestClassifier, RandomForestRegressor, ExtraTreesRegressor, GradientBoostingRegressor
from sklearn.cross_validation import train_test_split
from sklearn.metrics import accuracy_score
from sklearn import tree

train = pd.read_csv('data.txt', sep='\t')

labels = train.target
train.drop('target', axis=1, inplace=True)
cat = ['cat']
train_cat = pd.get_dummies(train[cat])

train.drop(train[cat], axis=1, inplace=True)
train = np.hstack((train, train_cat))

imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit(train)
train = imp.transform(train)

x_train, x_test, y_train, y_test = train_test_split(train, labels.values, test_size = 0.2)

clf = RandomForestRegressor(n_estimators=10)

clf.fit(x_train, y_train)
y_pred = clf.predict(x_test)
accuracy_score(y_test, y_pred) # This is where I get the error.

Ответ 1

Это потому, что accuracy_score предназначен только для задач классификации. Для регрессии вы должны использовать что-то другое, например:

clf.score(X_test, y_test)

Где X_test - это образцы, y_test - это соответствующие значения истины. Он будет вычислять прогнозы внутри.

Ответ 2

Поскольку вы выполняете классификационную задачу, вы должны использовать метрическая R-квадрат (совместное определение) вместо оценка точности (оценка точности используется для целей классификации).

Чтобы избежать путаницы, я предлагаю вам использовать другое имя переменной, например reg/rfr.

R-squared можно вычислить, вызвав функцию score, предоставляемую RandomForestRegressor, например:

rfr.score(X_test,Y_test)