python 支持向量机预测结果相同_使用Scikit学习支持向量机时,预测总是相同的...

我认为问题是数据被分成训练和测试的方式。您已经采集了前3000个样本用于培训,剩下的190个样本用于测试。我发现,通过这样的训练,分类器可以为所有测试样本生成真正的类标签(score=1.0)。我还注意到,数据集的最后190个样本具有相同的类标签,即'N'。因此,你得到的结果是正确的。在

我建议您使用test_size=.06将数据集拆分为train并通过^{}进行测试(这大约相当于190/3190,不过为了使结果的可视化更容易,我在下面的示例运行中使用了test_size=.01)。为了简单起见,我还建议您使用^{}对特性的分类值进行编码。在

以下是完整的代码(我已经自由地执行了一些重构):import numpy as np

from sklearn.preprocessing import OneHotEncoder, LabelEncoder

from sklearn.model_selection import ShuffleSplit

from sklearn import svm

data = np.loadtxt(r'splice.data', delimiter=',', dtype='string')

bases = {'A': 0, 'C': 1, 'D': 2, 'G': 3, 'N': 4, 'R': 5, 'S': 6, 'T': 7}

X_base = np.asarray([[bases[c] for c in seq.strip()] for seq in data[:, 2]])

y_class = data[:, 0]

enc = OneHotEncoder(n_values=len(bases))

lb = LabelEncoder()

enc.fit(X_base)

lb.fit(y_class)

X = enc.transform(X_base).toarray()

y = lb.transform(y_class)

rs = ShuffleSplit(n_splits=1, test_size=.01, random_state=0)

train_index, test_index = rs.split(X).next()

train_X, train_y = X[train_index], y[train_index]

test_X, test_y = X[test_index], y[test_index]

clf = svm.SVC(kernel="rbf")

clf.fit(train_X, train_y)

predictions = clf.predict(test_X)

演示:

^{pr2}$

注意:确保您的sklearn版本是0.18.1,否则上面的代码可能无法工作。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值