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()
次のように2つの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」セクションは常に同じです。それは値が同じ理由です –
Okです。いいえ、それは理由ではありません。 _predicted_配列が同じ場合、スコアは同じになります。それはあなたに起こったことです。 _predicted_配列を最初に印刷してみてください。あなたはおそらくそれが1で満たされていることに気付くでしょう、これは良くありません。次に、あなたのデータセットに同じ量のFalseとTrueを持たせようとすると、確かに確度スコアが変わります。 しかし、あなたがやろうとしていることは、実際には関係ないわけではありません.Xアレイには複数の機能が必要です。 – acknowledge
ありがとうございます。私は今、予測値に同じ値が含まれていることに気付きました。どうやって多様化するのですか? –