Предсказание того, как долго будет проводиться классификация scikit-learn

Есть ли способ предсказать, сколько времени потребуется для запуска классификатора из изучения sci-kit на основе параметров и набора данных? Я знаю, милая мета, верно?

Некоторые классификаторы/комбинации параметров довольно быстры, а некоторые занимают так много времени, что я в конечном итоге просто убиваю процесс. Мне хотелось бы заранее оценить, сколько времени это займет.

В качестве альтернативы, я бы принял некоторые указания о том, как установить общие параметры для сокращения времени выполнения.

Ответы

Ответ 1

Существуют очень специфические классы классификаторов или регрессоров, которые напрямую сообщают о оставшемся времени или ходе вашего алгоритма (количество итераций и т.д.). Большинство из них можно включить, передав конструктору отдельных моделей опцию verbose=2 (любое высокое число > 1). Примечание.. Это поведение соответствует sklearn-0.14. Более ранние версии имеют немного отличающийся подробный вывод (по-прежнему полезно).

Лучшим примером этого является ensemble.RandomForestClassifier или ансамбль .GradientBoostingClassifier`, который печатает количество деревьев, построенных до сих пор и оставшееся время.

clf = ensemble.GradientBoostingClassifier(verbose=3)
clf.fit(X, y)
Out:
   Iter       Train Loss   Remaining Time
     1           0.0769            0.10s
     ...

или

clf = ensemble.RandomForestClassifier(verbose=3)
clf.fit(X, y)
Out:
  building tree 1 of 100
  ...

Эта информация о ходе работы достаточно полезна для оценки общего времени.

Тогда есть другие модели, такие как SVM, которые печатают число завершенных итераций оптимизации, но не сообщают напрямую о оставшемся времени.

clf = svm.SVC(verbose=2)
clf.fit(X, y)
Out:
   *
    optimization finished, #iter = 1
    obj = -1.802585, rho = 0.000000
    nSV = 2, nBSV = 2
    ...

Модели, такие как линейные модели, не предоставляют такую ​​диагностическую информацию, насколько я знаю.

Отметьте эту тему, чтобы узнать больше о том, что означают уровни многословности: scikit-learn fit оставшееся время