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 拟合数据集时出错的主要内容,如果未能解决你的问题,请参考以下文章

在调整参数时识别交叉验证的 SVM 中的过拟合

在 Colab 上导入 Kaggle 数据集时出错

在 bigquery 中创建数据集时,谷歌 App 引擎出错

创建训练时显示的数据集时出错?

识别 SVM 中可能的过拟合

将 C 代码转换为 Web 程序集时出错