2017-11-15 5 views
2

を持っていません:追加の輸入はAttributeError: 'LinearSVC' オブジェクトは、私が更新</strong></strong></p> <p><strong><strong>LinearSVC分類器を使用しようとしています何の属性 'predict_proba'

import nltk 
from nltk.tokenize import word_tokenize 
from nltk.classify.scikitlearn import SklearnClassifier 
from sklearn.svm import LinearSVC, SVC 

LinearSVC_classifier = SklearnClassifier(LinearSVC()) 
LinearSVC_classifier.train(featuresets) 

をしかし、私はそれを分類しようとしているとき確率

LinearSVC_classifier.prob_classify(feats) 

属性エラー:

AttributeError:'LinearSVC' object has no attribute 'predict_proba' 

sklearnのドキュメントをチェックしたところ、この関数が存在することを示しています。

これを修正するにはどうすればよいですか?

+2

SklearnClassifierのベースとしてLinearSVCを使用していますが、実際には 'predict_proba()'がありません。 [こちらのドキュメント](http://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html)を確認してください。 –

+1

@VivekKumarあなたは正しいです。しかし残念ながら、sklearnクラシファイアの[NLTK](http://www.nltk.org/_modules/nltk/classify/scikitlearn.html)ラッパーのドキュメントでは、 'predict_proba'メソッドが定義されているLinearSVM()を例として挙げています。 – mdilip

+0

あなたがインポートしたものの全コードと 'SklearnClassifier'の仕組みを追加できますか?それはNLTKの何が間違っているのかをデバッグするのに役立ちます。 – alvas

答えて

2

sklearn documentationによると、方法 'predict_probaが' 'LinearSVC'

回避策のために定義されていません:線形カーネル

LinearSVC_classifier = SklearnClassifier(SVC(kernel='linear',probability=True)) 

使用SVC、確率引数をに設定してください。。 ちょうどhereで説明されています。

+0

ありがとう、それはうまく動作しますが、非常に遅い –

3

あなたの質問から、NLTK(タグを除く)のようないくつかの外部ラッパーについて言及されていないので、本当に必要なものを把握するのは難しいです!

Vivek Kumarさんのコメントが適用されます。 LinearSVCは確率をサポートしていませんが、SVCはそうしています。今

いくつかの追加の発言:

  • SVM-理論は確率とそのためのサポートについてあまりないですが
    • Platt scaling
    • を参照してくださいクロスバリデーションおよび追加の分類器を使用して余分なアプローチから来ています
  • LinearSVCのコアソルバーliblinearはこれを組み込みサポートしていません
  • mdilip上記のアプローチが有効な回避策ですが、:
    • SVCはlibsvmに基づいており、
  • (大規模のため、多分準備ができていない)ので、遅く代替されています。あなた自身のパイプラインを構築成る:

誰かがこれを観察したようです。前にproblemです。

+0

情報ありがとう! –

関連する問題

 関連する問題