1

我正在使用 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

我已将输出重定向到文件,但这些文件现在什么都不包含。而且,创建了以下文件:

  • sbiz_nonbiz_feat.txt.out
  • sbiz_nonbiz_feat.txt.png
  • sarts_nonarts_feat.txt.out
  • sarts_nonarts_feat.txt.png
  • sgames_nongames_feat.txt.out
  • sgames_nongames_feat.txt.png
  • sref_nonref_feat.txt.out
  • sref_nonref_feat.txt.png
  • snews_nonnews_feat.txt.out (--> 为空)

.out 文件中只有一行信息。
“.png”文件是一些 GNU PLOTS 。

但我不明白上面的 GNUplots / 警告传达了什么......我应该重新运行它们吗?

如果每个输入文件包含大约 144000 行,任何人都可以告诉我这个脚本可能需要多长时间..

谢谢并恭祝安康

4

4 回答 4

1

您的数据非常庞大,有 144 000 行。所以这需要一些时间。我使用了像你这样的大数据,最多需要一个星期才能完成。如果您使用图像,我想您是这样,因此数据很大,请在创建数据之前尝试调整图像大小。调整图像大小后,您应该得到大致相同的结果。

于 2010-08-17T10:57:08.783 回答
1

libSVM 常见问题解答解答了您的问题:

问:为什么 grid.py/easy.py 有时会产生以下警告信息?警告:空 z 范围 [62.5:62.5],调整为 [61.875:63.125] 注意:不能轮廓非网格数据!没有任何问题,请忽略该消息。绘制轮廓时来自gnuplot。

作为旁注,您可以并行化您的 grid.py 操作。libSVM 工具目录的 README 文件对此事有这样的说法:

平行网格搜索

您可以通过将作业分派到共享相同文件系统的计算机集群来执行并行网格搜索。首先,在 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

于 2011-04-03T20:51:05.133 回答
0

改变:

if rate is None: raise "get no rate"

在第 223 行中grid.py

if rate is None: raise ValueError("get no rate")

另外,尝试添加:

gnuplot.write("set dgrid3d\n")

在这一行之后grid.py

gnuplot.write("set contour\n")

这应该可以解决您的警告和错误,但我不确定它是否会起作用,因为grid.py似乎认为您的数据没有rate.

于 2010-03-15T04:07:59.580 回答
0

我想grid.py是试图找到 C(或 Nu)的最佳值?

我不知道它需要多长时间,但你可能想试试这个 SVM 库,即使它是一个 R 包:svmpath

如该页所述,它将计算一个两类 SVM 分类器的整个“正则化路径”,其时间与使用惩罚参数 C(或 Nu)的一个值训练 SVM 所需的时间差不多。

因此,与其对 C 参数的值为 x 的 SVM 进行训练和交叉验证,然后对 C、x+2 等的值 x+1 再次执行所有这些操作。您可以只训练一次 SVM,然后可以说,事后查询其对不同 C 值的预测性能。

于 2010-03-10T18:06:31.210 回答