2016-09-18 4 views
1

DataFrameを使用して、feature_importances_出力の制限を設定したいとします。以下 は(このblogから参照してください)私のコードです:DataFrame Pandasのlimit feature_importances_を設定する

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 

更新: 私は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 

しかし、私は、これは、出力を得るための効率的な方法であるかどうかを知りたいですか?

答えて

0

これを試してみてください:

indices = np.argsort(dt.feature_importances_)[::-1] 
for i in range(5): 
     print " %s = %s" % (feature_cols[indices[i]], dt.feature_importances_[indices[i]]) 
+0

感謝を!できます。あなたは "[:: - 1]"の部分を詳述したり、どんな文書に参照してもらえますか?効率について –

+0

(私はプロセスでより高速出力を意味する)、私は時間間隔を記録し、ここで私が得た: 私の方法:0.009999990463256836 あなたの方法:0.019999980926513672 あなたよりも速く私の方法。 –

+0

。説明ありがとう。申し訳ありませんが、評判スコアが足りないので、今のところupvoteできません。 –

関連する問題