Python中的SVM拟合数据集时出错

时间:2016-02-07 17:26:51

标签: python machine-learning scikit-learn svm linear-regression

我对整个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:未知标签类型:数组([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 个答案:

答案 0 :(得分:2)

波士顿数据集中的目标是连续的。您正在使用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