2016-08-02 2 views
1

Итак, я запускаю классификатор SVM (с линейным ядром и вероятностью false) из sklearn на кадре данных с примерно 120 функциями и 10 000 наблюдений. Программа требует нескольких часов для запуска и продолжает сбой из-за превышения вычислительных ограничений. Просто интересно, может ли этот dataframe быть слишком большим?Слишком много данных для SVM?

+0

Это должно быть нормально для линейного ядра (по крайней мере, с LinearSVC; не уверен в SVC с kernel = linear). Покажите нам код! – sascha

ответ

0

Вы можете попробовать изменить параметры для алгоритма.

Tips on practical use from the documentation.

Вы можете попробовать другой алгоритм, вот шпаргалка может оказаться полезной:

enter image description here

+0

Он использует линейное ядро, поэтому нет кеша ядра (используется)! – sascha

+0

Спасибо - обновил мой пост – bobo

+0

И чит-лист точно рекомендует то, что он делает (классификация <100k samples -> linear SVC). Так что с этой информацией ничего не получится. – sascha

2

Короче нет, это не слишком большой, на всех. Линейные svm могут масштабироваться намного дальше. С другой стороны, библиотека libSVC не может. Хорошая вещь, даже в scikit-learn, у вас есть масштабная реализация svm - LinearSVC, которая основана на liblinear. Вы также можете решить его с помощью SGD (также доступного в scikitlearn), который будет сходиться и для гораздо больших наборов данных.

0

Реализация основана на libsvm. Сложная временная сложность - это больше , чем квадратичная с количеством выборок, что затрудняет масштабирование до набора данных с более чем несколькими 10000 образцами.

Offical данные о sklearn svm сказал theshold 10000 образцов так SGD может быть лучше попробовать.

Смежные вопросы