Libsvm工具包的使用筆記

2021-10-08 17:07:13 字數 2516 閱讀 4224

第一步,要進行資料格式的預處理,通過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);

endfprintf(fid,'\r\n'); %\r是回車,表示使游標下移一格,\n是換行,表示使游標到行首

[row,col] = size(a);

for i = 1:row

for j = 1:col

fprintf(fid,'%d\t',a(i,j));

endfprintf(fid,'\r\n');

endfclose(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];

endend % temp2存放a一行新增序號的結果

te*** = [num2str(a(i,1)) temp2];%te***存放最終一行的結果

[m1,n1] = size(te***);

for k = 1:n1

if k == n1

fprintf(fid,'%c\n',te***(k));

else

fprintf(fid,'%c',te***(k));

endend

endfclose(fid);

%%%%%%%%%%% 上述函式的使用 %%%%%%%%%%

a= textread('svr.txt');%第一步轉化得到的文字檔案

libsvmtransform(a,'svm')呼叫上述函式 得到svm.txt檔案 符合libsvm格式的資料

檢測資料格式是否轉化成功?先將轉換好的資料檔案放到指定資料夾中,將svm.txt 檔案複製到libsvm資料夾下的tools資料夾中。(在執行checkdata.py檔案時 可能會報錯 未找到python38.dll,原因是沒有安裝python執行環境,如果安裝了,那就是因為沒有配置環境變數,環境變數配置參考這篇環境變數配置部落格。

第二步,將處理後的檔案放到libsvm安裝路徑下的tools中和windows中。然後輸入命令「checkdata.py 檔名.txt」回車,若顯示「no error」,則表示資料格式正確。

第三步,用svm-scale.exe對資料集進行歸一化處理。具體操作,開啟「命令提示符」,進入libsvm中的windows下,輸入命令「svm-scale.exe -l 0 -u 1 檔名.txt>輸出歸一化後的檔案.txt」

第四步,用grid.py搜尋最優引數,主要是c和g。集體操作,在"cmd", 輸入「python grid.py 輸出歸一化後的檔案.txt」

第五步,用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我們已經尋出,直接執行即可。

這時在windows中會生成乙個data.txt.model檔案。可以用來進行下面的**了。

第六步,用svm-predict**。還是在命令提示符windows下輸入「svm-predict  test.txt  data.txt.model out.txt」

可以看到,第一行是均差,第二行是相關係數,**結果還是不錯的。如果**結果不好,一可能是你的引數選擇不當,還可能是你的特徵值選擇的有問題。

另外,在windows下會生成乙個out.txt檔案,可以開啟看一下和test.txt檔案的差別。

NI LabVIEW GPU分析工具包使用筆記

具有並行處理架構的平台,例如fpga和gpu,在快速分析大型資料集方面得到了廣泛應用。這兩項技術可以減輕運算密集型演算法對cpu造成的負擔,在高度並行的平台上進行處理。fpga靈活性高 處理延遲低,但是由於容量不足,在浮點運算方面具有一定的侷限性。gpu因為其靈活性 便捷性以及低成本的特點,已經成為...

DBMS REPAIR 工具包的使用

dbms repair 工具包的使用 雖然dbms repair 是乙個程式包,它也是dba的乙個工具.通過執行dbms repair 包,oracle 給出關於損壞塊的詳細資訊,並告訴使用者如何修復他們 dbms repair 包記錄了關於損壞塊的全部詳細資訊,並在乙個稱為repair key的特...

fast align工具包的使用

fast align是乙個優秀的快速詞對齊工具包,在github上有詳細的介紹 注意 使用前必須先進行分詞,特別是漢語語料。否則沒有實際意義 需要注意的是,這裡對檔案的格式有一定要求,每行是源語言句子及其目標語言翻譯,由帶有前導和尾隨空格 的三重管道符號分隔。例如3句德語 英語平行語料庫是 doch...