Libsvm工具包的使用笔记

对于LIBSVM包的使用说明:

  1. 第一步,要进行数据格式的预处理,通过matlab中xlsx_txt.m文件将Excel表格文件转换成txt文本文件,然后用libsvmtransform.m文件将数据处理成LIBSVM包能处理的格式。具体代码如下:

    %%%%%将svr.xlsx数据转化为svr.txt格式数据
    clear;clc
    [a,b,c] = xlsread('.\data\svr.xlsx');
    fid = fopen('.data\svr.txt','w');
    for i = 1:length(b)
        fprintf(fid, '%s\t',b{1,i});
    end
    fprintf(fid,'\r\n'); %\r是回车,表示使光标下移一格,\n是换行,表示使光标到行首
    [row,col] = size(a);
    for i = 1:row
        for j = 1:col
            fprintf(fid,'%d\t',a(i,j));
        end
        fprintf(fid,'\r\n');
    end
    fclose(fid);
    
    
    %%%%%  libsvmtransform.m函数  %%%%%%%
    function libsvmtransform(A,filename)
    [m,n]=size(A);
    txt='.txt';
    file=[filename,txt];
    fid = fopen(file,'w');%写入文件路径
    
    for i=1:m
        temp1 = A(i,2:n);%存储A中每一行从第2位开始的值
        temp2 = [];
        for j = 1:length(temp1)
           if temp1(j) ~= 0
                temp2 = [temp2 ' ' num2str(j) ':' num2str(temp1(j))];
           else
                temp2 = [temp2];
           end
        end  % temp2存放A一行添加序号的结果
    temp3 = [num2str(A(i,1)) temp2];%temp3存放最终一行的结果
    [m1,n1] = size(temp3);
     for k = 1:n1
         if k == n1
             fprintf(fid,'%c\n',temp3(k));
         else
             fprintf(fid,'%c',temp3(k));
         end
     end
    end
    fclose(fid);
    
    
    
    %%%%%%%%%%%    上述函数的使用   %%%%%%%%%%
    a= textread('svr.txt');%第一步转化得到的文本文件
    libsvmtransform(a,'svm')调用上述函数 得到svm.txt文件 符合Libsvm格式的数据
    
    

    检测数据格式是否转化成功?先将转换好的数据文件放到指定文件夹中,将svm.txt 文件复制到libsvm文件夹下的tools文件夹中。(在运行checkdata.py文件时 可能会报错 未找到python38.dll,原因是没有安装python运行环境,如果安装了,那就是因为没有配置环境变量,环境变量配置参考这篇环境变量配置博客。

  2. 第二步,将处理后的文件放到Libsvm安装路径下的tools中和windows中。然后输入命令“checkdata.py 文件名.txt”回车,若显示“No error”,则表示数据格式正确。
  3. 第三步,用svm-scale.exe对数据集进行归一化处理。具体操作,打开“命令提示符”,进入libsvm中的windows下,输入命令“svm-scale.exe -l 0 -u 1 文件名.txt>输出归一化后的文件.txt”
  4. 第四步,用grid.py搜索最优参数,主要是c和g。集体操作,在"cmd", 输入“python grid.py 输出归一化后的文件.txt”
  5. 第五步,用svm-train训练模型。打开命令提示符,进入……\libsvm\windows然后输入“svm-train -s 3 -t 2 -c 1024.0 -g 4 .0 -p 0.0625 data.txt”,这里-s是选择SVM的类型。对于回归来说,只能选3或者4,3表示epsilon-support vector regression, 4表示nu-support vector regression。-t是选择核函数,通常选用RBF核函数。然后c,g,p我们已经寻出,直接运行即可。
  6. 这时在windows中会生成一个data.txt.model文件。可以用来进行下面的预测了。
  7. 第六步,用svm-predict预测。还是在命令提示符windows下输入“svm-predict  test.txt  data.txt.model out.txt”
  8. 可以看到,第一行是均差,第二行是相关系数,预测结果还是不错的。如果预测结果不好,一可能是你的参数选择不当,还可能是你的特征值选择的有问题。
  9. 另外,在windows下会生成一个out.txt文件,可以打开看一下和test.txt文件的差别。
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

璃墟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值