支持向量机SVM python ValueError:X.shape [1]

时间:2019-04-30 18:12:20

标签: python pandas numpy svm valueerror

我得到了错误:

“ ValueError X.shape [1] = 2应该等于3,即训练时的要素数量”

当我实现代码的最后4行时。我还需要一个未来,因为我一开始就有这个定义:X = train1.iloc [:,:3]。但是我不知道该怎么做。 我必须在最后4行中添加什么来定义一个新功能?


import numpy as np 
import pandas as pd 
from sklearn.svm import SVC



import matplotlib.pyplot as plt
%matplotlib inline

train1 = pd.read_csv(train)


X = train1.iloc[:, :3]
y = train1.iloc[:,4]

C = 1.0 # SVM regularization parameter
svc = svm.SVC(kernel='linear', C=1,).fit(X, y)

# create a mesh to plot in
x_min, x_max = X.iloc[:, 0].min() - 1, X.iloc[:, 0].max() + 1
y_min, y_max = X.iloc[:, 1].min() - 1, X.iloc[:, 1].max() + 1
h = (x_max / x_min)/100
xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
 np.arange(y_min, y_max, h))

plt.subplot(1, 1,1)
Z = svc.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, cmap=plt.cm.Paired, alpha=0.8)

1 个答案:

答案 0 :(得分:0)

您的代码不完整,svm来自何处? import sklearn

将数据集分为标签和要素时

X = train1.iloc[:, :3]
y = train1.iloc[:,4]

您是否故意省略了第三栏?您的X有3列[0,1,2],Y是第4列,第3列丢失。也许你的意思是:

X = train1.iloc[:, :4]
y = train1.iloc[:,4]