2016-08-05 4 views
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 

しかし、私は正確に取得しています同じプレディクタスコア。これはどのように可能ですか?

答えて

1

cross_val_predict()関数の変数CV(fold number)がクラス0のサンプル数(False)よりも大きいため、現在のコードは機能しません。それを6以下に下げると、動作します。a.csvの精度は0.6、b.csvの精度は0.625になります。

+0

私はもっと大きなデータセットを実際に使用しています。 「Y」セクションは常に同じです。それは値が同じ理由です –

+0

Okです。いいえ、それは理由ではありません。 _predicted_配列が同じ場合、スコアは同じになります。それはあなたに起こったことです。 _predicted_配列を最初に印刷してみてください。あなたはおそらくそれが1で満たされていることに気付くでしょう、これは良くありません。次に、あなたのデータセットに同じ量のFalseとTrueを持たせようとすると、確かに確度スコアが変わります。 しかし、あなたがやろうとしていることは、実際には関係ないわけではありません.Xアレイには複数の機能が必要です。 – acknowledge

+0

ありがとうございます。私は今、予測値に同じ値が含まれていることに気付きました。どうやって多様化するのですか? –

関連する問題