You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用sklearn SVC调优时报TypeError: an integer is required错误如何解决?

问题原因分析

报错的核心是参数传值错误,你把需要传入整数的degree参数传入了字符串类型值:

  • 你定义的rng_ga = ['auto', 'scale']是gamma参数的候选值,但你在循环中将其赋值给了SVC的degree参数
  • degree是多项式核(poly)的专用参数,要求必须是正整数,传入字符串自然触发需要整数的类型错误
  • 额外逻辑问题:你定义的rng_degree=np.arange(2,5)完全没有用到,参数对应关系完全混乱
修正方案

方案1:修改原生嵌套循环

调整参数对应关系,同时可以优化仅在kernel为poly时遍历degree,减少无效计算:

import numpy as np
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

krn= ['linear', 'poly', 'rbf', 'sigmoid']
rng_C = np.arange(1,101,20)
rng_degree=np.arange(2,5) # 仅poly核生效
rng_gamma= ['auto', 'scale'] # gamma参数候选
best_score=0

for i in krn:
    for j in rng_C:
        for k in rng_gamma:
            # 仅poly核需要遍历degree参数,其他核随便填默认值不生效
            degree_list = rng_degree if i == 'poly' else [3]
            for deg in degree_list:
                SVModel=SVC(kernel=i, C=j, degree=deg, gamma=k)
                SVModel.fit(x_train, y_train)
                acc_score= accuracy_score(y_test, SVModel.predict(x_test))
                if best_score<acc_score:
                    best_score=acc_score
                    bi=i
                    bj=j
                    b_deg=deg
                    b_gamma=k
print(best_score, bi, bj, b_deg, b_gamma)

方案2:使用sklearn自带的网格搜索工具(更简洁不易出错)

不需要手写嵌套循环,直接用GridSearchCV自动完成超参数遍历:

from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

# 定义超参数搜索空间
param_grid = {
    'kernel': ['linear', 'poly', 'rbf', 'sigmoid'],
    'C': np.arange(1,101,20),
    'degree': np.arange(2,5),
    'gamma': ['auto', 'scale']
}

svc = SVC()
grid_search = GridSearchCV(svc, param_grid, scoring='accuracy', cv=5)
grid_search.fit(x_train, y_train)

# 输出最优结果
print("最优交叉验证准确率:", grid_search.best_score_)
print("最优超参数组合:", grid_search.best_params_)
# 直接用最优模型预测测试集
y_pred = grid_search.predict(x_test)
print("测试集准确率:", accuracy_score(y_test, y_pred))

内容的提问来源于stack exchange,提问作者whomst

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:15:07