在 SVC 中出现 ValueError
Posted
技术标签:
【中文标题】在 SVC 中出现 ValueError【英文标题】:ValueError while in SVC 【发布时间】:2018-09-03 23:28:24 【问题描述】:这是一个包含 10 个特征和一个类别的癌症数据集。
X=df.iloc[:,1:10].values
y=df.iloc[:,[-1]].values
from sklearn.preprocessing import Imputer
imputer=Imputer(missing_values='NaN',strategy='mean',axis=1)
imputer=imputer.fit(X)
X=imputer.transform(X)
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=0)
from sklearn.svm import SVC
classifier=SVC (kernel='rbf',random_state=0)
classifier.fit(X_train,y_train)
y_pred=classifier.predict(y_test)
当我执行这个时,我得到
ValueError: X.shape[1] = 1 should be equal to 9, the number of features at training time
【问题讨论】:
【参考方案1】:您的错误是由以下行引起的,您在其中传递了y_test
而不是X_test
:
classifier.predict(y_test)
完整代码:
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import Imputer
from sklearn.svm import SVC
data = load_breast_cancer()
df = pd.DataFrame(data.data, columns=data.feature_names)
X=df.iloc[:,1:10]
y = data.target
imputer=Imputer(strategy='mean',axis=1)
X = imputer.fit_transform(X)
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=0)
clf = SVC(kernel='rbf').fit(X_train, y_train)
y_pred=clf.predict(X_test)
print(clf.score(X_test, y_test))
产量:
0.6842105263157895
【讨论】:
我预测的是 y_test 而不是 X_test。使用 gamma=0.01,C=1,你会得到很好的准确度。如果你得到了,请告诉我 @Anesh,对不起,我不明白。y_test
- 是你的结果(基本正确) - 它不能用于预测。它用于检查(评分)...
'y_pred=clf.predict(y_test)' 我用这个代替 X_test。那是它显示错误。我得到了 96% 的 gamma-0.01 C:1 random_state=0
@Anesh,啊,我找到你了。是的,我没有调整超参数...我们可以使用 GridSearchCV 进行调整...
Yesss.GridSearchCV 是最好的。以上是关于在 SVC 中出现 ValueError的主要内容,如果未能解决你的问题,请参考以下文章