Могу ли я использовать tf-idf для OneHotEcoded данных?

#python #pandas #scikit-learn #deep-learning

Вопрос:

У меня есть набор данных из 800 строк и 16 тысяч столбцов. Он находится в формате OneHotEcoding (двоичный код: 0,1). Таким образом, если значение столбца существует в строке, то строка[col] = 1, иначе = 0. Это 16 тысяч объектов в моем наборе данных. Как я могу использовать tfidf для выбора функций 5k и 10k из этого?

например, мои данные:

 ID col1 col2 col3 col4
a   0    0    1    0
b   1    0    0    0 
c   0    1    1    1 
d   0    0    0    1
 

но это для ~800 строк и 16 тыс. столбцов.
Я попробовал тематическое моделирование и выбрал 300 лучших объектов из набора данных (используя LDA), но этого было недостаточно.
Меня попросили использовать tf-idf и выбрать функции 5k из фрейма данных. (Первоначально меня попросили попробовать функции от 5 до 16 тысяч с промежуточными шагами от 500 до 1
тысячи ).
Я не понял, о чем изначально спрашивали, но хочу разобраться с использованием tf-idf для выбора функций. Тогда,может быть,можно было бы запустить то же самое для функций 6k, 7k, 8k…16k?
Любая помощь в том, какую библиотеку использовать и как ее кодировать, была бы полезна!

Ответ №1:

Вы не можете использовать формат OneHotEcoding для вычисления баллов tf-idf.

Вот формула tf-idf:

 tf-idf = tf*idf
 

tf : Количество раз, когда слово появляется в документе/Общее количество слов в документе.
idf : журнал(Количество документов/Количество документов, содержащих слово)

Как вы можете видеть, формат OneHotEcoding позволяет вычислять idf , но не может вычислять tf . Чтобы рассчитать tf , вам нужно знать, сколько раз слово появляется в документе. Однако формат OneHotEcoding учитывает слово только один раз в документе, независимо от того, сколько раз оно появляется. Например, если «apple» отображается в документе три раза, OneHotEcoding засчитывает его только как 1.

Если у вас есть исходные текстовые данные (перед преобразованием их в набор слов), вы можете использовать TfidfVectorizer в sklearn для вычисления оценок tf-idf.