美文网首页
python 使用libsvm分析数据

python 使用libsvm分析数据

作者: 长在香蕉树上的猫 | 来源:发表于2018-01-02 00:19 被阅读0次

    一. 将数据格式转换为libsvm

    用libsvm分析数据,首先要把csv格式的数据转换成libsvm格式,网上搜到的方法如下:

    1. 网上有一个xls文FormatDataLibsvm.xls具有宏命令,可以利用其中的宏命令来实现。对于属性数据只有一二百的,这种工具简单方便。

    2. 可以利用weka来转换,用weka打开csv文件,再将文件重新保存为libsvm格式。

    由于我的数据有180万左右,所以使用了第二种方法。去weka官网下载最新版本,我的是weka-3-9-2-oracle-jvm,转换前需要提前下载libsvm的包。打开GUI界面,点击tools下的package manager,按如下界面搜索并下载。

    然后就可以转换了数据了。需要注意的是,保存时有可能没有存为.libsvm的选项,这是因为数据格式只能是numerical或者nominal,修改或移除之后就可以了。

    二. Mac电脑配置python(PyCharm)的libsvm

    1. 首先下载libsvm.zip文件  

    2. unzip一下libsvm.zip文件,用终端进入libsvm文件夹  

    3. 输入make

    4. 进入libsvm下的python文件夹  

    5. make一次libsvm->python文件夹  ,上层文件夹会出现一个libsvm.so.2文件

    现在已经编译好libsvm了,值得注意的是:libsvm.so.2是unix系统所需要的链接库,而且存在于python上一个文件夹中(即libsvm主文件夹中,而且在svmutil.py中引用libsvm.so.2时,都是看做在上一个目录下进行引入的)

    6. 进入系统所使用的python的site-packages文件夹,将libsvm.so.2复制到site-packages文件夹中(本机为/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages)

    7. 在该文件夹下建立文件夹libsvm,进入libsvm文件夹,新建__init__.py文件(这一步十分重要,因为libsvm.so.2在上一层文件夹中,因此该libsvm文件夹将会被看做一个python工作区,而__init__.py对于python工作区来说是必须的)

    8. 将libsvm->python文件夹下的svm.py、svmutil.py都复制到这个新建的libsvm文件夹中。

    按道理说,这样就成功了,但是当我用PyCharm运行from libsvm import svmutil时,出现了如下问题:

    ModuleNotFoundError: No module named 'svm'

    查看svmutil.py,发现有如下代码:

    from svm import *  

    from svm import __all__ as svm_all 

    因为当前路径不在系统路径下,编译器不知道去哪里找svm.py,所以修改上述代码为:

    from libsvm.svm import *  

    from libsvm.svm import __all__ as svm_all 

    就可以用from libsvm.svmutilimport *运行啦。

    三、一个简单例子

    这里使用了一个最简单的栗子。

    from libsvm.svmutil import *

    y,x=svm_read_problem('train.libsvm')  # 训练数据

    yt,xt=svm_read_problem('test.libsvm')  # 测试数据

    m = svm_train(y[:37000], x[:37000])  # 使用前37000个数据训练

    p_label,p_acc,p_val=svm_predict(y[-1700:],x[-1700:],m)  # 使用后1700个数据测试

    相关文章

      网友评论

          本文标题:python 使用libsvm分析数据

          本文链接:https://www.haomeiwen.com/subject/nzbxnxtx.html