3

sklearn のディシジョン ツリーの機能の重要性と、df の機能の対応する名前を一致させる辞書を作成しました。ここで以下のコード:

   importances = clf.feature_importances_
   feature_names = ['age','BP','chol','maxh',
          'oldpeak','slope','vessels',
          'sex_0.0','sex_1.0', 
          'pain_1.0','pain_2.0','pain_3.0','pain_4.0',
          'bs_0.0','bs_1.0',
          'ecg_0.0','ecg_1.0','ecg_2.0',
          'ang_0.0','ang_1.0',
          'thal_3.0','thal_6.0','thal_7.0']
   CLF_sorted = dict(zip(feature_names, importances))

出力で私はこれを得ました:

   {'BP': 0.053673644739136502,
    'age': 0.014904980747733202,
    'ang_0.0': 0.0,
    'ang_1.0': 0.0,
    'bs_0.0': 0.0,
    'bs_1.0': 0.0,
    'chol': 0.11125922817930389, ...}

私の期待通りに。2 つの質問があります。

  1. feature_namesx 軸が を表し、y 軸が対応する棒グラフを作成するにはどうすればよいimportancesですか?

  2. 可能であれば、棒グラフを降順に並べ替えるにはどうすればよいですか?

4

1 に答える 1

1

これを試して:

import pandas as pd

df = pd.DataFrame({'feature': feature_names , 'importance': importances})
df.sort_values('importance', ascending=False).set_index('feature').plot.bar(rot=0)

デモ:

d ={'BP': 0.053673644739136502,
    'age': 0.014904980747733202,
    'ang_0.0': 0.0,
    'ang_1.0': 0.0,
    'bs_0.0': 0.0,
    'bs_1.0': 0.0,
    'chol': 0.11125922817930389}

df = pd.DataFrame({'feature': [x for x in d.keys()], 'importance': [x for x in d.values()]})

In [63]: import matplotlib as mpl

In [64]: mpl.style.use('ggplot')

In [65]: df.sort_values('importance', ascending=False).set_index('feature').plot.bar(rot=0)
Out[65]: <matplotlib.axes._subplots.AxesSubplot at 0x8c83748>

ここに画像の説明を入力

于 2016-06-24T10:46:34.627 に答える