0

Я использую scikit-learn для классификации вопросов. У меня есть этот код:Что возвращают TfidfVectorizer и SelectPercentile?

print(features[0], '\n') 

vectorizer = TfidfVectorizer(sublinear_tf=True, max_df=0.5, 
          stop_words='english') 

features = vectorizer.fit_transform(features) 

print(features[0], '\n') 
selector = SelectPercentile(f_classif, percentile=100) 
selector.fit(features, labels) 
features = selector.transform(features).toarray() 

print(features[0]) 
print(len(features[0]), '\n') 

, который производит следующий результат:

how serfdom develop leav russia ? 

(0, 5270) 0.499265751002 
(0, 3555) 0.473352969263 
(0, 1856) 0.449852125968 
(0, 5433) 0.569476725713 

[ 0. 0. 0. ..., 0. 0. 0.] 
6743 

Первый вопрос, что же матрица, возвращаемый tfidfVectorizer означает? В документации к sklearn написано:

Изучите лексику и idf, верните матрицу терминов и документов. Это эквивалентно соответствию с последующим преобразованием, но более эффективно реализовано.

Из википедии:

показывает, какие документы содержат какие сроки и сколько раз они появляются.

Википедия пример матрицы прост, но возвращаемое значение кажется чем-то совершенно другим.

Следующая функция SelectPercentile должны возвращать список функций, которые являются наиболее важными, в зависимости от заданного процента:

Снизить X для выбранных функций.

Почему у меня есть 6743 функции? : D

P.S .: Кажется, что программа работает с точностью 89%.

EDIT: Я новичок в python и машинах, поэтому, пожалуйста, объясните это как im five.

+0

Перекрестная писал: http://stats.stackexchange.com/q/245928/2921, http://stackoverflow.com/q/40595936/781723. Пожалуйста, не публикуйте тот же вопрос на нескольких сайтах (http://meta.stackexchange.com/q/64068). У каждого сообщества должен быть честный ответ на вопрос, если никто не будет потрачен впустую. –

ответ

1

Наши компьютеры работают с числами (единственным языком, который они понимают). Итак, для обработки/анализа нашего текста нам нужен способ преобразования этого текста в числа. TfIdf (термин частота - частота обратного документа) является одним из таких методов.

«Терминная частота» (Tf) говорит о важности слова в документе на основе его частоты в документе. Но возможно, что несколько слов, которые семантически очень важны, имеют низкую частоту. Чтобы решить эту проблему, мы используем «Inverse Document Frequency» (Idf).

Это будет более полезным, если вы обратитесь к следующей ссылке, которая объясняет всю Tf-IDF в деталях:

https://janav.wordpress.com/2013/10/27/tf-idf-and-cosine-similarity/