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

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

/Users/noppanit/anaconda/lib/python2.7/site-packages/sklearn/metrics/classification.pyc in accuracy_score(y_true, y_pred, normalize, sample_weight)
    177 
    178     # Compute accuracy for each possible representation
--> 179     y_type, y_true, y_pred = _check_targets(y_true, y_pred)
    180     if y_type.startswith('multilabel'):
    181         differing_labels = count_nonzero(y_true - y_pred, axis=1)

/Users/noppanit/anaconda/lib/python2.7/site-packages/sklearn/metrics/classification.pyc in _check_targets(y_true, y_pred)
     90     if (y_type not in ["binary", "multiclass", "multilabel-indicator",
     91                        "multilabel-sequences"]):
---> 92         raise ValueError("{0} is not supported".format(y_type))
     93 
     94     if y_type in ["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.

2 ответов


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

clf.score(X_test, y_test)

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


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

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

r-квадрат можно вычислить, вызвав результат