2017-01-21 8 views
0

Вот код:ValueError: Неизвестный тип этикетки: при использовании cross_validation

import pandas as pd 
import numpy as np 
from sklearn.cross_validation import cross_val_score 
from sklearn.neighbors import KNeighborsClassifier 
data = pd.read_csv('http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv',index_col = 0) 
X = data[['TV','Radio','Newspaper']] 
y = data[['Sales']] 
y = np.asarray(y) 
y = np.ravel(y) 
knn = KNeighborsClassifier(n_neighbors = 5) 
scores = cross_val_score(knn,X,y,cv=10,scoring = 'accuracy') 
print(scores) 

Я получаю следующее сообщение об ошибке

C:\Users\Kunal Desai\Anaconda3\lib\site-packages\sklearn\utils\multiclass.py in check_classification_targets(y) 
171  if y_type not in ['binary', 'multiclass', 'multiclass-multioutput', 
172    'multilabel-indicator', 'multilabel-sequences']: 
--> 173   raise ValueError("Unknown label type: %r" % y) 
174 
175 

ValueError: Unknown label type: 

Я новичок в cross_validation и scikit учиться

Может ли кто-нибудь мне помочь?

+0

Я получал что-то вроде этого, и это был b/c мой pd.Series был объектом, а не int –

ответ

0

Если вы хотите предсказать непрерывную переменную, вам нужна регрессия, а не классификация. KNeighborsRegressor против KNeighborsClassifier.

+0

Я пробовал использовать KNeighborsRegressor .. но все же он дает ту же ошибку –

+0

На самом деле вы получите другую ошибку, говорящую о непрерывности не поддерживается. Это потому, что вы сказали, что скоринг = «точность», который не имеет смысла для регрессии. Вы не можете установить счет, и он будет использовать значение по умолчанию, которое rsquared. – simon

+0

Это сработало !!. Большое спасибо, и да, вы были правы насчет ошибки «непрерывный не поддерживается». Я не проверял его ... Я удалил оценку = «точность», и она отлично работала. Еще раз спасибо –