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-квадрат можно вычислить, вызвав результат