类型错误:必须是实数,而不是列表在 SupportVectorClassifier 的 GridSearchCV 中

问题描述

11 CV_svc = gridsearchcv(SVC(),param_grid = param_grid)

---> 12 CV_svc.fit(X_train_smote,y_train_smote)

14 打印(CV_svc.best_params_)

TypeError: 必须是实数,不是列表

在为 SVC 模型执行 gridsearchcv 时出现以下错误。不确定为什么会发生这种情况。我使用相同的 X_train_smote 和 y_train_smote 在 RandomForestClassifier 上执行了一些类似的步骤,并且运行良好。任何帮助将不胜感激。

from sklearn.svm import SVC

C = [0,1,10,100,1000],kernel = ['rbf','poly','linear','sigmoid'],degree = [1,2,3,4,5,6]
                    
param_grid = {'C' : C,'kernel' : kernel,'degree' : degree}

CV_svc = gridsearchcv(SVC(),param_grid = param_grid)
CV_svc.fit(X_train_smote,y_train_smote)

print(CV_svc.best_params_)

解决方法

当你为参数定义单独的列表时,你会用逗号来结束语句,这会混淆解释器。删除它们以获得预期的行为:

C = [1,10,100,1000]  # <-- removed comma at the end here
kernel = ['rbf','poly','linear','sigmoid']  # <-- and here
degree = [1,2,3,4,5,6]
                    
param_grid = {
    'C': C,'kernel': kernel,'degree': degree
}

另外,请注意 C 应该严格为正且大于 0,因此我从列表中删除了 0。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...