11

コードの貼り付けは次のとおりです: SVM サンプル コード

この問題に対する他のいくつかの回答をチェックしました...そして、この問題の特定の反復は少し異なるようです。

まず、入力は正規化されており、ポイントごとに 5 つの入力があります。値はすべて適切なサイズです (健全な 0.5 秒や 0.7 秒など - ゼロに近い数値や 1 に近い数値はほとんどありません)。

70 y 入力に対応する約 70 x 入力があります。y 入力も正規化されます (各時間ステップ後の関数のパーセンテージ変化です)。

SVR (および SVC) を初期化し、それらをトレーニングし、30 個のサンプル外の入力でテストします...そして、すべての入力に対してまったく同じ予測を取得します (そして、入力は妥当な量 (0.3、0.6) で変化しています) 、0.5 など)。分類子には(少なくとも)ある程度の差別化があると思います...

ここに私が持っているコードがあります:

# train svr

my_svr = svm.SVR()
my_svr.fit(x_training,y_trainr)

# train svc

my_svc = svm.SVC()
my_svc.fit(x_training,y_trainc)


# predict regression

p_regression = my_svr.predict(x_test)
p_r_series = pd.Series(index=y_testing.index,data=p_regression)

# predict classification

p_classification = my_svc.predict(x_test)
p_c_series = pd.Series(index=y_testing_classification.index,data=p_classification)

そして、ここに私の入力のサンプルがあります:

x_training = [[  1.52068627e-04   8.66880301e-01   5.08504362e-01   9.48082047e-01
7.01156322e-01],
              [  6.68130520e-01   9.07506250e-01   5.07182647e-01   8.11290634e-01
6.67756208e-01],
              ... x 70 ]

y_trainr = [-0.00723209 -0.01788079  0.00741741 -0.00200805 -0.00737761  0.00202704 ...]

y_trainc = [ 0.  0.  1.  0.  0.  1.  1.  0. ...]

また、行列 (5x30) は、入力の大きさと分散の点で行列にx_test似ています... と についても同じです。x_trainingy_testry_testc

現在、すべてのテストの予測はまったく同じです (回帰では 0.00596、分類では 1...)。

関連する予測を吐き出す SVR および SVC 関数を取得するにはどうすればよいですか? または、少なくとも入力に基づく異なる予測...

少なくとも、分類子は選択できる必要があります。つまり、回帰に十分な次元を提供していなくても...

4

3 に答える 3

9

C をデフォルトから増やしてみてください。あなたは適応不足のようです。

my_svc = svm.SVC(probability=True, C=1000)
my_svc.fit(x_training,y_trainc)

p_classification = my_svc.predict(x_test)

p_classification は次のようになります。

array([ 1.,  0.,  1.,  0.,  1.,  1.,  1.,  1.,  1.,  1.,  0.,  0.,  0.,
        1.,  0.,  0.,  0.,  0.,  0.,  1.,  1.,  0.,  1.,  1.,  1.,  1.,
        1.,  1.,  1.,  1.])

このSVR場合、イプシロンも減らしたいと思うでしょう。

my_svr = svm.SVR(C=1000, epsilon=0.0001)
my_svr.fit(x_training,y_trainr)

p_regression = my_svr.predict(x_test)

p_regression は次のようになります。

array([-0.00430622,  0.00022762,  0.00595002, -0.02037147, -0.0003767 ,
        0.00212401,  0.00018503, -0.00245148, -0.00109994, -0.00728342,
       -0.00603862, -0.00321413, -0.00922082, -0.00129351,  0.00086844,
        0.00380351, -0.0209799 ,  0.00495681,  0.0070937 ,  0.00525708,
       -0.00777854,  0.00346639,  0.0070703 , -0.00082952,  0.00246366,
        0.03007465,  0.01172834,  0.0135077 ,  0.00883518,  0.00399232])

相互検証を使用して C パラメータを調整し、最も重要なメトリクスで最高のパフォーマンスを発揮できるようにする必要があります。これを行うには、 を参照しGridSearchCVてください。

于 2015-12-26T21:38:58.790 に答える