Как я могу заставить TFIDF Vectorizer возвращать фрейм данных pandas с соответствующими именами столбцов внутри конвейера sklearn, используемого для перекрестной проверки?
У меня есть конвейер Sklearn, где один изшаги - это векторизатор TFIDF:
class InspectPipeline(BaseEstimator, TransformerMixin):
def transform(self, x):
return x
def fit(self, x, y=None):
self.df = x
return self
pipeline = Pipeline(
[
("selector", ItemSelector(key="text_column")),
("vectorizer", TfidfVectorizer()),
("debug", InspectPipeline()),
("classifier", RandomForestClassifier())
]
)
Я создал класс InspectPipeline
, чтобы позже проверить, какие функции были переданы в классификатор (запустив pipeline.best_estimator_.named_steps['debug'].df
).Однако TfidfVectorizer возвращает разреженную матрицу, которую я получаю, когда делаю pipeline.best_estimator_.named_steps['debug'].df
.Вместо того, чтобы получать разреженную матрицу, я хотел бы получить вектор TFIDF в качестве кадра данных pandas, где имена столбцов являются соответствующими токенами tfidf.
Я знаю, что tfidf_vectorizer.get_feature_names()
может помочь узнать имена столбцов.Но как я могу включить это + преобразование разреженной матрицы в кадр данных внутри конвейера?