在 python 中使用 SVM 进行分类
Classification using SVM in python
我有一个包含 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().
如何解决这个问题?
如警告所述,您传入了列向量 ([(1,), (2,), (3,)]
) 而不是行向量 ([1, 2, 3]
)。用 numpy.array(x).ravel()
而不是 numpy.array(x)
来压平它。
在x=numpy.array(x)
之前添加这段代码
y = y.reshape(len(dataset),1)
我有一个包含 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().
如何解决这个问题?
如警告所述,您传入了列向量 ([(1,), (2,), (3,)]
) 而不是行向量 ([1, 2, 3]
)。用 numpy.array(x).ravel()
而不是 numpy.array(x)
来压平它。
在x=numpy.array(x)
之前添加这段代码
y = y.reshape(len(dataset),1)