python 使用libsvm分析数据 | 您所在的位置:网站首页 › 茶盘款式 › python 使用libsvm分析数据 |
一. 将数据格式转换为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)的libsvm1. 首先下载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个数据测试 |
CopyRight 2018-2019 实验室设备网 版权所有 |