问题描述
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。