我正在尝试使用具有更好预测分数的数据来选择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
然而,我得到了完全相同的预测分数。这怎么可能?
答案 0 :(得分:1)
当前代码无效,因为cross_val_predict()函数的变量CV(折叠数)大于0类(False)的样本数。如果将它降低到小于(或等于)6,它将起作用,对于a.csv,你的准确度为0.6,对于b.csv,准确度为0.625。