2016-09-27 50 views
0

我试图运行这个机器学习的平台,我得到以下错误:无法获取SVC得分功能工作

ValueError: X.shape[1] = 574 should be equal to 11, the number of features at training time 

我的代码:

from pylab import * 
from sklearn.svm import SVC 
from sklearn.ensemble import RandomForestClassifier 
import numpy as np 

X = list() 
Y = list() 
validationX = list() 
validationY = list() 
file = open ('C:\\Users\\User\\Desktop\\csci4113\\project1\\whitewineTraining.txt','r') 
for eachline in file: 
    strArray = eachline.split(";") 
    row = list() 
    for i in range(len(strArray) - 1): 
     row.append(float(strArray[i])) 
    X.append(row) 
    if (int(strArray[-1]) > 6): 
     Y.append(1) 
    else: 
     Y.append(0) 
file2 = open ('C:\\Users\\User\\Desktop\\csci4113\\project1\\whitewineValidation.txt', 'r') 
for eachline in file2: 
    strArray = eachline.split(";") 
    row2 = list() 
    for i in range(len(strArray) - 1): 
     row2.append(float(strArray[i])) 
    validationX.append(row2)  
    if (int(strArray[-1]) > 6): 
     validationY.append(1) 
    else: 
     validationY.append(0) 

X = np.array(X) 
print (X) 
Y = np.array(Y) 
print (Y) 
validationX = np.array(validationX) 
validationY = np.array(validationY) 

clf = svm.SVC() 
clf.fit(X,Y) 
result = clf.predict(validationX) 
clf.score(result, validationY) 

该计划的目标是从fit()命令建立一个模型,我们可以用它来比较validationY中的一个验证集,并看到我们的机器学习模型的有效性。以下是控制台输出的其余部分:请记住X是11x574阵列的混淆!

[[ 7.   0.27   0.36  ..., 3.   0.45   8.8  ] 
[ 6.3   0.3   0.34  ..., 3.3   0.49   9.5  ] 
[ 8.1   0.28   0.4  ..., 3.26   0.44  10.1  ] 
..., 
[ 6.3   0.28   0.22  ..., 3.   0.33  10.6  ] 
[ 7.4   0.16   0.33  ..., 3.04   0.68  10.5  ] 
[ 8.4   0.27   0.3  ..., 2.89   0.3 
    11.46666667]] 
[0 0 0 ..., 0 1 0] 
C:\Users\User\Anaconda3\lib\site-packages\sklearn\utils\validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample. 
    DeprecationWarning) 
Traceback (most recent call last): 

    File "<ipython-input-68-31c649fe24b3>", line 1, in <module> 
    runfile('C:/Users/User/Desktop/csci4113/project1/program1.py', wdir='C:/Users/User/Desktop/csci4113/project1') 

    File "C:\Users\User\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 714, in runfile 
    execfile(filename, namespace) 

    File "C:\Users\User\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 89, in execfile 
    exec(compile(f.read(), filename, 'exec'), namespace) 

    File "C:/Users/User/Desktop/csci4113/project1/program1.py", line 43, in <module> 
    clf.score(result, validationY) 

    File "C:\Users\User\Anaconda3\lib\site-packages\sklearn\base.py", line 310, in score 
    return accuracy_score(y, self.predict(X), sample_weight=sample_weight) 

    File "C:\Users\User\Anaconda3\lib\site-packages\sklearn\svm\base.py", line 568, in predict 
    y = super(BaseSVC, self).predict(X) 

    File "C:\Users\User\Anaconda3\lib\site-packages\sklearn\svm\base.py", line 305, in predict 
    X = self._validate_for_predict(X) 

    File "C:\Users\User\Anaconda3\lib\site-packages\sklearn\svm\base.py", line 474, in _validate_for_predict 
    (n_features, self.shape_fit_[1])) 

ValueError: X.shape[1] = 574 should be equal to 11, the number of features at training time 


runfile('C:/Users/User/Desktop/csci4113/project1/program1.py', wdir='C:/Users/User/Desktop/csci4113/project1') 
10 
[[ 7.   0.27   0.36  ..., 3.   0.45   8.8  ] 
[ 6.3   0.3   0.34  ..., 3.3   0.49   9.5  ] 
[ 8.1   0.28   0.4  ..., 3.26   0.44  10.1  ] 
..., 
[ 6.3   0.28   0.22  ..., 3.   0.33  10.6  ] 
[ 7.4   0.16   0.33  ..., 3.04   0.68  10.5  ] 
[ 8.4   0.27   0.3  ..., 2.89   0.3 
    11.46666667]] 
[0 0 0 ..., 0 1 0] 
C:\Users\User\Anaconda3\lib\site-packages\sklearn\utils\validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample. 
    DeprecationWarning) 
Traceback (most recent call last): 

    File "<ipython-input-69-31c649fe24b3>", line 1, in <module> 
    runfile('C:/Users/User/Desktop/csci4113/project1/program1.py', wdir='C:/Users/User/Desktop/csci4113/project1') 

    File "C:\Users\User\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 714, in runfile 
    execfile(filename, namespace) 

    File "C:\Users\User\Anaconda3\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 89, in execfile 
    exec(compile(f.read(), filename, 'exec'), namespace) 

    File "C:/Users/User/Desktop/csci4113/project1/program1.py", line 46, in <module> 
    clf.score(result, validationY) 

    File "C:\Users\User\Anaconda3\lib\site-packages\sklearn\base.py", line 310, in score 
    return accuracy_score(y, self.predict(X), sample_weight=sample_weight) 

    File "C:\Users\User\Anaconda3\lib\site-packages\sklearn\svm\base.py", line 568, in predict 
    y = super(BaseSVC, self).predict(X) 

    File "C:\Users\User\Anaconda3\lib\site-packages\sklearn\svm\base.py", line 305, in predict 
    X = self._validate_for_predict(X) 

    File "C:\Users\User\Anaconda3\lib\site-packages\sklearn\svm\base.py", line 474, in _validate_for_predict 
    (n_features, self.shape_fit_[1]))`` 
+0

什么是X.shape和validationX.shape?你正在读出一些我们不知道的2个任意文件 – lejlot

回答

0

你只是路过错了对象得分功能,documentation明确规定

score(X, y, sample_weight=None)

X : array-like, shape = (n_samples, n_features) Test samples.

和你通过预测代替,从而

result = clf.predict(validationX) 
clf.score(result, validationY) 

是无效的,应只是

clf.score(validationX, validationY) 

你试图做的,如果你使用一些射手,而不是分类,分类.score方法对自己的呼叫.predict就可以了什么,从而传递原始数据作为参数。

+0

谢谢!!!!!!!!! :) –