1. 程式人生 > 其它 >gini係數 決策樹_白話決策樹——評價

gini係數 決策樹_白話決策樹——評價

技術標籤:gini係數 決策樹

首先輸入以下程式碼。

from sklearn.datasets import load_winefrom sklearn.model_selection import train_test_splitfrom sklearn import treefrom six import StringIOimport pydotplusfrom IPython.display import Image data = load_wine()data_import = StringIO()Xtrain,Xtest,Ytrain,Ytest = train_test_split(data.data,data.target,test_size = 0.2)clf = tree.DecisionTreeClassifier(criterion = 'gini'                                  ,max_depth = 3                                  ,min_impurity_split = 0.01                                  ,splitter = 'best')clf = clf.fit(Xtrain,Ytrain)score = clf.score(Xtest,Ytest)feature_name = ['酒精','蘋果酸','灰','灰的鹼性','鎂','總酚','類黃酮','非黃烷類酚類'               ,'花青素','顏色強度','色調','od280/od315稀釋葡萄酒','脯氨酸']tree.export_graphviz(clf                     ,out_file = data_import                     ,feature_names= feature_name                     ,class_names= ['紅酒','白酒','黃酒']                     ,filled = True                     ,rounded= True                     )graph = pydotplus.graph_from_dot_data(data_import.getvalue().replace('helvetica','"Microsoft YaHei"'))Image(graph.create_png()) 

我們能得到以下結果

9aa707ad20cf639015fc00f552a39f81.png

上圖是決策樹的一個結果

從上面的樹形圖來看,在葡萄酒資料的訓練集中,有 142 個數據,劃分為 3 個類別,數量分別是 50、54、38 個,對應的標籤分別是紅酒、白酒、黃酒,其中白酒的數量最多,所以最上面的根節點認為,類別為白酒的可能性最大,Gini 係數為 0.66,它是利用下面的公式計算出來的:

1 - (50/142)^2 - (54/142)^2 - (38/142)^2

具體的公式可以看這篇文章。白話決策樹-概念及原理

當每個類別的數量越趨近於平均值,Gini 係數就越大,也就越不確定。

我們再看左邊的分支。當脯氨酸<=755時候,有88個樣本,三個類別分別是2、51和35個。其中,白酒數量最多。Gini係數為0.505,小於第一層的0.66,說明分類使得結果更加明確。