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

时间:2017-02-27 17:21:53

标签: python-2.7 scikit-learn libsvm

我正在使用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是一个概率数组,但我不知道如何获取相关的标签和概率。<​​/ p>

1 个答案:

答案 0 :(得分:0)

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

    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)