私は使用しようとしていますLinearSVC分類子
更新:インポートを追加しました
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が発生します:
AttributeError:'LinearSVC' object has no attribute 'predict_proba'
Sklearnのドキュメントを確認したところ、この関数が存在することがわかりました。
それを修正する方法は?
Sklearn documentation によると、メソッド 'predict_proba'は 'LinearSVC'に対して定義されていません
回避策:
LinearSVC_classifier = SklearnClassifier(SVC(kernel='linear',probability=True))
linear kernel、probability引数をTrueに設定してSVCを使用します。 ここ で説明したように。
あなたの質問を考えると、NLTKのようないくつかの外部ラッパー(タグを除く)については言及されていないので、本当に必要なものを把握するのは難しいです!
VivekKumarのコメントが適用されます。 LinearSVCは確率をサポートしていませんが、SVCはサポートしています。
ここでいくつかの追加のコメント:
誰かがこれを以前に観察したようです 問題 。
代わりに_predict_proba_lr()
を使用できますpredict_proba
。このようなもの:
from sklearn import svm
clf=svm.LinearSVC()
clf.fit(X_train,Y_train)
res= clf._predict_proba_lr(X_test,Y_test)
resは、サンプルに対する各クラスの確率の2次元配列になります。