2015-09-19 46 views
8

Tôi chỉ đang cố gắng thực hiện một ví dụ RandomForestRegressor đơn giản. Nhưng trong khi kiểm tra độ chính xác, tôi nhận được lỗi nàyLỗi liên tục không được hỗ trợ trong 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 

Đây là mẫu dữ liệu. Tôi không thể hiển thị dữ liệu thực.

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

Đây là mã của tôi.

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. 

Trả lời

18

Đó là vì accuracy_score chỉ dành cho nhiệm vụ phân loại. Đối với hồi quy bạn nên sử dụng một cái gì đó khác nhau, ví dụ:

clf.score(X_test, y_test) 

đâu X_test là mẫu, y_test tương ứng giá trị thực địa. Nó sẽ tính toán các dự đoán bên trong.

+0

Có ai biết làm thế nào để so sánh dự đoán và giá trị thử nghiệm như phân loại cho hồi quy? – Priyansh

1

Vì bạn đang làm một công việc phân loại, bạn nên sử dụng tính chính xác metric R-squared(đồng effecient xác định) thay vì điểm số điểm (độ chính xác được sử dụng để phân loại mục đích).

Để tránh nhầm lẫn, tôi đề nghị bạn sử dụng tên biến khác như reg/rfr.

R-squared có thể được tính bằng cách gọi score chức năng được cung cấp bởi RandomForestRegressor, ví dụ:

rfr.score(X_test,Y_test) 
Các vấn đề liên quan