用LIBSVM做回归和预测
生活随笔
收集整理的這篇文章主要介紹了
用LIBSVM做回归和预测
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
<1> 下載Libsvm、Python和Gnuplot。我用的版本分別是:Libsvm(2.8.1),Python(2.4),Gnuplot(3.7.3)。注意:Gnuplot一定要用3.7.3版,3.7.1版的有bug.
<2> 修改訓練和測試數據的格式(可以自己用perl編個小程序): 目標值 第一維特征編號:第一維特征值 第二維特征編號:第二維特征值 ... ... 例如: 2.3 1:5.6 2:3.2 表示訓練用的特征有兩維,第一維是5.6,第二維是3.2,目標值是2.3
注意:訓練和測試數據的格式必須相同,都如上所示。測試數據中的目標值是為了計算誤差用
<3> 分別使用Libsvm中的Windows版本的工具svmscale.exe進行訓練和測試數據的歸一化,svmtrain.exe進行模型訓練,svmpredict.exe進行預測 (1)svmscale.exe的用法:svmscale.exe feature.txt feature.scaled 默認的歸一化范圍是[-1,1],可以用參數-l和-u分別調整上界和下屆,feature.txt是輸入特征文件名 輸出的歸一化特征名為feature.scaled (2)svmtrtrain.exe訓練模型 我習慣寫個批處理小程序,處理起來比較方便。例如svm_train.bat中訓練語句為: svmtrain.exe -s 3 -p 0.0001 -t 2 -g 32 -c 0.53125 -n 0.99 feature.scaled 訓練得到的模型為feature.scaled.model
具體的參數含義可以參考幫助文檔。這里-s是選擇SVM的類型。對于回歸來說,只能選3或者4,3表示epsilon-support vector regression, 4表示nu-support vector regression。-t是選擇核函數,通常選用RBF核函數,原因在“A Practical Guide support vector classification”中已經簡單介紹過了。-p盡量選個比較小的數字。需要仔細調整的重要參數是-c和-g。除非用 gridregression.py來搜索最優參數,否則只能自己慢慢試了。
用gridregression.py搜索最優參數的方法如下: python.exe gridregression.py -svmtrain H:/SVM/libsvm-2.81/windows/svmtrain.exe -gnuplot C:/gp373w32/pgnuplot.exe -log2c -10,10,1 -log2g -10,10,1 -log2p -10,10,1 -v 10 -s 3 -t 2 H:/SVM/libsvm-2.81/windows/feature.scaled > gridregression_feature.parameter
注意:-svmtrain是給出svmtrain.exe所在路徑,一定要是完整的全路徑 -gnuplot是給出pgnuplot.exe所在路徑。這里要用pgnuplot.exe這種命令行形式的,不要用wgnupl32.exe,這個是圖形界面的。 -log2c是給出參數c的范圍和步長 -log2g是給出參數g的范圍和步長 -log2p是給出參數p的范圍和步長 上面三個參數可以用默認范圍和步長 -s選擇SVM類型,也是只能選3或者4 -t是選擇核函數 -v 10 將訓練數據分成10份做交叉驗證。默認為5 最后給出歸一化后訓練數據的全路徑 搜索最優參數的過程寫入文件gridregression_feature.parameter(注意別少了這個>符號啊)
根據搜索到的最優參數修改feature.scaled.model中的參數 (3)用svmpredict.exe進行預測 svmpredict.exe feature_test.scaled feature.scaled.model feature_test.predicted 其中feature_test.scaled是歸一化后的測試特征文件名,feature.scaled.model是訓練好的模型,SVM預測的值在feature_test.predicted中。?
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/lyflower/archive/2008/08/04/2764822.aspx
<2> 修改訓練和測試數據的格式(可以自己用perl編個小程序): 目標值 第一維特征編號:第一維特征值 第二維特征編號:第二維特征值 ... ... 例如: 2.3 1:5.6 2:3.2 表示訓練用的特征有兩維,第一維是5.6,第二維是3.2,目標值是2.3
注意:訓練和測試數據的格式必須相同,都如上所示。測試數據中的目標值是為了計算誤差用
<3> 分別使用Libsvm中的Windows版本的工具svmscale.exe進行訓練和測試數據的歸一化,svmtrain.exe進行模型訓練,svmpredict.exe進行預測 (1)svmscale.exe的用法:svmscale.exe feature.txt feature.scaled 默認的歸一化范圍是[-1,1],可以用參數-l和-u分別調整上界和下屆,feature.txt是輸入特征文件名 輸出的歸一化特征名為feature.scaled (2)svmtrtrain.exe訓練模型 我習慣寫個批處理小程序,處理起來比較方便。例如svm_train.bat中訓練語句為: svmtrain.exe -s 3 -p 0.0001 -t 2 -g 32 -c 0.53125 -n 0.99 feature.scaled 訓練得到的模型為feature.scaled.model
具體的參數含義可以參考幫助文檔。這里-s是選擇SVM的類型。對于回歸來說,只能選3或者4,3表示epsilon-support vector regression, 4表示nu-support vector regression。-t是選擇核函數,通常選用RBF核函數,原因在“A Practical Guide support vector classification”中已經簡單介紹過了。-p盡量選個比較小的數字。需要仔細調整的重要參數是-c和-g。除非用 gridregression.py來搜索最優參數,否則只能自己慢慢試了。
用gridregression.py搜索最優參數的方法如下: python.exe gridregression.py -svmtrain H:/SVM/libsvm-2.81/windows/svmtrain.exe -gnuplot C:/gp373w32/pgnuplot.exe -log2c -10,10,1 -log2g -10,10,1 -log2p -10,10,1 -v 10 -s 3 -t 2 H:/SVM/libsvm-2.81/windows/feature.scaled > gridregression_feature.parameter
注意:-svmtrain是給出svmtrain.exe所在路徑,一定要是完整的全路徑 -gnuplot是給出pgnuplot.exe所在路徑。這里要用pgnuplot.exe這種命令行形式的,不要用wgnupl32.exe,這個是圖形界面的。 -log2c是給出參數c的范圍和步長 -log2g是給出參數g的范圍和步長 -log2p是給出參數p的范圍和步長 上面三個參數可以用默認范圍和步長 -s選擇SVM類型,也是只能選3或者4 -t是選擇核函數 -v 10 將訓練數據分成10份做交叉驗證。默認為5 最后給出歸一化后訓練數據的全路徑 搜索最優參數的過程寫入文件gridregression_feature.parameter(注意別少了這個>符號啊)
根據搜索到的最優參數修改feature.scaled.model中的參數 (3)用svmpredict.exe進行預測 svmpredict.exe feature_test.scaled feature.scaled.model feature_test.predicted 其中feature_test.scaled是歸一化后的測試特征文件名,feature.scaled.model是訓練好的模型,SVM預測的值在feature_test.predicted中。?
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/lyflower/archive/2008/08/04/2764822.aspx
總結
以上是生活随笔為你收集整理的用LIBSVM做回归和预测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: weka libsvm
- 下一篇: LibSVM学习(六)——easy.py