1. 程式人生 > >win10環境下python版libsvm的安裝

win10環境下python版libsvm的安裝

href tools scale 比較 sel .lib dll log python使用

1.前言

由於畢業設計需要用到libsvm,所以最近專心於配置libsvm,曾經嘗試過在matlab中安裝,但是沒有成功。最終在Python環境中完成安裝。

2.LIBSVM介紹

LIBSVM 是臺灣大學林智仁(Lin Chih-Jen)教授等開發設計的一個操作簡單、易於使用、快速有效的 SVM 軟件包。可以解決分類問題(包括 C-SVC、n-SVC )、回歸問題(包括 e-SVR、n-SVR )以及分布估計(one-class-SVM)等問題,提供了線性、多項式、徑向基和 S 形函數四種常用的核函數供選擇,可以有效地解決多類問題、交叉驗證選擇參數、對不平衡樣本加權、多類問題的概率估計等。LIBSVM 不但提供了編譯好的 Windows 系統執行文件,還提供了源代碼,方便改進、修改以及在其它操作系統上應用。LIBSVM 最大的特點就是對 SVM 所涉及的參數調節相對比較少,提供了很多的默認參數,因而使用起來非常方便。SVM 用於模式識別或回歸時, SVM 方法及其參數、核函數及其參數的選擇,目前國際上還沒有形成一個統一的模式, 也就是說最優 SVM 算法參數選擇還只能是憑借經驗、實驗對比、大範圍的搜尋或者利用軟件包提供的交互檢驗功能進行尋優的功能。

LIBSVM 可以在 http://www.csie.ntu.edu.tw/~cjlin/libsvm/index.html#download 處免費獲得。

3.LIBSVM的安裝

3.1 下載libsvm安裝包

下載地址:http://www.csie.ntu.edu.tw/~cjlin/libsvm/index.html#download
將下載好的libsvm進行解壓,解壓到適當的文件夾中,本人解壓到了:D:\libsvm-3.22中。

3.2 對libsvm.dll進行適配處理

1.本人電腦使用的是win10 64位系統,python使用的是Python3.6.3(anaconda 3 5.0.1 64bit)版本,並且沒有安裝VS。所以到Python的一些網站上下載對應版本的libsvm。下載地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#scikit-umfpack

2.由於本人python版本是3.6.3,操作系統是64位的,所以下載對應的libsvm為libsvm-3.22-cp36-cp36m-win_amd64.whl。
3.打開anaconda prompt,進入文件所在路徑,使用pip安裝libsvm-3.22-cp36-cp36m-win_amd64.whl。

pip install libsvm-3.22-cp36-cp36m-win_amd64.whl

4.安裝成功後進入python目錄下的一個文件夾site-packages下找到新生成的libsvm.dll。將其放置到C:\windows\system32。

3.3 配置path環境變量

將解壓的libsvm文件夾下的tools和windows所在的路徑D:\libsvm-3.22\tools和D:\libsvm-3.22\windows添加到path的環境變量中。

3.4 安裝gnuplot

由於許多步驟需要調用 gnuplot 來繪制圖形,所以首先需要安裝 gnuplot。
下載地址: https://sourceforge.net/projects/gnuplot/files/gnuplot/
安裝默認安裝即可。記住安裝路徑,本人安裝路徑為D:\Program Files\gnuplot

3.5 修改easy.py和grid.py

在tools文件夾中的兩個文件easy.py和grid.py中,有關gnuplot對應的路徑需要更改。
在easy.py中設置

gnuplot_exe = r"D:\Program Files\gnuplot\bin\gnuplot.exe"

在grid.py中設置

self.gnuplot_pathname = r'D:\Program Files\gnuplot\bin\gnuplot.exe'

至此,Python版LIBSVM安裝成功。

4.LIBSVM的簡單使用

>>> import os
>>> os.chdir('D:\libsvm-3.22\python')
>>> from svmutil import *
>>> y,x=svm_read_problem('../heart_scale')
>>>m=svm_train(y[:200],x[:200],'-c 4')
>>> p_label,p_acc,p_val=svm_predict(y[200:],x[200:],m)

參考鏈接:
http://baijiahao.baidu.com/s?id=1580049402237436090
http://xiaosheng.me/2016/06/06/article15/
http://blog.csdn.net/lqhbupt/article/details/8599295

win10環境下python版libsvm的安裝