【问题标题】:Unable to predict floating values using svm in python无法在 python 中使用 svm 预测浮点值
【发布时间】:2016-04-07 18:24:52
【问题描述】:

当我尝试在 python 中实现一个简单的 svm 回归模型时,我能够预测整数值,但浮点值的预测不起作用。

代码:

from sklearn import svm
import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning) 
import numpy as np
data = np.genfromtxt("a.csv", dtype=None, delimiter=',') 
print data 
X=data[:,0:1]
y=data[:,1]
clf =svm.SVC()
clf.fit(X, y) 
m=clf.predict([1.2])
print m

错误:

Traceback (most recent call last):
  File "svm3.py", line 10, in <module>
    clf.fit(X, y) 
  File "/home/narayan/.local/lib/python2.7/site-packages/sklearn/svm/base.py", line 151, in fit
  y = self._validate_targets(y)
 File "/home/narayan/.local/lib/python2.7/site-packages/sklearn/svm/base.py", line 515, in _validate_targets
    check_classification_targets(y)
  File "/home/narayan/.local/lib/python2.7/site-packages/sklearn/utils/multiclass.py", line 173, in check_classification_targets
    raise ValueError("Unknown label type: %r" % y)
ValueError: Unknown label type: array([ 3.6,  6.6,  9.9])

CSV 文件数据:

[[ 1.2  3.6]
[ 2.2  6.6]
[ 3.3  9.9]]

【问题讨论】:

  • 对回归问题使用svm.SVR 而不是svm.SVC
  • svm.SVC 运行整数值的原因是测试值集中的每个整数都被视为一个标签。在这种情况下,您正在执行分类任务。但是,如果您想执行回归,SVC 将无法完成这项工作。至于为什么 SVR 不起作用,我们还需要进一步调查。

标签: python regression svm


【解决方案1】:

这是来自 sklearn 的 SVR 代码

>>> from sklearn import svm
>>> X = [[0, 0], [2, 2]]
>>> y = [0.5, 2.5]
>>> clf = svm.SVR()
>>> clf.fit(X, y) 
SVR(C=1.0, cache_size=200, coef0=0.0, degree=3, epsilon=0.1, gamma='auto',
    kernel='rbf', max_iter=-1, shrinking=True, tol=0.001, verbose=False)
>>> clf.predict([[1, 1]])
array([ 1.5])

看看这段代码是否会为你运行。

【讨论】:

    猜你喜欢
    • 2016-07-28
    • 2019-07-21
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    • 2021-08-23
    • 2018-09-05
    • 2018-09-25
    相关资源
    最近更新 更多