有没有办法在Matlab中运行grid.py(来自LIBSVM)?我做svm分类,我需要对参数C和g进行网格搜索。在LIBSVM中,grid.py文件找到最佳参数。但它是一个python脚本,我不知道如何在Matlab中运行它。 还有另一种方法可以预测参数的最佳值吗?提前谢谢。
答案 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。
如果您使用这两种方法中的任何一种,请写下您自己的问题答案。我很乐意看到他们工作,我相信其他人会发现它非常有用!