Сколько времени занимает grid.py для запуска? - PullRequest
1 голос
/ 10 марта 2010

Я использую 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 ]

1 голос
/ 04 апреля 2011

faq libSVM говорит на ваш вопрос:

В: Почему grid.py/easy.py иногда генерирует следующее предупреждающее сообщение? Предупреждение: пустой диапазон z [62.5: 62.5], настройка на [61.875: 63.125] Обратите внимание: не может очерчивать данные без сетки! Нет ничего плохого, пожалуйста, не обращайте внимания на сообщение. Именно из гнуплота при рисовании контура.

В качестве примечания вы можете распараллелить ваши операции grid.py. В файле README каталога инструментов libSVM есть следующее:

Параллельный поиск по сетке

Вы можете проводить параллельный поиск по сетке, отправляя задания на кластер компьютеров, которые используют одну файловую систему. Сначала вы добавляете имена машин в grid.py:

ssh_workers = ["linux1", "linux5", "linux5"]

и затем настройте ваш ssh так, чтобы аутентификация работала без спрашиваю пароль.

Один и тот же компьютер (например, linux5 здесь) может быть указан несколько раз, если у него несколько процессоров или больше оперативной памяти. Если локальная машина является лучше всего также увеличить nr_local_worker. Например:

nr_local_worker = 2

В моей установке Ubuntu 10.04 grid.py на самом деле /usr/bin/svm-grid.py

1 голос
/ 17 августа 2010

Ваши данные огромны, 144 000 строк. Так что это займет некоторое время. Я использовал большие данные, такие как ваши, и это заняло до недели, чтобы закончить. Если вы используете изображения, которые, как я полагаю, вам нужны, то есть большие данные, попробуйте изменить размер изображения перед созданием данных. Вы должны получить примерно те же результаты с измененными размерами ваших изображений.

0 голосов
/ 15 марта 2010

Изменение:

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.

0 голосов
/ 10 марта 2010

Я думаю, grid.py пытается найти оптимальное значение для C (или Nu)?

У меня нет ответа на количество времени, которое потребуется, но вы можете попробовать эту библиотеку SVM, даже если это пакет R: svmpath .

Как описано на этой странице, он вычислит полный «путь регуляризации» для классификатора SVM из двух классов примерно за столько же времени, сколько требуется для обучения SVM, используя одно значение параметра штрафа C (или Nu).

Таким образом, вместо обучения и выполнения перекрестной проверки для SVM со значением x для вашего параметра C, а затем повторения всего этого для значения x + 1 для C, x + 2 и т. Д. Вы можете просто обучить SVM один раз, затем запросите его прогнозную эффективность для различных значений C, так сказать, постфактум.

...