как определить порядок значений от max до min в оценке важности объектов с помощью matplotlib?

#python #matplotlib #random-forest

#python #matplotlib #случайный лес

Вопрос:

Я вычисляю оценку импотенции для моего набора данных с 30 объектами и i столбцом предполагаемого класса. И построил график. Но значения в массиве упорядочены не по значению оценки импотенции функций. Им управляет переменная класса Witch в numpy или matplotlib?

 from pandas import read_csv, read_excel

from sklearn.ensemble import ExtraTreesClassifier

# load data


names = ['8,oct18', '3,oct18', '4,oct18', '3,sen17', '3,sen17', '4,sen17', '8,sen17', '3,aug17', 
         '8,aug17','4,aug17', '3,apr17', '4,apr17', '8,apr17', '3,jan17', '8,jan17', '4,jan17', 'jan19', 'jan19',
        'jan19', 'may18', 'may18', 'may18', '11, sen17', '11, dec2017', '12,dec2017', '11,aug 2017', 
         '12,aug 2017', '11, apr 2017', '12, apr 2017', '30t', 'class']

dataframe = read_excel("/home/qw/myprojects/valuevo/data.xlsx", names = names)

array = dataframe.values

X = array[:,0:30]

Y = array[:,30]

# feature extraction

model = ExtraTreesClassifier()

model.fit(X, Y)

print(names, '=', model.feature_importances_)
  
 import matplotlib.pyplot as plt
import numpy as np
#case x,y were 31x30 before this:
names = ['8,oct18', '3,oct18', '4,oct18', '3,sen17', '3,sen17', '4,sen17', '8,sen17', '3,aug17', 
         '8,aug17','4,aug17', '3,apr17', '4,apr17', '8,apr17', '3,jan17', '8,jan17', '4,jan17', 'jan19', 'jan19',
        'jan19', 'may18', 'may18', 'may18', '11, sen17', '11, dec2017', '12,dec2017', '11,aug 2017', 
         '12,aug 2017', '11, apr 2017', '12, apr 2017', '30t']
x = np.array(names)
y = np.array(model.feature_importances_)
plt.title("RF score") 

plt.plot(y,x)
  

следующий python выдает график. Как упорядочить оценки по значениям?введите описание изображения здесь

Ответ №1:

Вы можете получить порядок сортировки ваших значений с помощью np.argsort и использовать этот индекс для сортировки ваших значений x и y вместе:

 sort_ix = np.argsort(model.feature_importances_)
x = np.array(names)[sort_ix]
y = np.array(model.feature_importances_)[sort_ix]
plt.plot(y, x)
  

Я не уверен, почему вы называете свое значение x y и свое значение y x , хотя. Это немного сбивает с толку.

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

1. Да, это странная вещь. Это просто ошибка)). Спасибо за предложение!