Выбор функции: ошибка атрибута при попытке увидеть, какие столбцы были сохранены

#python #machine-learning #scikit-learn #feature-selection #sklearn-pandas

#python #машинное обучение #scikit-learn #выбор функции #sklearn-pandas

Вопрос:

Я получаю сообщение об ошибке при попытке применить выбор объекта к моей модели классификации. Я думаю, что эта ошибка простая, ее легко решить, но я не уверен, как ее исправить.

Это мой код:

 X = df[['S_LENGTH', 'S_WIDTH', 'P_LENGTH', 'P_WIDTH']].values
y = df['SPECIES'].values

feature_select = SelectKBest(f_classif, k=20).fit(X, y)
 

Но когда я пытаюсь выполнить это, чтобы просмотреть сохраненные функции…

 feature_select = X.columns[selection.get_support()]
print(features)
 

… Я получаю эту ошибку:

 AttributeError: 'numpy.ndarray' object has no attribute 'columns'
 

Любая помощь о том, как исправить эту ошибку, очень ценится.

Спасибо!

Ответ №1:

Когда вы определяете X , вы берете значения из фрейма данных pandas df . Значения являются a numpy.ndarray и как таковые не имеют никакого свойства columns .

Чтобы исправить это, вам нужно обновить свою строку feature_select = X.columns[selection.get_support()] .

Он должен читать features = df.columns[feature_select.get_support()] .

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

1. Привет — спасибо за ответ, но я получаю NameError: name 'selection' is not defined его при выполнении кода, который вы мне посоветовали использовать.

2. Привет @Bono Я отредактировал свой код, чтобы исправить это. Возникли две проблемы: 1. Вы хотите печатать features , поэтому мы присваиваем подмножество столбцов этой переменной. 2. selection не существует и должен был прочитать feature_select .