2016-05-02 10 views
1

私はScikit学習パッケージを使用してSVM回帰モデルに適合しようとしていますが、私が期待しているように機能しません。SVik回帰のためのScikit学習パッケージの問題

あなたは私にエラーを教えてください?私が使用したいコードは次のとおりです。私が持っている

from sklearn.svm import SVR 
import numpy as np 


X = [] 
x = np.arange(0, 20) 
y = [3, 4, 8, 4, 6, 9, 8, 12, 15, 26, 35, 40, 45, 54, 49, 59, 60, 62, 63, 68] 
X.append(x) 

clf = SVR(verbose=1) 
clf.fit(np.transpose(X), y) 

print("Expecting Result:") 
print(y) 
print("Predicted Result:") 
print(clf.predict(np.transpose(X))) 

出力は次のとおりです。

[LibSVM]* 
optimization finished, #iter = 10 
obj = -421.488272, rho = -30.500000 
nSV = 20, nBSV = 20 
Expecting Result: 
[3, 4, 8, 4, 6, 9, 8, 12, 15, 26, 35, 40, 45, 54, 49, 59, 60, 62, 63, 68] 
Predicted Result: 
[ 29.1136814 28.74580196 28.72748632 28.72736291 28.7273628 
    28.7273628 28.72736302 28.72760984 28.76424112 29.5   31.5 
    32.23575888 32.27239016 32.27263698 32.2726372 32.2726372 
    32.27263709 32.27251368 32.25419804 31.8863186 ] 

我々が予測された結果は非常に遠くトレーニングデータからあることがわかります。 フィッティングを改善するにはどうすればよいですか?

デビッド

答えて

2

おかげでこれはRBF(学習scikitのSVMのデフォルト)のカーネルは非常にうまく機能していないエッジケースです。

SVR行を clf = SVR(verbose=1, kernel='linear')に変更すると、はるかに合理的な結果が表示されます。

[LibSVM]Expecting Result: [3, 4, 8, 4, 6, 9, 8, 12, 15, 26, 35, 40, 45, 54, 49, 59, 60, 62, 63, 68] Predicted Result: [ -6.9 -2.9 1.1 5.1 9.1 13.1 17.1 21.1 25.1 29.1 33.1 37.1 41.1 45.1 49.1 53.1 57.1 61.1 65.1 69.1]

私は、あなたがどれだけSVMの仕事の感触を取得しようとしていることを理解しています。 RBFカーネルの仕組みについては、thisのブログ記事をご覧ください。

+0

ご協力いただきありがとうございます。私はテストし、それは動作します。私はカーネルの選択にもっと注意を払うつもりです。 –

関連する問題