matlab LIBSVM中的grid.py

时间:2014-12-17 18:10:38

标签: python matlab libsvm

有没有办法在Matlab中运行grid.py(来自LIBSVM)?我做svm分类,我需要对参数C和g进行网格搜索。在LIBSVM中,grid.py文件找到最佳参数。但它是一个python脚本,我不知道如何在Matlab中运行它。 还有另一种方法可以预测参数的最佳值吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

虽然我自己从未做过,但可以在MATLAB中运行python代码。我调查它的原因和你自己一样,并且发现,正如@Mihia Todor所说,编写自己的grid.py版本会更容易。以下是我在MATLAB中使用LIBSVM进行网格搜索和交叉验证的基本代码:

gamma=1;
cost=1;
J=10;
K=12;
kernal=2; %RBF 

besterr=[];
bestc=[];
bestg=[];
for j=1:J;
    gamma=2^(2*(j-round(J/3))); %Calculates a nice spread of search numbers centred above zero
    for k=1:K;
        cost=2^(2*(k-round(K/3)));
        err=svmtrain(y,x,sprintf('-s 4 -t %g -v 5 -c %g -g %g -q', kernal, cost, gamma)); %Nu-SVR change -s if you want SVC
        if isempty(besterr)|err<besterr;
            besterr=err;
            bestc=cost;
            bestg=gamma;
        end
    end
end
besterr=sqrt(besterr) %Prints the average RMSD of the 5-fold cross-validation
bestg %Prints best gamma
bestc %Prints best cost

model=svmtrain(y,x,sprintf('-s 4 -t %g -c %g -g %g -q', kernal, bestc, bestg)); %Retrain using new c and g

假设你有缩放的稀疏x数据,这应该是开箱即用的。

如果您确实希望继续使用grid.py并拥有2014b,这可能是一个开始寻找的有用场所: Call Python Libraries

如果您没有2014b或更新版本,请Call Python function from MATLAB

如果您使用这两种方法中的任何一种,请写下您自己的问题答案。我很乐意看到他们工作,我相信其他人会发现它非常有用!