libsvm与python的使用
由于課程和課題的原因,這兩天試用了一下國(guó)立臺(tái)灣大學(xué)Chih-Chung Chang和Chih-Jen Lin編寫的libsvm函數(shù)庫(kù),發(fā)現(xiàn)的確是一款寫得很不錯(cuò)的軟件,而且上手也比較容易,用了一個(gè)晚上的時(shí)間基本搞定了libsvm的基本用法以及它和python的接口,以下的內(nèi)容均基于win32系統(tǒng),尚未在Linux下嘗試過(guò)。
首先我們需要下載libsvm,最新版是11月17日剛推出的libsvm2.83,可以在libsvm的主頁(yè)http://www.csie.ntu.edu.tw/~cjlin/libsvm/上下載得到,建議同時(shí)下載一個(gè)libsvm的初學(xué)者guide,寫得很不錯(cuò),淺顯易懂,適合初學(xué)者使用,基本的使用只需要libsvm這一個(gè)軟件即可,但如果需要使用它自帶的python腳本的話,還需要安裝python,最新版是2.5,可以在python的主頁(yè)http://www.python.org上下載。另外,libsvm自帶的兩個(gè)腳本grid.py和easy.py中均用到了繪圖工具gnuplot,因此還需要下載一個(gè)gnuplot軟件,下載地址:ftp://ftp.gnuplot.info/pub/gnuplot/,注意要下載win32版本的,比如win32的4.0版本對(duì)應(yīng)的文件應(yīng)為gp400win32.zip。
下載完成后,接下來(lái)就是安裝。其中只有python2.5需要安裝(一般默認(rèn)安裝到c:\python25下),將libsvm解壓到c:\libsvm下,將gnuplot解壓到c:\gnuplot下。將c:\python25,c:\libsvm\windows,c:\gnuplot\bin三個(gè)文件夾添加到系統(tǒng)路徑里面,方便日后使用。
安裝完畢后,進(jìn)入c:\libsvm\tools目錄下,用文本編輯器(記事本,edit都可以)修改grid.py和easy.py兩個(gè)文件,找到其中關(guān)于gnuplot路徑的那項(xiàng),根據(jù)實(shí)際路徑進(jìn)行修改,并保存。然后我們可以下載guide文章里提到的那三個(gè)數(shù)據(jù)集作為實(shí)驗(yàn)數(shù)據(jù)集,也將其放在tools目錄下,在libsvm\tools下執(zhí)行以下命令檢驗(yàn)效果:
??? python easy.py train.1 test.1
如果彈出了gnuplot的窗口并可以看到動(dòng)態(tài)的繪制圖形的過(guò)程,那么恭喜你,實(shí)驗(yàn)成功!最后輸出的結(jié)果應(yīng)該和guide文章里提到的結(jié)果類似(當(dāng)然c和g的值有可能并不和文章里的相同,但最后在測(cè)試集上的錯(cuò)誤率應(yīng)該相差不大)。執(zhí)行的過(guò)程中可能防病毒軟件會(huì)彈出提示說(shuō)rootshell之類的警告,不必理會(huì)。
接下來(lái)我們研究一下libsvm和python的接口的問(wèn)題,這個(gè)問(wèn)題我自己也困擾了很久。首先,按照l(shuí)ibsvm\python目錄下的readme文件所說(shuō),在win32環(huán)境下,我們要編譯得到svmc.dll這個(gè)文件(細(xì)心的人會(huì)發(fā)現(xiàn),libsvm已經(jīng)在\libsvm\windows\python目錄下自帶了這個(gè)文件,但它可能是為其它的python版本編譯的,為保險(xiǎn)起見,我們嘗試重新編譯它),在libsvm目錄下鍵入如下命令(以vs.net2003為例,其它版本的c++編譯器可能需要略微修改):
??? vcvars32
這個(gè)文件在C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\下,請(qǐng)確保這個(gè)路徑在你的系統(tǒng)路徑里面。此命令設(shè)置了VC++的環(huán)境變量。
鍵入以下命令:
??? nmake -f Makefile.win python
并將生成的libsvm\windows\python\svmc.dll文件復(fù)制到libsvm\python目錄下,并改名svmc.pyd(非常重要!)。
在libsvm\python目錄下鍵入以下命令以檢驗(yàn)效果:
??? python svm_test.py
如果能看到程序執(zhí)行結(jié)果,說(shuō)明libsvm和python之間的接口已經(jīng)配置完成,以后就可以直接在python程序里調(diào)用libsvm的函數(shù)了!
轉(zhuǎn)自:http://yaowt.spaces.live.com/blog/cns!7280d7d3cc41a4ab!564.entry
如果你要用easy.py的話
1.下載libsvm
2.下載pathon。因?yàn)閘ibsvm下載后的easy.py不能直接操作,需要python語(yǔ)言的支持
可以去http://www.python.org/或去網(wǎng)上搜索一下,默認(rèn)安裝
3.下載pgnuplot,一般大家下載的都是一個(gè)gp373w32文檔,里面有直接可執(zhí)行的pgnuplot.exe,不用安裝。(以前在網(wǎng)上看到的步驟都是“安裝pgnuplot”這樣的句子,讓我這個(gè)菜鳥想了好久怎么把它安裝到機(jī)子上,笨!)libsvm是用他完成繪圖的
4.修改pgnuplot在grid.py中的路徑(easy.py在執(zhí)行的過(guò)程中要調(diào)用grid.py的)
,默認(rèn)的gnuplot_exe = r"c:\tmp\gp373w32 \pgnuplot.exe",用ULtraEdit打開grid.py,修改成你自己pgnuplot.exe的路徑
5.libsvm是在DOS環(huán)境中工作的,所以打開命令提示符,我的方法比較笨,先修改路徑名到easy.py和grid.py所在的文件夾下,例如d:\livsvm\python
然后輸入:c:\python23\python easy.py heart_scale 就可以了
上面我寫的都沒有說(shuō)版本問(wèn)題,因?yàn)閘ibsvm好象有版本 兼容問(wèn)題,一般如果用python24不行的話就把python24換成python23,如果還不行的話而你又是XP系統(tǒng)的話,換個(gè)別的機(jī)子換個(gè)系統(tǒng)試試,我曾經(jīng)把各種組合試了一遍,才得出的吐血經(jīng)驗(yàn)!
另外:如果還是不行的話,建議你在easy.py和grid.py中加入一些簡(jiǎn)單的輸出語(yǔ)句看看是哪里的問(wèn)題,python語(yǔ)言的輸出語(yǔ)句很簡(jiǎn)單如:在覺得有問(wèn)題的句子前面加上 print '1',后面加上一句 print '2',看看是否1,2都能輸出(不懂python語(yǔ)言,也只知道這些了)
轉(zhuǎn)載于:https://www.cnblogs.com/me115/archive/2010/04/16/1713549.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的libsvm与python的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ie里的button标签的一个bug
- 下一篇: Python测试演讲稿收集