scikit-learn/svm - 在“predict_proba”之后获取概率和相关标签

Posted

技术标签:

【中文标题】scikit-learn/svm - 在“predict_proba”之后获取概率和相关标签【英文标题】:scikit-learn/svm - fetch probabilities and associated labels after 'predict_proba' 【发布时间】:2017-07-18 10:22:43 【问题描述】:

我正在使用 scikit-learn SVM 进行文本分类,并遵循 here 指南。但是我很困惑如何使用predict_proba 方法来获取概率,关联正确的标签并获取前 3 个。

vectorizer = HashingVectorizer()
clf = svm.SVC(probability=True,class_weight='balanced')

test_data = [...]

test_vectors = vectorizer.transform(test_data)
predicted = clf.predict_proba(test_vectors)
for doc, pred in zip(test_labels, predicted):
    print('%r => %s' % (doc, test_labels[pred]))  

在运行上面的代码时,我得到了这个异常:

TypeError:只有一个元素的整数数组可以转换为 索引

这是可以理解的,因为 test_labels 是一个概率数组,但我不确定如何获取相关的标签和概率。

【问题讨论】:

请发布完整的错误堆栈跟踪。你在哪一行得到错误?并显示一些数据样本 【参考方案1】:

这就是我最终做的事情,并且对我有用。希望这对某人有所帮助:

    clf = cPickle.load(...)  
    test_data, test_labels = load_testfiles(_testpath) 

    for td in zip(test_data,test_labels):
        X = vectorizer.transform([td[0]])
        label = td[1]
        res = clf.predict_proba(X)[0]
        # sd = np.std(res)
        # max = np.amax(res)
        # min = np.amin(res)
        # mean = np.mean(res)
        # median = np.median(res)
        print("test--->actual=",label,"pred=",res)

【讨论】:

以上是关于scikit-learn/svm - 在“predict_proba”之后获取概率和相关标签的主要内容,如果未能解决你的问题,请参考以下文章

scikit-learn/svm - 在“predict_proba”之后获取概率和相关标签

将 scikit-learn SVM 模型转换为 LibSVM

在 scikit-learn SVM 中缩放数据

Python 中的 Scikit-learn(svm 函数)

不同特征的不同内核 - scikit-learn SVM

scikit-learn svm库使用小结