#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.