Python 使用sklearn的LinearSVC得出的预测结果不一致,

Python 使用sklearn的LinearSVC得出的预测结果不一致,,python,scikit-learn,svm,libsvm,liblinear,Python,Scikit Learn,Svm,Libsvm,Liblinear,我正在使用SKLearn的LinearSVC LibLinear执行一个简单的分类 我无法直接重现预测值,也无法获得与LinearSVC.predict相同的精度 我做错了什么?下面的代码是独立的,突出了我的问题 import scipy as sc import numpy as np from sklearn.svm import LinearSVC #liblinear N=6000 m=500 D = sc.sparse.random(N,m, random_state = 1) D.

我正在使用SKLearn的LinearSVC LibLinear执行一个简单的分类

我无法直接重现预测值,也无法获得与LinearSVC.predict相同的精度

我做错了什么?下面的代码是独立的,突出了我的问题

import scipy as sc
import numpy as np
from sklearn.svm import LinearSVC #liblinear
N=6000
m=500

D = sc.sparse.random(N,m, random_state = 1)
D.data *= 2
D.data -= 1
X = sc.sparse.csr_matrix(D)
y = (X.sum(axis = 1) > .0)*2-1.0 

x_train = X[:5000,:]
y_train = y[:5000,:]
x_test  = X[5000:,:]
y_test  = y[5000:,:]

clf = LinearSVC(C=.1, fit_intercept = False, loss= 'hinge')
clf.fit(x_train,np.array(y_train))

print "Direct prediction accuracy:\t",100-100*np.mean((np.sign(x_test*clf.coef_.T)!=y_test)+0.0) ,"%"
print "CLF prediction accuracy:\t",  100*clf.score(x_test,y_test),"%"
输出:

Direct prediction accuracy:     90.8 %
CLF prediction accuracy:        91.3 %

谢谢你的帮助

不同之处在于使用np时如何处理零。因为有一个二进制分类器,所以结果中的零没有分类到任何有效类1或-1;另一方面,分类器.predict严格输出两个类;将您的预测方法从np.signx_test*clf.coef_uu.T微调为np.signx_test*clf.coef_uuu.T>0,1,-1将给出与内置预测方法完全相同的精度:


令人惊叹的非常感谢。
​
print "Direct prediction accuracy:\t", 100-100*np.mean((np.where(x_test * clf.coef_.T > 0, 1, -1) != y_test)+0.0) ,"%"
print "CLF prediction accuracy:\t",  100*clf.score(x_test, y_test),"%"

# Direct prediction accuracy:   92.7 %
# CLF prediction accuracy:  92.7 %