Почему я получаю ошибку атрибута? Как я могу это исправить?

#python #scikit-learn

#python #scikit-learn

Вопрос:

 from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

diabetes = datasets.load_diabetes()

X = diabetes.data
y = diabetes.target


X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=0)


mms = MinMaxScaler()
X_train_norm = mms.fit_transform(X_train)
X_test_norm = mms.transform(X_test)


stdsc = StandardScaler()
X_train_std = stdsc.fit_transform(X_train)
X_test_std = stdsc.transform(X_test)


LogisticRegression(penalty='l1')
lr = LogisticRegression(penalty='l1', C=1.0, multi_class='auto', solver='liblinear')
lr.fit(X_train_std, y_train)
print('Training accuracy:', lr.score(X_train_std, y_train))
print('Test accuracy:', lr.score(X_test_std, y_test))

from sklearn.ensemble import RandomForestClassifier

forest = RandomForestClassifier(n_estimators=500, random_state=1)

forest.fit(X_train, y_train)

importances = forest.feature_importances_

print(importances)

feature_labels = diabetes.columns[0:]

print(feature_labels) 
 

Это ошибка, которую я получаю. Кто-нибудь может помочь?

 KeyError                                  Traceback (most recent call last)
~/opt/anaconda3/lib/python3.8/site-packages/sklearn/utils/__init__.py in __getattr__(self, key)
     95         try:
---> 96             return self[key]
     97         except KeyError:

KeyError: 'columns'

During handling of the above exception, another exception occurred:

AttributeError                            Traceback (most recent call last)
<ipython-input-163-74a2bb3a96b9> in <module>
      9 print(importances)
     10 
---> 11 feature_labels = diabetes.columns[0:]
     12 print(feature_labels)
     13 

~/opt/anaconda3/lib/python3.8/site-packages/sklearn/utils/__init__.py in __getattr__(self, key)
     96             return self[key]
     97         except KeyError:
---> 98             raise AttributeError(key)
     99 
    100     def __setstate__(self, state):

AttributeError: columns
 

Ответ №1:

вы можете распечатать ключи столбцов, например, чем печатать любые столбцы по его ключу

 keys= diabetes.keys()
print(keys)
feature_labels = diabetes["data"]
print(feature_labels) 
 

или, если вы хотите перебирать ключи, вы можете сделать что-то вроде этого

 for key in diabetes.keys(): 
    print(key)
    feature_labels = diabetes[key ]
    print(feature_labels) 
 

Ответ №2:

Если вы хотите получить функции, он не использует столбец. Вы уже определили это выше

 X = diabetes.data
 

и, насколько я знаю, встроенный набор данных не содержит заголовка каждого столбца. вы должны определить это самостоятельно. например, с помощью библиотеки pandas