【问题标题】:Classification using SVM in python在 python 中使用 SVM 进行分类
【发布时间】:2018-06-29 19:18:13
【问题描述】:

我有一个包含 2 列的 csv 数据集,我想训练 SVM 分类器,然后在给定 X 值时预测 Y 值。

我的数据集格式

    X,Y
    1.84166666681401,2
    ....
    1.283333,4

Y 数组只有 (1,2,3,4)

Python 代码是:

import numpy
from sklearn import svm
import pandas as pd

x = pd.read_csv('train.csv', usecols=['1.84166666681401'])
y = pd.read_csv('train.csv', usecols=['2'])

x=numpy.array(x)
y=numpy.array(y)
clf = svm.SVC(C=1,kernel="linear")
clf.fit(x,y)
print(clf.predict(0.7882234))

但运行代码时出现错误

    Warning (from warnings module):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sklearn/utils/validation.py", line 578
    y = column_or_1d(y, warn=True)
DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().

如何解决?

【问题讨论】:

标签: python dataset svm


【解决方案1】:

正如警告所说,您传入的是列向量 ([(1,), (2,), (3,)]) 而不是行向量 ([1, 2, 3])。使用numpy.array(x).ravel() 而不是numpy.array(x) 将其展平。

【讨论】:

    【解决方案2】:

    x=numpy.array(x)之前添加这段代码 y = y.reshape(len(dataset),1)

    【讨论】:

      猜你喜欢
      • 2016-08-09
      • 2016-05-15
      • 2016-12-01
      • 2015-02-07
      • 2015-11-18
      • 2013-07-16
      • 2013-02-04
      • 2016-09-13
      • 2014-05-12
      相关资源
      最近更新 更多