Ошибка атрибута: объект ‘TfidfVectorizer’ не имеет атрибута ‘get_feature_names_out’

#python #scikit-learn

#python #scikit-learn

Вопрос:

Почему я продолжаю получать эту ошибку? Я пробую и другие коды, но как только он использует get_feature_names_out функцию, он выдает эту ошибку.

Ниже приведен мой код:

 from sklearn.datasets._twenty_newsgroups import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB  # fast to train and achieves a decent F-score
from sklearn import metrics
import numpy as np

def show_top10(classifier, vectorizer, categories):
    feature_names = vectorizer.get_feature_names_out()
    for i, category in enumerate(categories):
        top10 = np.argsort(classifier.coef_[i])[-10:]
        print("%s: %s" % (category, " ".join(feature_names[top10])))

newsgroups_train = fetch_20newsgroups(subset='train')
print(list(newsgroups_train.target_names))

cats = ['alt.atheism', 'sci.space', 'rec.sport.baseball', 'rec.sport.hockey']
newsgroups_train = fetch_20newsgroups(subset='train', categories=cats)
print(list(newsgroups_train.target_names))
print(newsgroups_train.filenames.shape)

vectorizer = TfidfVectorizer()
vectors = vectorizer.fit_transform(newsgroups_train.data)
print(vectors.shape)
 

Ответ №1:

Вероятно, это связано с тем, что вы используете более старую версию scikit-learn, чем та, для которой был написан этот код.

get_feature_names_out является методом класса sklearn.feature_extraction.text.TfidfVectorizer начиная с scikit-learn 1.0. Ранее вызывался аналогичный метод get_feature_names .

Поэтому вам следует обновить свой пакет scikit-learn или использовать старый метод (не рекомендуется).

Комментарии:

1. Спасибо, чувак, я только что понял, что мой pycharm использует более старую версию sklearn.