Python 为什么SVM predict()函数会出错?
为预测设计了一个简单的SVM算法: 我收到的代码错误如下:Python 为什么SVM predict()函数会出错?,python,numpy,scikit-learn,svm,Python,Numpy,Scikit Learn,Svm,为预测设计了一个简单的SVM算法: 我收到的代码错误如下: 分数计算正确,但当我尝试传递要预测的值时,model.predict()函数出现错误。我想不出这个问题。试图进行分类,但未找到任何相关信息 import pandas as pd import pylab as pl import numpy as np import scipy.optimize as opt from sklearn import preprocessing from sklearn.model_selection
分数计算正确,但当我尝试传递要预测的值时,
model.predict()
函数出现错误。我想不出这个问题。试图进行分类,但未找到任何相关信息
import pandas as pd
import pylab as pl
import numpy as np
import scipy.optimize as opt
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
%matplotlib inline
import matplotlib.pyplot as plt
data = pd.read_csv(r'C:\Users\Imad\Desktop\New folder\cars.csv')
from sklearn.preprocessing import LabelEncoder
data.columns
Index(['buying', 'maint', 'doors', 'persons', 'lug_boot', 'safety',
'car'], dtype='object')
buying_1=LabelEncoder()
maint_1=LabelEncoder()
doors_1=LabelEncoder()
persons_1=LabelEncoder()
lug_boot_1=LabelEncoder()
safety_1=LabelEncoder()
car_1=LabelEncoder()
data['buying_n'] = buying_1.fit_transform(data['buying'])
data['maint_n'] = maint_1.fit_transform(data['maint'])
data['door_n'] = doors_1.fit_transform(data['doors'])
data['persons_n'] = persons_1.fit_transform(data['persons'])
data['lug_boot_n'] = lug_boot_1.fit_transform(data['lug_boot'])
data['safety_n'] = safety_1.fit_transform(data['safety'])
data['car_n'] = car_1.fit_transform(data['car'])
inputs = data.drop(['buying', 'maint', 'doors', 'persons', 'lug_boot', '
safety', 'car'], axis = 'columns')
target = data['buying_n']
X = np.asarray(inputs)
y = np.asarray(target)
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2,
random_state= 20)
print ('Train set:', X_train.shape, y_train.shape)
print ('Test set:', X_test.shape, y_test.shape)
Train set: (1382, 7) (1382,)
Test set: (346, 7) (346,)
from sklearn.svm import SVC
model = SVC(C = 2, gamma=3, random_state=5)
model.fit(X_train, y_train)
model.score(X_test,y_test)
0.9884393063583815
model.predict([[3,3,2,2,1,2]])
ValueError回溯(最近的调用)
最后)
在里面
---->1模型预测([[3,3,2,2,1,2]]
预测中的~\Anaconda3\lib\site packages\sklearn\svm\base.py(self,X)
565 X中样品的类别标签。
566 """
-->567 y=super(BaseSVC,self)。预测(X)
568返回self.classes_u.take(np.asarray(y,dtype=np.intp))
569
预测中的~\Anaconda3\lib\site packages\sklearn\svm\base.py(self,X)
323 y_pred:数组,形状(n_个样本)
324 """
-->325 X=自我验证,用于预测(X)
326 predict=self.\u sparse\u预测self.\u sparse
自我预测
327收益预测(X)
中的~\Anaconda3\lib\site packages\sklearn\svm\base.py
_为预测(self,X)验证
476提升值错误(“X.shape[1]=%d应等于%d,
"
477“培训时的功能数量
时间“%
-->478(n_特征,自形_拟合[1]))
479返回X
480
ValueError:X.shape[1]=6应等于7,即特征数
训练时
问题在于,您正在将目标变量与输入一起传递
更正以下行
target = data['buying_n']
inputs = data.drop(['buying', 'maint', 'doors', 'persons', 'lug_boot', '
safety', 'car'. 'buying_n'], axis = 'columns')
在此之后,输入中的功能数将更改为6
注意:不要更改这两行的顺序 问题在于,您正在将目标变量与输入一起传递 更正以下行
target = data['buying_n']
inputs = data.drop(['buying', 'maint', 'doors', 'persons', 'lug_boot', '
safety', 'car'. 'buying_n'], axis = 'columns')
在此之后,输入中的功能数将更改为6
注意:不要更改这两行的顺序 如错误所示:
len(['buying'、'maint'、'doors'、'person'、'lug_boot'、'safety'、'car'])!=len([3,3,2,2,1,2])
['buying']是目标变量。休息是独立的预测因素。我不应该通过['buying']我需要通过模型传递6个变量。predict()然后你也需要使用6
进行训练。是的!知道了。谢谢你,就像错误所说:len(['buying'、'maint'、'doors'、'person'、'lug_boot'、'safety'、'car'])!=len([3,3,2,2,1,2])
['buying']是目标变量。休息是独立的预测因素。我不应该通过['buying']我需要通过模型传递6个变量。predict()然后你也需要使用6
进行训练。是的!知道了。非常感谢。