1
Я хочу установить лимит для вывода feature_importances_ с использованием DataFrame. Ниже мой код (см от этого blog):Установить ограничение feature_importances_ в DataFrame Pandas
train = df_visualization.sample(frac=0.9,random_state=639)
test = df_visualization.drop(train.index)
train.to_csv('train.csv',encoding='utf-8')
test.to_csv('test.csv',encoding='utf-8')
train_dis = train.iloc[:,:66]
train_val = train_dis.values
train_in = train_val[:,:65]
train_out = train_val[:,65]
test_dis = test.iloc[:,:66]
test_val = test_dis.values
test_in = test_val[:,:65]
test_out = test_val[:,65]
dt = tree.DecisionTreeClassifier(random_state=59,criterion='entropy')
dt = dt.fit(train_in,train_out)
score = dt.score(train_in,train_out)
test_predicted = dt.predict(test_in)
# Print the feature ranking
print("Feature ranking:")
print (DataFrame(dt.feature_importances_, columns = ["Imp"], index = train.iloc[:,:65].columns).sort_values(['Imp'], ascending = False))
Моя проблема теперь она отображает все 65 функций. Выход:
Imp
wbc 0.227780
age 0.100949
gcs 0.069359
hr 0.069270
rbs 0.053418
sbp 0.052067
Intubation-No 0.050729
... ...
Babinski-Normal 0.000000
ABG-Metabolic Alkolosis 0.000000
ABG-Respiratory Acidosis 0.000000
Reflexes-Unilateral Hyperreflexia 0.000000
NS-No 0.000000
Например, я просто хочу, топ-5 только функции. Ожидаемый результат:
Imp
wbc 0.227780
age 0.100949
gcs 0.069359
hr 0.069270
rbs 0.053418
Update: Я получил способ отображения с помощью itertuples.
display = pd.DataFrame(dt.feature_importances_, columns = ["Imp"], index = train.iloc[:,:65].columns).sort_values(['Imp'], ascending = False)
x=0
for row,col in display.itertuples():
if x<5:
print(row,"=",col)
else:
break
x++
Выход:
Feature ranking:
wbc = 0.227780409582
age = 0.100949241154
gcs = 0.0693593476192
hr = 0.069270425399
rbs = 0.0534175402602
Но я хочу знать, является ли это эффективным способом, чтобы получить выход?
Спасибо! Оно работает. Не хотите ли вы уточнить часть «[- 1]» или дать какой-либо документ для ссылки? –
О эффективности (я имею в виду быстрее в процессе вывода), я записываю интервал времени, здесь я получил: Мой метод: +0,009999990463256836 Ваш метод: 0,019999980926513672 Мой метод более быстрее, чем ваша. –
Понял. Спасибо за объяснение. Извините, вы не можете продвинуться на данный момент, так как не хватило репутации. –