0
我想選擇與具有更好的預測得分數據的CSV文件。 我嘗試使用下面的代碼,以確定交叉驗證得分:交叉驗證的預測成績相同的
from __future__ import division
import os,csv
from sklearn import cross_validation
import numpy as np
from sklearn import svm
from sklearn import metrics
files = [e for e in os.listdir('.') if e.endswith('.csv')]
csvout = open('xval.csv','wb')
csvwriter=csv.writer(csvout)
for f in files:
X,Y=[],[]
feat=f[4:-4]
print feat
csvin = open(f,'rb')
csvread=csv.reader(csvin)
for row in csvread:
X.append([row[0]])
Y.append(1 if row[1]=='True' else 0)
clf = svm.SVC(kernel='linear', C=1)
predicted = cross_validation.cross_val_predict(clf, X, Y, cv=3)
print metrics.accuracy_score(Y, predicted)
csvout.close()
兩個CSV報告如下,a.csv和b.csv:
0.8307059089237866,False
0.07933411654760168,False
0.07933411654760168,False
0.07933411654760168,False
0.07933411654760168,False
0.8050114148789536,False
0.7050883824823811,True
0.07933411654760168,True
0.07933411654760168,True
0.07933411654760168,True
0.07933411654760168,True
0.07933411654760168,True
0.07933411654760168,True
0.07933411654760168,True
0.07933411654760168,True
0.6251499565651232,True
0.3507377775833331,False
0.2609619627153587,False
0.24483806968609972,False
0.7122564948467026,False
0.7172548646226102,False
0.1321163493448647,False
0.023658678331543205,True
0.5954080270729952,True
0.632479304055982,True
0.22412105580276065,True
0.3431509885671966,True
0.5954080270729952,True
0.1137442754294842,True
0.8312144672461341,True
0.1137442754294842,True
但是,我得到的確切相同的預測得分。這怎麼可能?
我使用一個更大的數據集實際。 'Y'部分總是相同的。這就是爲什麼值是相同的 –
好的。不,這不是原因。如果_predicted_數組相同,分數將相同。這就是發生在你身上的事。 請先嚐試打印_predicted_數組。你可能會注意到它充滿了1,這是不好的。然後嘗試在您的數據集中使用相同數量的False和True,這肯定會更改準確性分數。 但是你想要做的是不是真的培訓相關,你的X數組必須有一個以上的功能。 – acknowledge
謝謝。我現在注意到預測包含相同的值。我如何才能使其多樣化? –