【发布时间】:2018-07-24 03:54:49
【问题描述】:
我愿意使用 SVM 来预测 sklearn 的 IRIS 数据集的类别。使用 WEKA,我可以使用 LibSVM 获得 100% 的预测。在 Pyton 中,LibSVM 似乎是在 SVR 中实现的。所以我尝试使用 SVR,但我得到的结果不是类(0、1、2)而是数字(回归的结果)。
如果我使用与 WEKA LibSVM 相同的参数执行此代码:
import numpy
from sklearn import svm, datasets
# import some data to play with
iris = datasets.load_iris()
X = iris.data
y = iris.target
model = svm.libsvm.fit(kernel = 'rbf', svm_type=0, X=iris.data,
Y=iris.target.astype(numpy.float64), C=10, gamma = 10, epsilon = 0.01, coef0=0, random_seed=0)
pred = svm.libsvm.predict(iris.data, *model)
pred = pred.astype(numpy.int)
print(pred)
我得到以下结果:
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 2 2 2 1 2 2 2 2
2 2 1 2 2 2 2 2 1 2 1 2 1 2 2 1 1 2 2 2 2 2 1 2 2 2 2 1 2 2 2 1 2 2 2 2 2
2 1]
而 WEKA 可能会生成 [ 0, ..., 0, 1, ... 1, 2, ..., 2]。我想知道为什么我不能使用相同的参数得到相同的结果?
【问题讨论】:
标签: python scikit-learn svm