如何设置plotroc.py? How to set plotroc.py?

本文详细介绍如何使用libsvm进行Caspase substrate的Cleavage site预测,包括安装配置、使用自带的Python脚本进行模型训练、参数优化及绘制ROC曲线等过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://www.sunjsp.com 2009 年我研一生活结束的这个暑假里,我开始用libsvm做Caspase substrate 的Cleavage site的预测工作,本篇日志主要介绍我在使用过程中的一些心得体会。本文的小部分内容引用我在此过程中查询搜索的内容,本日志的优点在于:下载的链接都 是好用的。步骤我已一步步实现过,可以确保每一步都是正确的。

 

 

libsvm是国立台湾大学Chih-Chung Chang和Chih-Jen Lin编写的,最新版是libsvm2.89,可以在libsvm的主页http://www.csie.ntu.edu.tw/~cjlin/libsvm/上下载得到。基本的使用只需要libsvm相关的即可,但如果需要使用它自带的python脚本的话,还需要安装python软件,另外,在libsvm的tools文件夹下自带的脚本grid.py和easy.py,(其实只要是.py文件就会用到python软件)python文件夹下的plotroc.py(该文件为我想画ROC曲线,从libsvm的网站http://ftp.cs.hacettepe.edu.tr/pub/dersler/BIL6XX/BIL_682_PR/libsvm-2.81/docs/libsvm%20tools.htm下载保存到该文件夹下的)中均用到了,因此还需要下载gnuplot软件,grid.py,easy.py,plotroc.py的功能和用法,将在后面介绍。

python下载地址:http://www.python.org/download/ 下载python 2.6.2 Windows installer ;gnuplot下载地址:http://www.mirrorservice.org/sites/download.sourceforge.net/pub/sourceforge/g/project/gn/gnuplot/gnuplot/4.2.3/下载gp423win32.zip。(这个免费又好用的下载地址,是我找了好久才找到得)。注意:gunplot要下载win32版本。

下载完成后,接下来就是安装。其中只有python2.6.2需要安装,(双击python-2.6.2.msi,一般默认安装到c:/python26下),将libsvm2.89解压到c:/libsvm下,将gnuplot解压到c:/gnuplot下。

将c:/python25,c:/libsvm/windows,c:/gnuplot/bin三个文件夹添加到系统路径里面,方便日后使用。 (本人认为是修改环境变量。一开始我没有做这一步,后来运行时出现如下的错误)具体做法为以下错误的解决方法:

错误:运行后,系统说'python'不是内部或者外部命令,也不是可运行的程序或批处理文件  

解决方法:把python的安装目录添加到系统环境变量PATH中。例如安装在 C:/Python26。
我的电脑图标上点右键 -> 属性 -> 高级 -> 环境变量,打开的对话框双击上方的PATH那行,在变量值那栏里添加上C:/Python26,注意与前面的用分号隔开。

安装完毕后,进入c:/libsvm/tools目录下,用文本编辑器(记事本,ULtraEdit都可以)修改grid.py和easy.py文件,c:/libsvm/python目录下的plotroc.py文件,找到其中关于gnuplot路径的那项,根据实际路径进行修改,并保存。然后将我们实验数据集文件(格式为Libsvm要求的格式,如果使用绘图工具gnuplot,正负样本需用+1和-1标记),也将其放在tools或python目录下。

以下进入cmd, 通过操作分别介绍easy.py,grid.py,plotroc.py文件的功能及应用的具体实现步骤:

运行—>cmd  (改变路径使用cd  路径)

easy.py是自动完成用LibSVM训练,测试的工作。

在libsvm/tools路径下执行以下命令检验效果: 

    Usage:python easy.py 训练集 测试集

如果弹出了gnuplot的窗口并可以看到动态的绘制图形的过程,那么恭喜你,实验成功!

grid.py自动搜索最优参数(分类器为:C-SVM 核函数是:RBF,使用方法是:交叉验证)

grid.py is a parameter selection tool for C-SVM classification using the RBF (radial basis function) kernel. It uses cross validation (CV) technique to estimate the accuracy of each parameter combination in the specified range and helps you to decide the best parameters for your problem.

Usage: grid.py [-log2c begin,end,step] [-log2g begin,end,step] [-v fold]  [-svmtrain pathname] [-gnuplot pathname] [-out pathname] [-png pathname] [additional parameters for svm-train] dataset

grid.py [-log2c(-log2惩罚因子的值) 起始值,终止值,步长] [-log2g(-log2gamma的值) 起始值,终止值,步长] [-v 交叉验证的重数(一般取10] [样本集的路径][gnuplot的参数][.out文件的名字,默认和样本集的名字相同,out文件中存储 c,g所有可能组合下的ACC] [.png文件的名字,默认和样本集的名字相同,.png是用图形表示了c,g所有可能组合下的ACC] [训练的一些其他参数] 数据集

如果弹出了gnuplot的窗口并可以看到动态的绘制图形的过程,那么恭喜你,实验成功!运行完生成.out和.png文件。

plotroc.py是用来画ROC曲线的,

This tool which gives the ROC (Receiver Operating Characteristic) curve and AUC (Area Under Curve) by ranking the decision values. Note that we assume labels of two classes are +1 and -1. Multi-class is not supported yet. (不支持多类问题,两类问题的类别标签要用+1,-1)

 usage :plotroc.py [-t kern_type][-c Cost][-g gamma][-m cache_size][-v cv_fold][-T testing_file] training_file
If there is no test data, "validated decision values" from cross-validation on the training data are used. Otherwise, we consider decision values of testing data using the model from the training data (without cross-validation).

运行完后可以在目录下发现生产的.png文件就是你要的ROC曲线。(想研一下学期曾为了画ROC,学过SPSS和Medcalc,感觉Libsvm扩展的这个用来画ROC的功能好神奇。)

接下来我们研究一下libsvm和python的接口的问题,首先,按照 libsvm/python目录下的readme文件所说,在win32环境下,我们要编译得到svmc.dll这个文件(其实,libsvm已经在 /libsvm/windows/python目录下自带了这个文件,但它可能是为其它的python版本编译的,为保险起见,我们尝试重新编译它),

在libsvm目录下键入如下命令(以vs.net2003为例,其它版本的c++编译器可能需要略微修改): 

 vcvars32

 这个文件在C:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/bin/下,请确保这个路径在你的系统路径里面。此命令设置了VC++的环境变量。 

在libsvm目录下键入以下命令: 

    nmake -f Makefile.win python 

并将生成的libsvm/windows/python/svmc.dll文件复制到libsvm/python目录下,并改名svmc.pyd(非常重要!)。

在libsvm/python目录下键入以下命令以检验效果:

     python svm_test.py 

如果能看到程序执行结果,说明libsvm和python之间的接口已经配置完成,以后就可以直接在python程序里调用libsvm的函数了!

另外:如果还是不行的话,建议你在easy.py和grid.py中加入一些简单的输出语句看看是哪里的问题,python语言的输出语句很简单 如:在觉得有问题的句子前面加上 print '1',后面加上一句 print '2',看看是否1,2都能输出(不懂python语言,也只知道这些了)

将libsvm-2.89/windows/python目录下的svmc.pyd文件复制到C:/Python26/DLLs;将libsvm- 2.89/python目录下的svm.py放到C:/Python26/Lib目录里。(貌似分号前的有用,分号后的无用。)

 
 
 

http://blog.163.com/ldd1208welcome@126/blog/static/78267630200972232330688/转自:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值