3

マルチラベル分類に OneVsRestClassifier を使用しています。LinearSVC で動作しますが、SVC に適用すると、次のエラーが表示されます。

classifier = OneVsRestClassifier(SVC(class_weight='balanced'))
classifier.fit(X1, y1)
y2 = classifier.predict(X2)

Traceback (most recent call last):
...
File "/usr/local/lib/python2.7/dist-packages/sklearn/multiclass.py", line 219, in predict
  return predict_ovr(self.estimators_, self.label_binarizer_, X)
File "/usr/local/lib/python2.7/dist-packages/sklearn/multiclass.py", line 93, in predict_ovr
  Y = np.array([_predict_binary(e, X) for e in estimators])
File "/usr/local/lib/python2.7/dist-packages/sklearn/multiclass.py", line 66, in _predict_binary
  score = estimator.predict_proba(X)[:, 1]
File "/usr/local/lib/python2.7/dist-packages/sklearn/svm/base.py", line 490, in predict_proba
  "probability estimates must be enabled to use this method")
NotImplementedError: probability estimates must be enabled to use this method</code>

誰がそれが何であるか知っていますか?

4

1 に答える 1

5

これはバグです。は、メソッドが見つかったときにメソッドをOneVsRestClassifier呼び出しますが、 Platt スケーリングを取得するためにそれを構築しない限り、実際には機能しません(これは実際にはお勧めしません)。predict_probaSVCprobability=True

それが機能する理由LinearSVCは、そのクラスには がないpredict_probaため、OvR はdecision_functionメソッドに戻ります。

于 2013-05-07T14:11:46.783 に答える