Pythonではじめる機械学習 p76 2.3.5.4 In[61]についてくわしく

決定木においてどの特徴量が重要かfeature importanceでわかる。0だとまったく使われていない、1だとこの特徴量で完全にターゲット(予測したい値)を予測できる。これはprint(tree.feature_importances_)で確認できる。

In[61]よりどの特徴量が大事か可視化できる。feature_importances_が高いworst radiusは決定木の一番はじめの質問で使われていてクラスを分けるのにうまくいっている。

しかしfeature_importances_の値が高いことが良性か悪性かを教えてくれるものではない。実際2つの特徴量しか持たない別のデータでこれを見てみる。In[62]のFeature importances: [0. 1.]からX[0]はまったく予測で使われなくX[1]だけ使われていることを表す。また凡例にクラス0,1がある図(本の図2-29)の下の線がX[1]=-5.8141で上の線がX[1]=5.3475の線である。つまり縦軸が特徴量X[1]を表す。この図からわかるのはX[1]が高いほどクラス0であるもしくはクラス1であるということが言えないことである。実際X[1]が高いところと低いところどちらにもクラス0がある。

In[61]
・n_features=cancer.data.shape[1]はcancer.dataの列数で30。
・plt.barh(range(n_features),model.feature_importances_,align='center')は横棒のグラフを書くために使う。第一引数にy軸のラベル、第2引数に棒の長さ。align='center'は棒がラベルの中央からでる。
・plt.yticks(np.arange(n_features),cancer.feature_names) はy軸のラベルをcancer.feature_namesに置き換える。n_featuresの数はcancer.feature_namesと同じ数でこれはcancer.dataのカラムがcancer.feature_namesと同じ意味。またarangeは行列のrange版。