我正在使用libsvm进行二进制分类..我想尝试使用grid.py,因为它据说可以改善结果..我在不同的终端中为五个文件运行此脚本,并且脚本已运行超过12个小时..
现在是我的5个终端的状态:
[root@localhost tools]# python grid.py sarts_nonarts_feat.txt>grid_arts.txt
Warning: empty z range [61.3997:61.3997], adjusting to [60.7857:62.0137]
line 2: warning: Cannot contour non grid data. Please use "set dgrid3d".
Warning: empty z range [61.3997:61.3997], adjusting to [60.7857:62.0137]
line 4: warning: Cannot contour non grid data. Please use "set dgrid3d".
[root@localhost tools]# python grid.py sgames_nongames_feat.txt>grid_games.txt
Warning: empty z range [64.5867:64.5867], adjusting to [63.9408:65.2326]
line 2: warning: Cannot contour non grid data. Please use "set dgrid3d".
Warning: empty z range [64.5867:64.5867], adjusting to [63.9408:65.2326]
line 4: warning: Cannot contour non grid data. Please use "set dgrid3d".
[root@localhost tools]# python grid.py sref_nonref_feat.txt>grid_ref.txt
Warning: empty z range [62.4602:62.4602], adjusting to [61.8356:63.0848]
line 2: warning: Cannot contour non grid data. Please use "set dgrid3d".
Warning: empty z range [62.4602:62.4602], adjusting to [61.8356:63.0848]
line 4: warning: Cannot contour non grid data. Please use "set dgrid3d".
[root@localhost tools]# python grid.py sbiz_nonbiz_feat.txt>grid_biz.txt
Warning: empty z range [67.9762:67.9762], adjusting to [67.2964:68.656]
line 2: warning: Cannot contour non grid data. Please use "set dgrid3d".
Warning: empty z range [67.9762:67.9762], adjusting to [67.2964:68.656]
line 4: warning: Cannot contour non grid data. Please use "set dgrid3d".
[root@localhost tools]# python grid.py snews_nonnews_feat.txt>grid_news.txt
Wrong input format at line 494
Traceback (most recent call last):
File "grid.py", line 223, in run
if rate is None: raise "get no rate"
TypeError: exceptions must be classes or instances, not str
我已将输出重定向到文件,但这些文件现在不包含任何内容.. 并且,创建了以下文件:
.out文件中只有一行信息..
“.png”文件是一些GNU PLOTS。
但是我不明白上面的GNUplots /警告传达了什么..我应该重新运行它们吗?
任何人都可以告诉我,如果每个输入文件包含大约144000行,这个脚本可能需要多长时间..
谢谢和问候
答案 0 :(得分:1)
您的数据非常庞大,有144 000行。所以这需要一段时间。我使用了你的大数据,花了一个星期才完成。如果您使用我认为您的图像,因此需要大数据,请在创建数据之前尝试调整图像大小。在调整图像大小时,您应该得到大致相同的结果。
答案 1 :(得分:1)
libSVM常见问题解答了您的问题:
问:为什么grid.py/easy.py有时会生成以下警告消息? 警告:空z范围[62.5:62.5],调整为[61.875:63.125] 注意:不能轮廓非网格数据! 没有错,请忽略这条消息。绘制轮廓时,它来自gnuplot。
作为旁注,您可以并行化grid.py操作。 libSVM工具目录README文件就此事说:
并行网格搜索
您可以通过将作业分派到a来执行并行网格搜索 共享相同文件系统的计算机集群。首先,你添加 grid.py中的机器名:
ssh_workers = [“linux1”,“linux5”,“linux5”]
然后设置您的ssh,以便身份验证无需工作 问密码。
如果相同的机器(例如,linux5)可以多次列出 它有多个CPU或有更多的RAM。如果本地机器是 最好的,你也可以放大nr_local_worker。例如:
nr_local_worker = 2
在我的Ubuntu 10.04安装中,grid.py实际上是/usr/bin/svm-grid.py
答案 2 :(得分:0)
我猜grid.py
正试图找到C(或Nu)的最佳值?
我无法回答所需的时间,但你可能想尝试这个SVM库,即使它是一个R包:svmpath。
正如那个页面所描述的那样,它将计算两类SVM分类器的整个“正则化路径”,其时间大约与使用惩罚参数C(或Nu)的一个值训练SVM所花费的时间相同。
因此,不是为具有值为x的C参数的SVM进行训练和交叉验证,而是针对C,x + 2等的值x + 1再次执行所有这些操作。您可以只训练SVM一次,然后查询其对事后C的不同值的预测性能,可以这么说。
答案 3 :(得分:0)
变化:
if rate is None: raise "get no rate"
在grid.py
中的第223行:
if rate is None: raise ValueError("get no rate")
另外,请尝试添加:
gnuplot.write("set dgrid3d\n")
在grid.py
中的这一行之后:
gnuplot.write("set contour\n")
这应该会修复您的警告和错误,但我不确定它是否有效,因为grid.py
似乎认为您的数据没有rate
。