Я использую sklearn.SVC в DataFrame pandas для прогнозирования категориальных данных. Вектор функций с именем «feature_train» представляет собой один столбец времени (numpy.int64) и несколько тысяч столбцов tfidf (которые очень редко содержат значения numpy.float64):
Timestamp Start able acceptance acceptance criterion access account
113 646 0.0 0.0 0.0 0.0 0.0
342 1775 0.0 0.0 0.0 0.0 0.0
3 202 0.0 0.0 0.0 0.0 0.0
129 728 0.0 0.0 0.0 0.0 0.0
32 257 0.0 0.0 0.0 0.0 0.0
.. ... ... ... ... ... ...
140 793 0.0 0.0 0.0 0.0 0.0
165 919 0.0 0.0 0.0 0.0 0.0
180 1290 0.0 0.0 0.0 0.0 0.0
275 1644 0.0 0.0 0.0 0.0 0.0
400 2402 0.0 0.0 0.0 0.0 0.0
для справки, вот столбец, который я пытаюсь предсказать с именем «label_train»:
113 14
342 17
3 1
129 0
32 12
..
140 15
165 1
180 15
275 12
400 14
Я сразу ввожу эти две переменные в линейный SVM:
clf = svm.SVC(kernel="linear")
clf.fit(feature_train, label_train) #<-- this takes forever
Индексы не по порядку, потому что я использую функцию разделения поезд-тест. Когда я запускаю этот DataFrame через sklearn.SVC(kernel="linear"), для завершения требуется 4275 секунд, но когда я удаляю столбец «Timestamp Start», это занимает 6 секунд. Кроме того, если я удалю все столбцы tfidf, чтобы осталась только «Timestamp Start», обучение модели также займет очень много времени.
Почему один столбец целых чисел обучить значительно сложнее, чем 2000+ чисел с плавающей запятой? Это нормальное поведение? Если это так, то если бы я добавил оставшиеся 3 столбца временных меток, это заняло бы слишком много времени, чтобы вообще использовать временные метки.