Ошибка: «AttributeError: объект« DataFrame »не имеет атрибута« source »» ИЛИ «KeyError:« source »» - PullRequest
0 голосов
/ 01 марта 2020

Цель: Чтобы отобразить важность функции

Ошибка 1: AttributeError: у объекта 'DataFrame' нет атрибута 'source'

Ошибка 2: KeyError: 'source'

Где?: names = [data.source [i] для i в индексах] ИЛИ names = [data ['source'] == i для i в индексах]

Я не эксперт по python и pandas, не могли бы вы помочь мне исправить этот кусок кода? А также, если совет по синтаксису, чтобы избежать подобных ошибок в будущем?

Код:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = pd.read_csv('data_with_anomalies.csv')
source = pd.DataFrame(data)
target = data['Anomaly']
source = source.drop(columns = ['Anomaly_Tag'])

model = ExtraTreesClassifier()
model.fit(source, target)
print(model.feature_importances_)

importances = model.feature_importances_

# Below chunk is referred from another question on stackoverflow
# Sort feature importances in descending order
indices = np.argsort(importances)[::-1]

Получение ошибки 1 со строкой ниже:

# Rearrange feature names so they match the sorted feature importances
names = [data.source[i] for i in indices]

ИЛИ, если я изменю его ниже, я получу ошибку 2:

names = [data['source'] == i for i in indices]

plt.figure()
plt.title("Feature Importance")
plt.bar(range(source.shape[1]), importances[indices])
plt.xticks(range(source.shape[1]), names, rotation=90)
plt.show()

1 Ответ

1 голос
/ 02 марта 2020

Попробуйте:

names = data.reindex(indices)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...