生成libSVM的數據格式及使用方法


libSVM數據格式:

參考博文:http://blog.csdn.net/kobesdu/article/details/8944851

Label 1:value 2:value ….

Label:是類別的標識,比如上節train.model中提到的1 -1,你可以自己隨意定,比如-10015。當然,如果是回歸,這是目標值,就要實事求是了。

Value:就是要訓練的數據,從分類的角度來說就是特征值,數據之間用空格隔開

比如: -15 1:0.708 2:1056 3:-0.3333

需要注意的是,如果特征值為0,特征冒號前面的(姑且稱做序號)可以不連續。如:

       -15 1:0.708 3:-0.3333

表明第2個特征值為0,從編程的角度來說,這樣做可以減少內存的使用,並提高做矩陣內積時的運算速度。我們平時在matlab中產生的數據都是沒有序號的常規矩陣,所以為了方便最好編一個程序進行轉化。

使用 FormatDataLibsvm.xls 生成libSVM數據格式

運行FormatDataLibsvm.xls(注意這時會有一個關於“宏已禁宏”的安全警示,點擊“選項”,選擇“啟用此內容”,確定即可);1,先運行FormatDataLibsvm.xls然后將數據粘貼到sheet1topleft單元。

   2 打開data.xls,(注:網上很多的介紹都是直接將數據粘貼到sheet1topleft單元),要特別注意的是這時候的數據排列順序應該是:

                  條件屬性  條件屬性 ...  決策屬性

                            7     5    ...  2

                            4     2    ...  1

      3"工具"-->""-->執行下面有一個選項(FormatDatatoLibsvm-->執行,要選中這個然后點擊“運行” ,這時候數據講變成:

                 決策屬性  條件屬性 條件屬性 ...

                        2    1:7    2:5    ...

                       1    1:4    2:2    ...

 

等數據轉換完成后,將該文件保存為.txt文件。這時數據轉換的問題就解決了。

如何使用這些數據

以簡單的使用為例

在用libsvm自帶的一個例子heart_scale.mat時,一切正常~

load heart_scale.mat(此處無分號)

train = heart_scale_inst;

train_label=heart_scale_label;

test=train;

test_label=train_label;

model=svmtrain(train_label,train,'-c 2 -g 0.01');

[predict_label,accuracy]=svmpredict(test_label,test,model);

但是在我們用自己的例子時出現了問題~

因為train = heart_scale_inst;是用的mat文件的特征列

train_label=heart_scale_label;用的是mat文件的標簽列

而我們生成的txt或者mat文件還沒有進行賦值所以一開始進行賦值就可以了~

A=[newmat(1:2288,1:3)];%特征列

B=[newmat(1:2288,4)];%標簽列

train = A;

train_label=B;

目前只進行了簡單的訓練以及測試……END




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM