Я использую sklearn.SVC на панде DataFrame для прогнозирования категориальных данных. Вектор объектов с именем "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, так что остается только «Начало отметки времени», обучение модели занимает очень много времени.
Почему один столбец целых чисел существенно сложнее обучить, чем2000+ поплавков? Это нормальное поведение? Если это так, то если бы я добавил оставшиеся 3 столбца меток времени, это заняло бы слишком много времени, чтобы вообще стоить использовать метки времени.