gini係數 決策樹_白話決策樹——評價
阿新 • • 發佈:2021-01-01
技術標籤: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())
我們能得到以下結果
上圖是決策樹的一個結果
從上面的樹形圖來看,在葡萄酒資料的訓練集中,有 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,說明分類使得結果更加明確。