我正在尝试使用 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文档,它告诉该函数存在。
如何解决这个问题?
答案 0 :(得分:6)
根据sklearn documentation,方法' predict_proba '没有为' LinearSVC '
定义解决方法强>:
LinearSVC_classifier = SklearnClassifier(SVC(kernel='linear',probability=True))
将SVC与线性内核一起使用,概率参数设置为 True 。 正如here中所述。
答案 1 :(得分:4)
鉴于你的问题,没有提到像NLTK这样的外包装(标签除外),所以很难掌握你真正需要的东西!
Vivek Kumar的评论适用。 LinearSVC不支持概率,而SVC则支持概率。
现在另外一些评论:
似乎有人在此之前发现了problem。
答案 2 :(得分:1)
您可以使用_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将是每个类别相对于样本的概率的二维数组。
答案 3 :(得分:1)
如果训练模型和预测模型之间的scikit-learn模块版本之间存在不匹配,则会发生这种情况。