Почему мы не преобразуем X_test при использовании конвейера - PullRequest
1 голос
/ 30 января 2020

Я видел в статье https://towardsdatascience.com/multi-class-text-classification-with-sklearn-and-nltk-in-python-a-software-engineering-use-case-779d4a28ba5

   X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.25)

Шаг 1: вместо выполнения этих шагов по одному, мы можем использовать конвейер, чтобы завершить их все сразу

      pipeline = Pipeline([('vect', tfidf),
                 ('clf', RandomForestClassifier())])

Шаг 2 подгоняет нашу модель и сохраняет ее в рассоле для последующего использования

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

Обычно, если мы делаем это вручную

   X_train= tfidf.fit_transform(X_train)
   X_test=tfidf.transform(X_test)
   model=RandomForestClassifier()
   model.fit(X_train,y_train)
   prediction=model.predict(X_test)

Мой вопрос: если Я следую за статьей и выполняю эти коды на шаге 2, мне не хватает этого кода

   X_test=tfidf.transform(X_test)

Я не вижу, как автор преобразует X_test. Он просто использует оригинальный X_test. Является ли автор правдой?

После

1 Ответ

1 голос
/ 30 января 2020

Мой вопрос: если я следую статье и выполняю эти коды на шаге 2, могу ли я пропустить этот код

Нет, автор правильный.

При вызове model.predict() автор использует функции класса Pipeline predict() и , как вы можете видеть в документах ...

Применить преобразования к данным, и прогнозировать с помощью окончательной оценки

Таким образом, X_test сначала преобразуется, а затем используется для прогнозирования целевой переменной.

...