斯坦福机器学习第七周作业中找出最佳C和sigma的代码

本文介绍了一种使用支持向量机(SVM)进行参数调优的方法,通过交叉验证选择最佳的C和sigma值。文中详细展示了如何遍历不同的参数组合,并评估其在验证集上的表现,最终确定最优配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C_vec = [0.01 0.03 0.1 0.3 1 3 10 30]';     %为C拟定一组初值
sigma_vec = [0.01 0.03 0.1 0.3 1 3 10 30]';     %为sigma拟定一组初值

error_val = zeros(length(C_vec),length(sigma_vec));   %用于保存验证集误差

error_train = zeros(length(C_vec),length(sigma_vec));     %用于保存训练集误差
for i = 1:length(C_vec)
    for j = 1:length(sigma_vec)
        model = svmTrain(X,y, C_vec(i), @(x1, x2) gaussianKernel(x1, x2, sigma_vec(j)));     %通过调用svmTrain函数来计算
        predictions = svmPredict(model,Xval);     %预测
        error_val(i,j) = mean(double(predictions~=yval));     %保存误差
    end
end


[minval,ind] = min(error_val(:));   %保存最小误差所在的行列

[I,J] = ind2sub([size(error_val,1) size(error_val,2)],ind);   

                 %在 FreeMat、 Matlab中,该函数用于把 数组中元素索引值转换为该元素在数组中对应的下标

                 %Example1:

             IND = [3 4 5 6]

             s = [3,3];

             [I,J] = ind2sub(s,IND)

             I = 3 1 2 3

             J = 1 2 2 2

             IND表示索引值,s表示数组的大小,i,j表示索引值所在的位置(按列优先)

C = C_vec(I)         %   1
sigma = sigma_vec(J)   %   0.100
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值