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

如何修改Python代码使SVM多参数10折交叉验证结果输出更具可读性

解决方案

你只需要调整双重循环末尾打印平均准确率的语句,将当前遍历到的C、gamma参数值嵌入到输出字符串中即可实现需求。

具体修改点

将原来的打印语句:

print('Mean accuracy score: %0.3f' % np.array(acc_score).mean())

替换为以下代码即可:

print(f'Mean accuracy score for (C={z},gamma={v}): %0.3f' % np.array(acc_score).mean())

优化建议

你当前代码里读取CSV的变量命名为z,后续外层循环的C参数遍历变量也用了z,虽然运行不受影响,但可读性较差,建议将外层循环变量修改为c_val避免歧义,修改后的循环部分代码如下:

# 外层循环变量改为c_val,避免和读取csv的z变量混淆
for c_val in c:
    for v in gamma_values: 
        # 定义使用'rbf'核函数的SVM
        svc = SVC(kernel='rbf',C=c_val, gamma=v, random_state=50)

        skf = StratifiedKFold(n_splits=10, shuffle=True)
        acc_score = []

        for train_index, test_index in skf.split(X, y):
            X_train, X_test = X_scaled[train_index], X_scaled[test_index]
            y_train, y_test = y[train_index], y[test_index]

            # 训练模型
            svc.fit(X_train, np.ravel(y_train))

            # 在测试集上预测
            y_pred = svc.predict(X_test)

            # 获取模型的准确率得分
            score = accuracy_score(y_test, y_pred)
            acc_score.append(score)
        print(np.array(acc_score))
        # 打印带参数的平均准确率
        print(f'Mean accuracy score (C={c_val}, gamma = {v}): %0.3f' % np.array(acc_score).mean())

修改后输出就会完全符合你的预期格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:51:03