7

libsvmのsvm_predict()メソッドについて質問があります。

READMEには、次のクイックスタートサンプルコードがあります。

>>> y, x = [1,-1], [{1:1, 3:1}, {1:-1,3:-1}]
>>> prob  = svm_problem(y, x)
>>> param = svm_parameter('-c 4 -b 1')
>>> m = svm_train(prob, param)

>>> p_label, p_acc, p_val = svm_predict(y, x, m)

これで、yはxの辞書に関連付けられているカテゴリのリストであることがわかりました。svm_trainの部分も理解しています。

意味をなさない部分は、svm_predictで、xのテストデータとともにyからの「真の値」を提供する必要があるということです。事前にテストデータの分類がわからないのではないかと思いました。

私のトレーニングデータが次の場合:

y = [1, 2, 3]
x = [{1:1}, {1:10}, {1:20}]

しかし、私のテストデータは次のとおりです。

z = [{1:4}, {1:12}, {1:19}]

次に、次のようにzの真の値をsvm_predict()に渡す必要があるのはなぜですか。

a, b, c = svm_predict(y, z, m)

zの真の値を知るつもりはありません-それが予測の目的です。予測を実行するときにyに任意の分類値を設定する必要がありますか、それとも何かが完全に欠落していますか?

皆さんありがとう

4

2 に答える 2

5

サンプル外のテストを行っている場合に備えて、真のラベルを使用して精度の統計を提供します。

「オンライン」で実行している場合、つまり実際に真のラベルを持っていない場合は、[0]*len(z)代わりにy

于 2010-12-27T23:01:20.617 に答える
1

あなたは使用を検討するかもしれません

http://scikit-learn.sourceforge.net/

これには、libsvm の優れた python バインディングがあります

于 2010-12-28T02:59:17.580 に答える