Python 中的 SVM 拟合数据集时出错
Posted
技术标签:
【中文标题】Python 中的 SVM 拟合数据集时出错【英文标题】:SVM in Python Error in fitting dataset 【发布时间】:2016-05-17 08:20:36 【问题描述】:我对整个 SVM 和数据集还很陌生。我做了很多研究,但我无法弄清楚问题是什么。
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn import svm
boston = datasets.load_boston()
X, y = boston.data, boston.target
clf = svm.SVC(gamma=0.001, C=100.)
clf.fit(X, y)
clf.predict()
我想让它预测新值,但我不确定如何去做。此外,当我试图适应它时,我遇到了这个错误。
ValueError: 未知标签类型: array([ 24. , 21.6, 34.7, 33.4, 36.2, 28.7, 22.9, 27.1, 16.5, 18.9, 15. , 18.9, 21.7, 20.4, 18.2, 19.9, 23.1, 17.5...... 后面是一个由很多数字组成的数组。
我已经能够将这些函数与我制作的小数组一起用作测试的“数据集”。
如何使用 SVM 预测此数据集的新数据?我对这一切也不是很了解。
基本上我要做的是从波士顿获取数据集并为其预测新数据。交给我的任务是演示使用 SVM 进行数据建模和预测,并提供一个测试集和一个训练集。
【问题讨论】:
【参考方案1】:波士顿数据集中的目标是连续的。您正在使用 svm.SVC,它是一种分类算法(支持向量分类)。您可以使用 svm.SVR 对此数据集进行回归。
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn import svm
boston = datasets.load_boston()
X, y = boston.data, boston.target
reg = svm.SVR(gamma=0.001, C=100.)
reg.fit(X, y)
predictions_training_set = reg.predict(X)
任何算法的predict
函数都将接受一个参数,即用于进行预测的数据集 (X)。在上面的代码中,我为此使用了训练集。通常,您需要执行训练-测试拆分。 cross_validation.training_test_split
函数很方便。
http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.train_test_split.html
【讨论】:
哦,太好了!谢谢。所以我打印(predictions_training_set)。打印出来的那个数组代表什么?这些是预测的新值吗?如果它们是我如何只预测一定数量的新值?抱歉所有问题,这对我来说都是新事物。以上是关于Python 中的 SVM 拟合数据集时出错的主要内容,如果未能解决你的问题,请参考以下文章