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

调整MNIST数据集上SVM分类器超参数为何准确率无变化?

问题:MNIST数据集上SVM超参数调整无效,准确率固定

我是机器学习新手,正尝试调整SVM的超参数,以在MNIST手写数字数据集上达到95%及以上的准确率。所用CSV文件第一列为分类标签,包含784个属性,数据集未按标签排序。

以下是我编写的代码:

import numpy as np
import os
from sklearn.svm import SVC       

path = os.getcwd()
traindata, testdata = np.loadtxt(path + "\username\data\mnist_train.csv", delimiter=",",max_rows=4000), np.loadtxt(path + "\username\data\mnist_test.csv", delimiter=",",max_rows=1000)

np.random.seed(123)
shuffletrain = np.random.permutation(4000)
np.random.seed(123)
shuffletest = np.random.permutation(1000)
traindata, testdata = traindata[shuffletrain,:], testdata[shuffletest,:]

y_train, y_test = traindata[:2000,0], testdata[:500,0]
X_train, X_test = traindata[:2000,1:], testdata[:500,1:]

Ctemp = 10000
gammatemp = 'auto'
machine = SVC(C=Ctemp, kernel='rbf', gamma=gammatemp)
machine.fit(X_train,y_train)                                   
testscore = machine.score(X_test,y_test)   
print(testscore)

但无论调整C(如1或10000)、gamma(如0.1或1000)等超参数,测试准确率始终固定为0.194;更换其他数据集时代码可正常生效,调整超参数会改变准确率。我已尝试打乱数据集,且更换数据子集时准确率会变化,因此排除数据集本身排序问题。请问我遗漏了什么?为何超参数不影响测试准确率?

解决方案

  • 未做特征缩放:MNIST像素值范围是0-255,SVM(尤其是RBF核)对特征尺度极度敏感。未缩放时,大数值特征会主导核函数计算,模型无法有效学习,超参数调整完全失效。解决方法:将特征缩放到0-1区间或标准化:
    # 简单缩放至0-1
    X_train = X_train / 255.0
    X_test = X_test / 255.0
    
    或使用sklearn标准化工具:
    from sklearn.preprocessing import StandardScaler
    scaler = StandardScaler()
    X_train = scaler.fit_transform(X_train)
    X_test = scaler.transform(X_test)
    
  • 训练样本量不足:仅用2000条训练数据,SVM无法学到足够的特征模式,超参数调整的效果被样本量限制掩盖。可以尝试使用全部4000条训练数据:
    y_train, y_test = traindata[:,0], testdata[:500,0]
    X_train, X_test = traindata[:,1:], testdata[:500,1:]
    
  • gamma参数设置极端:尝试的0.1或1000远超出MNIST特征的合理范围。默认的gamma='auto'对应1/n_features(约0.00127),这个区间更合适。过大的gamma会让模型过拟合到单个样本,过小的gamma会让模型过于平滑,两种情况都会导致超参数调整无法体现效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:35:36