【机器学习】libsvm python开发环境搭建与测试
1、前言。
由于项目需要,打算使用libsvm进行模式识别的训练。网上有MATLAB版本、c++版本、java版本的、python版本的。由于python的易用加上自己
之前也弄过python,所以最后选择了Python版本。
2、环境搭建(64bit windows)。
2.1、首先说明,本文的环境为win7,python为2.7.9 AMD64bit。
上面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下。
(所有以下所有路径,都要自动改为沙河的路径,初学者切记要灵活应变。)
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步有以下不同:
- $ sudo cp *.py /usr/local/python2.7/lib/python2.7/site-packages
- $ cd ..
- $ 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:
JPEG_ROOT = “/usr/li
ZLIB_ROOT = “/usr
TIFF_ROOT = “/usr
FREETYPE_ROOT = “/usr/li
LCMS_ROOT = “/usr
然后再次执行:
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、开发需求。