В последнее время я пытался приспособить Регуляризованную Логистическую Регрессию к векторизованным текстовым данным. Сначала я попробовал с sklearn
, и у меня не было проблем, но потом я обнаружил, что не могу сделать вывод через sklearn, поэтому я попытался переключиться на statsmodels
. Проблема в том, что когда я пытаюсь установить logit, он продолжает работать вечно и использует около 95% моей оперативной памяти (пробовал на компьютерах с 8 и 16 ГБ ОЗУ).
Мое первое предположение было связано с размерностью, потому что я работал с матрицей 2960 x 43k. Итак, чтобы уменьшить его, я удалил биграммы и взял выборку только из 100 наблюдений, что оставляет мне матрицу 100 x 6984, что, я думаю, не должно быть слишком проблематичным.
Это небольшой пример моего кода:
for train_index, test_index in sss.split(df_modelo.Cuerpo, df_modelo.Dummy_genero):
X_train, X_test = df_modelo.Cuerpo[train_index], df_modelo.Cuerpo[test_index]
y_train, y_test = df_modelo.Dummy_genero[train_index], df_modelo.Dummy_genero[test_index]
cvectorizer=CountVectorizer(max_df=0.97, min_df=3, ngram_range=(1,1) )
vec=cvectorizer.fit(X_train)
X_train_vectorized = vec.transform(X_train)
Это дает мне поезд и набор тестов, а затем векторизует текст из X_train.
Тогда я пытаюсь:
import statsmodels.api as sm
logit=sm.Logit(y_train.values,X_train_vectorized.todense())
result=logit.fit_regularized(method='l1')
Все работает нормально до строки result
, которая работает вечно. Есть ли что-то, что я могу сделать? Должен ли я переключиться на R, если я ищу статистический вывод?
Заранее спасибо!