使用java調用libsvm

來源:互聯網
上載者:User

1.首先,從林智仁教授那裡下載使用包libsvm。這裡有很多版本的libsvm,這裡我們找到java版本的。如:

2.進入這個檔案我們可以看到如下檔案結構:紅色圈住的檔案是一會要引入到java項目裡的檔案,先複製好,一會ctrl+v。3.在Myeclipse裡面建立一個普通的java項目,並在src檔案下ctrl+v,為了檔案結構好看些,再建立一個service檔案夾,專門放svm_predict.java,svm_scale.java等4個散落在根目錄下的java檔案。comMain是一個調用的主方法,trainfile主要存放測試與訓練的資料,lib檔案夾不用管。 4.準備訓練資料。libsvm需要按照自己的格式準備資料,才可以執行。格式要求如下: label1 index1:value1 index2:value2 ... label2 index1:value1 index2:value2 ... ...label 就是標籤 index是標號,value就是這個標號下的值。舉個例子,班裡有4個同學,兩男兩女。兩個男生身高體重分別為171cm,65kg,173cm,66kg,兩個女生的升高體重分別為156cm,45kg,157,46kg。男生用標籤1代替,女生用-1來代替。這樣我們可以建立如下格式的資料:1 1:171 2:651 1:173 2:662 1:156 2:452 1:157 2:46儲存到trainfile檔案下命名為train1.txt有人肯定會質疑第一列是身高,第二列是體重,還幹嘛要標誌1和2呢?其實,在實際的預測分類中,每一行資料不是所有的屬性都有值的,可能只有一部分,這樣就需要一個標號來告訴程式,這個屬性值是哪一列。5.預測資料同樣按照訓練資料那樣準備,由於我們是預測,所以標號可以全部用1或者別的來代替。儲存到trainfile檔案下命名為train2.txt6.在main函數中編寫代碼 
package com.LibSVMTest.main;import java.io.IOException;import service.svm_predict;import service.svm_train;public class comMain {/** * @param args * @throws IOException */public static void main(String[] args) throws IOException {// TODO Auto-generated method stubString[] arg = { "trainfile\\train1.txt", // 存放SVM訓練模型用的資料的路徑"trainfile\\model_r.txt" }; // 存放SVM通過訓練資料訓/ //練出來的模型的路徑String[] parg = { "trainfile\\train2.txt", // 這個是存放測試資料"trainfile\\model_r.txt", // 調用的是訓練以後的模型"trainfile\\out_r.txt" }; // 產生的結果的檔案的路徑System.out.println("........SVM運行開始..........");// 建立一個訓練對象svm_train t = new svm_train();// 建立一個預測或者分類的對象svm_predict p = new svm_predict();t.main(arg); // 調用p.main(parg); // 調用}}
7.運行,得到預測的結果,結果存放在out_r.txt,裡面存放的是1行N列的矩陣,N對應的是預測的個數,每一個列值就是對於每一個帶預測的分類。 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.