【机器学习】libsvm python开发环境搭建与测试

1、前言。

由于项目需要,打算使用libsvm进行模式识别的训练。网上有MATLAB版本、c++版本、java版本的、python版本的。由于python的易用加上自己

之前也弄过python,所以最后选择了Python版本。

2、环境搭建(64bit windows)。

2.1、首先说明,本文的环境为win7,python为2.7.9 AMD64bit。

libsvm的github库  libsvm百度云链接

上面2个文件是同一个,如果都失效,请邮件联系hustligang@163.com

2.2、可以参考该链接libsvm for python使用,学者怎么使用。简单罗列如下:

(1)将上面下载的包放在Python的如下目录Lib\site-packages,并对于各个子目录建立空的__init__.py文件。如果不明白,请搜索学习python的

site-packages 与__init__.py的作用。

(2)然后在你的python环境下执行from libsvm.python.svmutil import *,查看是否有报错,如果没有,证明ok。

2.3、以上都是64bit的环境,我们查看\Lib\site-packages\libsvm\windows就可以发现里面的链接文件都是64bit的。如果遇到32bit环境的情况请查看

如下链接64位win7,32位python下安装libsvm

2.4、安装图像处理相关的python包。

(1)安装64bit的numpy,路径如下:numpy-MKL-1.8.0.win-amd64-py2.7.rar,如果链接失效或者需要32bit,请联系hustligang@163.com

(2)安装64bit的Image Lib,文件如下PIL-fork-1.1.7.win-amd64-py2.7.exe

(3)安装64bit的opencv。python2.7与opencv2.4安装配置

3、环境搭建(32bit python centos64bit)

由于某些原因,要将逻辑移植到linux上去。项目的linux系统是centos64bit。我们知道centos已经深刻定制了python2.6。所以我们要先将python2.6换成2.7的。

3.1、下载python2.7.9的二进制文件,pytho2.7.9

3.2、解压安装,命令如下

tar -xvf Python-2.7.6.tgz

cd Python-2.7.6

./configure –prefix=/usr/local/python2.7

make

make install


3.3、【这种方式已经放弃】创建链接来使系统默认python变为python2.7

ln -fs /usr/local/python2.7/bin/python2.7 /usr/bin/python


这样,我们每次默认执行的python就是2.7.9了通过python -V可以检测。

(以上升级为python2.7的方法被放弃了,采用沙盒virtualenv的环境来实现)


3.3、将/usr/bin/下的python的软连接改为指向 python2.6,重新开始安装virtualenv。

我们在/tmp/目录下mkdir一个目录python2.7,我们以后就进入这个目录进行python2.7的相关环境的开发工作。

cd /tmp/python2.7/

virtualenv –python=/usr/local/python2.7/bin/python2.7 env2.7

就这样在目录/tmp/python2.7/下创建了一个python2.7的开发环境。


3.4、以后直接:

cd /tmp/python2.7/env2.7/

source bin/activate

这样就实际上是在python2.7下操作。


需要注意的是,如果使用的yum安装,默认还是安装在python2.6下,如果是沙河环境中python setup.py是安装在python2.7下。


沙河环境的本质实际上是将原生的python2.7做了一份拷贝过来,以后安装的东西,都是在env2.7下。

(所有以下所有路径,都要自动改为沙河的路径,初学者切记要灵活应变。)

 

virtualenv的参考使用

3.5、修改yum配置(否则yum无法正常运行)

vi /usr/bin/yum

将第一行的#!/usr/bin/python修改为系统原有的python版本地址#!/usr/bin/python2.6


3.6、现在安装libsvm,libsvm的python接口在linux上的安装

依照上面1-4的步骤,在第5步有以下不同:

  1. $ sudo cp *.py /usr/local/python2.7/lib/python2.7/site-packages  
  2. $ cd ..  
  3. $ sudo cp libsvm.so.2 /usr/local/python2.7/lib/python2.7

主要是由于二进制编译的不同带来的。

3.7、安装Image模块。

先下载:在 http://www.pythonware.com/products/pil/index.htm 下载Imaging-1.1.7.tar.gz

tar -zxvf Imaging-1.1.7.tar.gz

cd Imaging-1.1.7

python setup.py build_ext -i

python setup.py install

这样就安装完成了,接下来就是测试一下:

运行python,然后“import Image”,如果没有报错应该就OK了

3.7.1、但是可以载入Image模块,不代表完全没有问题了。我在测试过程中,经常出现如下问题:

*** JPEG not support available

上网查询得必须要安装如下:

yum install zlib zlib-devel 
yum install libjpeg libjpeg-devel 
yum install freetype freetype-devel

此时再次进入Imaging-1.1.7

cd Imaging-1.1.7

python setup.py build_ext -i

如果到最后有如下表述:

*** TKINTER support not available
— JPEG support available
— ZLIB (PNG/ZIP) support available
— FREETYPE2 support available
*** LITTLECMS support not available

证明,是可以支持JPEG了。

不过这里有个问题是,因为系统默认的yum是安装给centos里系统自带的python2.6的。所以,只有在python2.6的系统环境下

执行上面的python setup.py build_ext -i,才会是显示支持— JPEG support available。

如果,我们是在沙河环境(python2.7)下执行python setup.py build_ext -i,还是不会显示支持jpeg。

证明系统yum安装的libjpeg libjpeg-devel等,沙盒的python2.7无法load进来。

(1)第一种方式解决:

在沙盒(virtualenv)环境下安装pip install pillow。参考解决virtualenv下安装Python PIL的support not available问题

这种方式已经试验通过。

(2)第二种方式解决:

在编译Imaging-1.1.7的过程中,修改setup.py中的配置,如下:

修改setup.py:

TCL_ROOT = “/usr/li
b64/”

JPEG_ROOT = “/usr/li
b64/”

ZLIB_ROOT = “/usr
/lib64/”

TIFF_ROOT = “/usr
/lib64/”

FREETYPE_ROOT = “/usr/li
b64/”

LCMS_ROOT = “/usr
/lib64/” 

然后再次执行:

python setup.py build_ext -i

python setup.py install

3.8、下载opencv(先暂时不要安装)。

链接如下:https://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.10/opencv-2.4.10.zip/download

以上是2.4.10的版本。其实官网的下载速度超级慢,可以参考这个OpenCV下载链接百度云同步更新

3.9、下载安装numpy。比如版本numpy 1.8.1。numpy 1.8.1

3.10、centos安装cmake.

下载安装包:wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz
安装:cd cmake-2.8.10.2

            ./bootstrap

            gmake

            gmake install

没有报错,证明,ok

3.11、开始正式安装opencv

进入解压后的opencv的目录。

cd opencv

mkdir release

cd release

cmake -D WITH_IPP=OFF -D WITH_OPENCL=OFF WITH_GTK_2_X=ON -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

sudo make install

安装完成后,你会发现在/usr/local/lib/python2.6下多了cv2.so cv.py文件,将这些文件拷贝到你的python2.7下。

这个时候,你还是需要去ln -fs /usr/local/python2.7/bin/python2.7 /usr/bin/python这样又将默认的python环境弄为了python2.7了。

结果这个时候发现之前安装的numpy、 Image模块,都没有安装在python2.7下。

要重新安装,希望将numpy、 Image模块,安装在python2.7下

4、开发需求。

标签