2016-09-25 7 views
1

私は、Python 3.5/Pandas/Sklearn.neighborsを使用して、データフレームにKNNモデルを適合させようとしています。私はデータをインポートし、トレーニングとテストのデータとラベルに分割しましたが、それを使用して予測しようとすると、次のエラーが発生します。私はパンダにとってとても新しいので、どんな助けでも感謝します!ありがとう!あなたはこのKNNのためKNeighborsClassifierを使用する必要がありますパンダとSklearn.Neighborsの使用

enter image description here

import pandas as pd 
from sklearn import cross_validation 
import numpy as np 
from sklearn.neighbors import KNeighborsRegressor 
seeds = pd.read_csv('seeds.tsv',sep='\t',names=['Area','Perimeter','Compactness','Kern_len','Kern_width','Assymetry','Kern_groovlen','Species']) 
data = seeds.iloc[:,[0,1,2,3,4,5,6]] 
labels = seeds.iloc[:,[7]] 
x_train, x_test, y_train, y_test = cross_validation.train_test_split(data,labels, test_size=0.4, random_state=1) 
knn = KNeighborsRegressor(n_neighbors=30) 
knn.fit(x_train,y_train) 
knn.predict(x_test) 

--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-121-2292e64e5ab8> in <module>() 
----> 1 knn.predict(x_test) 

C:\Anaconda3\lib\site-packages\sklearn\neighbors\regression.py in predict(self, X) 
    151 
    152   if weights is None: 
--> 153    y_pred = np.mean(_y[neigh_ind], axis=1) 
    154   else: 
    155    y_pred = np.empty((X.shape[0], _y.shape[1]), dtype=np.float) 

C:\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py in mean(a, axis, dtype, out, keepdims) 
    2876 
    2877  return _methods._mean(a, axis=axis, dtype=dtype, 
-> 2878       out=out, keepdims=keepdims) 
    2879 
    2880 

C:\Anaconda3\lib\site-packages\numpy\core\_methods.py in _mean(a, axis, dtype, out, keepdims) 
    66  if isinstance(ret, mu.ndarray): 
    67   ret = um.true_divide(
---> 68     ret, rcount, out=ret, casting='unsafe', subok=False) 
    69  elif hasattr(ret, 'dtype'): 
    70   ret = ret.dtype.type(ret/rcount) 

TypeError: unsupported operand type(s) for /: 'str' and 'int' 
+2

あなたは、回帰を使用しているので、それも理にかなっている場合は、後者をエンコードする必要がありますので、ラベルは---数値ではなく文字列でなければなりません...ですあなたは確かにあなたがkNN回帰者ではなく、kNN分類器を望んでいますか? –

答えて

2

。分類のためにラベルSpeciesを予測しようとしています。上のコードの回帰変数は、あなたの問題が導入されている、連続して評価される数値変数を訓練し、予測しようとしています。ここで

from sklearn.neighbors import KNeighborsClassifier 
seeds = pd.read_csv('seeds.tsv',sep='\t',names=['Area','Perimeter','Compactness','Kern_len','Kern_width','Assymetry','Kern_groovlen','Species']) 
data = seeds.iloc[:,[0,1,2,3,4,5,6]] 
labels = seeds.iloc[:,[7]] 
x_train, x_test, y_train, y_test = cross_validation.train_test_split(data,labels, test_size=0.4, random_state=1) 
knn = KNeighborsClassifier(n_neighbors=30) 

http://scikit-learn.org/stable/auto_examples/neighbors/plot_classification.html

回帰は、(あなたが使用したい)分類器に比べプロットどうなるかです。

Regressor

Classifier

関連する問題