Как tfidf преобразует тестовые данные после их подбора для обучения данных? - PullRequest
2 голосов
/ 20 июня 2019

Я использую следующий код:

pipeline = Pipeline([('vect', 
                      TfidfVectorizer( ngram_range=(1,2),
                                       stop_words="english", 
                                       sublinear_tf=True ,
                                       use_idf=True, 
                                       norm='l2' )),
                     ('reduce_dim',
                      SelectPercentile(f_classif, 90)),
                     ('clf', 
                      SVC(kernel='linear',C=1.0, 
                          probability=True, max_iter=70000, 
                          class_weight='balanced'))])

model = pipeline.fit(X_train,y_train)
model.predict(X_test)

x=vectorizer.fit_transform(X_train_text)
y=vectorizer.transform(X_test_text)

Насколько я понимаю, pipeline.fit() соответствует tfidf данным поезда, а когда model.predict() вызывается на X_test, он выполняет преобразование tfidf только на основе данных поезда.

Поскольку tf idf работает, получая частоту слов в документе и корпусе, мне интересно, что происходит ниже в функциях .fit_transform и .transform.

Ответы [ 2 ]

1 голос
/ 20 июня 2019

Здесь - это основная документация fit() и fit_transform().

. Ваше понимание работы правильное.При тестировании параметры устанавливаются на tf-idf Vectorizer.Эти параметры сохраняются и используются позже для простого преобразования данных тестирования.

  • Данные обучения - fit_transform()
  • Данные тестирования - transform()

Если вы хотите взглянуть на внутреннюю работу, вы должны взглянуть на исходный код для того же самого.

1 голос
/ 20 июня 2019

1) довольно близко к вашему вопросу вы можете найти здесь: В чем разница между TfidfVectorizer.fit_transfrom и tfidf.transform?

2) преобразование tfidf выполняется внутри fit-transform, predict здесь не соответствует векторизатору tfidf, поскольку у него нет такой функции, это метод SVC.

...