Как выбрать 10 лучших объектов из списка объектов и списка весовых коэффициентов (логистическая регрессия)? - PullRequest
2 голосов
/ 16 мая 2019

Я хочу выбрать 5 лучших функций в моей модели логистической регрессии.Теперь у меня есть два массива, один из которых содержит все имя объекта, а другой список имеет коэффициенты из model.coef_, где model = LogisticRegression ().

feature_list = ['ball', 'cat', 'apple',....,] # this has 108 elements
coefficents = lr.coef_  
print(coefficents[0])

Это печатает следующим образом:

[ 2.07587361e-04  5.59531750e-04  0.00000000e+00  0.00000000e+00
-5.16353886e-02 ......  1.66633057e-02]   #this also has 108 elements

Когда я пытаюсь отсортировать значения коэф, я получаю другие значения.

sorted_index = np.argsort(coefficents[0])
print(sorted_index)
[ 22  91  42  15  52  31  16  32  86 .... 17 106]   #this has 108 values

Как получить правильные 5 важных функций из этих двух массивов?

1 Ответ

1 голос
/ 16 мая 2019

argsort сортирует в порядке возрастания, вы хотите, чтобы он был в порядке убывания (самый высокий сначала)

Здесь я приведу простой пример:

import numpy as np

feature_list = ['ball', 'cat', 'apple', 'house', 'tree', 'school', 'child']
coeff = np.array([0.7, 0.3, 0.8, 0.2, 0.4, 0.1, 0.9])
# negate the coeff. to sort them in descending order
idx = (-coeff).argsort()
# map index to feature list
desc_feature = [feature_list[i] for i in idx]
# select the top 5 feature
top_feature = desc_feature [:5]
print(top_feature)

приводит к вашемуОсновные характеристики:

['child', 'apple', 'ball', 'tree', 'cat']
...