使用SVM对数据集执行分类任务时出现报错,求助解决方案
SVM分类fit阶段维度报错排查
报错原因
你触发的是scikit-learn库的输入维度校验错误,SVC.fit()方法要求传入的标签参数y_train必须是一维数组,你当前传入的y_train为二维结构(常见为(样本数, 1)格式的二维数组/单列DataFrame),不符合接口要求。
解决方案
- 若
y_train为numpy数组,直接调用ravel()方法降维即可:
svmclassifier = SVC(kernel = "rbf",random_state=0) svmclassifier.fit(x_train, y_train.ravel())
- 若
y_train为pandas的单列DataFrame,可调用values.flatten()处理:
svmclassifier = SVC(kernel = "rbf",random_state=0) svmclassifier.fit(x_train, y_train.values.flatten())
- 长效处理方案:在调用
train_test_split拆分数据集前提前对标签y做降维处理,避免后续每次模型训练都重复转换维度。
验证方法
执行print(y_train.shape)查看维度:
- 符合要求的一维数组输出格式为
(样本数,) - 未修正的二维结构输出格式为
(样本数, 1)
内容的提问来源于stack exchange,提问作者Richard Aboagye
相关产品推荐
相关产品推荐

