2017-04-04 6 views
0

でトレーニングデータを予測:私はそうのようなのscikit学習SVMを使用sklearn

clf = svm.SVC() 
clf.fit(td_X, td_y) 

私の質問は、私はトレーニングセットのメンバーのクラスを予測するための分類器を使用する場合、分類器が今まで間違っている可能性がありますscikit-learnsの実装でさえも。 (例えばclf.predict(td_X[a])==td_Y[a]

答えて

2

はい、間違いなく、たとえば、このコードを実行します。

from sklearn import svm 
import numpy as np 
clf = svm.SVC() 
np.random.seed(seed=42) 
x=np.random.normal(loc=0.0, scale=1.0, size=[100,2]) 
y=np.random.randint(2,size=100) 
clf.fit(x,y) 
print(clf.score(x,y)) 

スコアは0.61であるので、学習データの40%近くがmissclassifiedされます。その理由の1つは、デフォルトのカーネルが'rbf'(理論的には、異なるラベルを持つ2つの同一のトレーニングポイントを持たない限り、すべてのトレーニングデータセットを完全に分類できなければならない)であるにもかかわらず、オーバーフィットを減らす。デフォルトの正規化はC=1.0です。

上記と同じコードを実行して、clf = svm.SVC()clf = svm.SVC(C=200000)に切り替えると、精度は0.94になります。

関連する問題