2015-09-19 11 views
8

単純な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. 

答えて

18

これは、accuracy_scoreは分類タスクのみのためです。

clf.score(X_test, y_test) 

をX_testがグランド真理値を対応さy_testサンプルである場合、:あなたは、たとえば、別の何かを使用する必要があり回帰の 。内部の予測を計算します。

+0

誰もが回帰の分類などの予測やテスト値を比較する方法を知っていますか? – Priyansh

1

あなたが分類タスクを行っているので、あなたは(精度スコアが分類に使用されるスコア メトリックR二乗(決意の共effecient)代わり の精度を使用しなければなりません目的)。

は、私はあなたがREG/RFRのような別の変数名を使用することをお勧め任意の混乱を避けるために。

R二乗は、例えば、RandomForestRegressorが提供するscore関数を呼び出すことによって計算することができます。

rfr.score(X_test,Y_test) 
関連する問題