怎么解决 ? x和y必须具有相同的第一维

时间:2016-08-14 01:34:22

标签: python matplotlib machine-learning

from sklearn.neighbors import KNeighborsClassifier  
import pandas as pd
from sklearn import metrics
from sklearn.cross_validation import train_test_split
import matplotlib.pyplot as plt

r = pd.read_csv("vitalsign_test.csv")
clm_list = []
for column in r.columns:
    clm_list.append(column)
X = r[clm_list[1:len(clm_list)-1]].values
y = r[clm_list[len(clm_list)-1]].values

X_train, X_test, y_train, y_test = train_test_split (X,y, test_size = 0.3, random_state=4)


k_range = range(1,25)
scores = []
for k in k_range:
    clf = KNeighborsClassifier(n_neighbors = k)
    clf.fit(X_train,y_train)
y_pred = clf.predict(X_test)
scores.append(metrics.accuracy_score(y_test,y_pred))

plt.plot(k_range,scores)
plt.xlabel('value of k for clf')
plt.ylabel('testing accuracy')

我得到的回应是

  

ValueError:x和y必须具有相同的第一维

我的功能和响应形状是:

y.shape
Out[60]: (500,)

X.shape
Out[61]: (500, 6)

1 个答案:

答案 0 :(得分:0)

它与您的Xy无关,它与情节xy个参数无关,因为您的{ {1}}有一个元素,scores有25个。错误是缩进错误:

k_range

应该是

for k in k_range:
    clf = KNeighborsClassifier(n_neighbors = k)
    clf.fit(X_train,y_train)
y_pred = clf.predict(X_test)
scores.append(metrics.accuracy_score(y_test,y_pred))