Поддержка вектор машины SVM питон ValueError: X.shape [1] - PullRequest
0 голосов
/ 30 апреля 2019

Я получаю ошибку:

«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 голосов
/ 01 мая 2019

Ваш код не полный, откуда приходит svm?import sklearn

Когда вы разбиваете свой набор данных на метки и элементы

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

, вы намеренно пропускаете 3-й столбец?ваш X имеет 3 столбца [0,1,2], а Y - 4-й, 3-й отсутствует.Может быть, вы имеете в виду:

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