libsvm安装_基于python(pycharm)的libsvm遥感影像分类(一)安装

libsvm安装_基于python(pycharm)的libsvm遥感影像分类(一)安装_第1张图片

好久没有写文章了,最近一个月研究方向出现了比较大的变化,目前还是在做day time light,但是考虑到研究尺度的问题,决定选用分辨率比较高的珞珈一号数据。啊其实这跟今天的文章一点关系都没有。。。

libsvm是一个比较好用的svm分类器的软件包,用作遥感图像的分类问题一般都是用matlab版的,但是我用python比较多,所以整理一下python下的libsvm处理遥感影像的分类问题。

首先,要在python里安装libsvm,网上教程很多,但是似乎都不太一样。。。我在安装的过程中也遇到了一些乱七八糟的问题,为使有迹可循,便作文以记之。

我认为之所以python下装libsvm问题那么多是因为这件事会受到python版本的不同、Python位数的不同、计算机位数的不同、libsvm位数不同甚至python编译器不同的影响,所以此文是基于python3.7,64位(后改成32位)、计算机64位、pycharm的教程。

行文顺序即本人操作顺序,就是遇见问题—解决问题—遇见问题—解决问题的过程

首先在台湾大学林智仁教授的而官网上下载libsvm的库

LIBSVM -- A Library for Support Vector Machines​www.csie.ntu.edu.tw
libsvm安装_基于python(pycharm)的libsvm遥感影像分类(一)安装_第2张图片

现在最新的已经更到3.24了,随便放个地方解压。市面上的教程一般分三步

1、Libsvm整个放入Python的包目录Libsite-packages,

2、在libsvmwindows,找到libsvm.dll文件,复制到C:WindowsSystem32文件夹下

3、在libsvm根目录和python子目录下中分别新建名为__init__.py的空文件,这两个空文件将标识所在的目录为python包可以直接导入。然后为了方便引用,将libsvm-python-svmutil、svm和commonutil三个py文件也copy进site-packages。

ok教程到这里就万事大吉了,运行示例一

from libsvm.python.svmutil import *
from libsvm.python.svm import *
    
y, x = [1,-1], [{1:1, 2:1}, {1:-1,2:-1}]
prob  = svm_problem(y, x)
param = svm_parameter('-t 0 -c 4 -b 1')
model = svm_train(prob, param)
yt = [1]
xt = [{1:1, 2:1}]
p_label, p_acc, p_val = svm_predict(yt, xt, model)
print(p_label)

这里,我报了个错

OSError: [WinError 193] %1 不是有效的 Win32 应用程序

okk一通百度,可能是我win10 x64 装了64位的python,不能有效load32位的dll,要换成32位的python,据我了解,32位的python是兼容64位的,跟64位的系统也是匹配的。

到python官网上,下载跟我以前一样版本3.7.3的32位,介个

libsvm安装_基于python(pycharm)的libsvm遥感影像分类(一)安装_第3张图片

把pycharm跟新装的python配好

OK再试一下

from svmutil import *

报错:Exception: LIBSVM library not found.

继续百度,可能是libsvm包里的windowslibsvm.dll版本是64的(刚才不还说64位的Python识别不了32的dll吗?!囧)配不上我32位的python

去python万能库里找一个32位的libsvm.dll

Python Extension Packages for Windows​www.lfd.uci.edu

cp后面跟的是python版本,所以找cp37,介个

libsvm安装_基于python(pycharm)的libsvm遥感影像分类(一)安装_第4张图片

把这个whl文件装上,开cmd

 pip install ....libsvm-3.23-cp37-cp37m-win32.whl  #..为.whl文件的存放路径

现在这个32位的libsvm被装在python安装目录下的Libsite-packages文件夹中,有一个libsvm-3.21.dist-info文件夹,你点开会发现里面都是些说明文件。还是在这个路径下面,你能找到一个刚装上的libsvm.dll,把他替换到libsvmwindows里,记得把刚才粘贴到C:WindowsSystem32文件夹下的dll也给换了。

感觉现在应该真的万事大吉了,再试一下发现pycharm里根本识别不了libsvm.python.svmutil啊!反复确认检查目录没错啊,各种py也在里面啊。就是调不出来。。。

去python自带的IDLE里试一下,输入from svmutil import *完全没问题。。。okk是pycharm的锅,再研究一下

原来是libsvm库没整到pycharm里,所以在pycharm中运行,必须要将包复制到你自己设置的pycharm项目目录venvLibsite-packages里,就是这个地方

libsvm安装_基于python(pycharm)的libsvm遥感影像分类(一)安装_第5张图片

ojbk再跑一下示例代码

from libsvm.python.svmutil import *
from libsvm.python.svm import *
y, x =[1,-1],[{1:1,2:2},{1:1,2:0}]
prob = svm_problem(y, x)
param = svm_parameter('-t 0 -c 4 -b 1')
model = svm_train(prob, param)
yt = [1]
xt = [{1:2,2:3}]
p_label, p_acc, p_val = svm_predict(yt, xt, model)
print(p_label)
D:pythonpycharmprojectvenvScriptspython.exe D:/python/pycharmproject/text.py
*
optimization finished, #iter = 1
nu = 0.125000
obj = -0.500000, rho = 1.000000
nSV = 2, nBSV = 0
Total nSV = 2
*
optimization finished, #iter = 1
nu = 0.125000
obj = -0.500000, rho = 1.000000
nSV = 2, nBSV = 0
Total nSV = 2
*
optimization finished, #iter = 1
nu = 0.125000
obj = -0.500000, rho = 1.000000
nSV = 2, nBSV = 0
Total nSV = 2
*
optimization finished, #iter = 1
nu = 0.125000
obj = -0.500000, rho = 1.000000
nSV = 2, nBSV = 0
Total nSV = 2
Model supports probability estimates, but disabled in predicton.
Accuracy = 100% (1/1) (classification)
[1.0]

Process finished with exit code 0

终于可以了啊!热泪盈眶!

参考链接

【转载】64位win7,32位python下安装libsvm​www.jianshu.com
3a5d5ac35203a7e087df62d52421a344.png
https://blog.csdn.net/answer100answer/article/details/80071491​blog.csdn.net

The end

你可能感兴趣的:(libsvm安装,matlab相关系数影像匹配,python,accuracy,python,win32选取文件夹)