首先輸入以下**。
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,說明分類使得結果更加明確。
白話決策樹
有一天,小明無聊,對宿舍玩cs的舍友進行統計,結果剛記下四行,被舍友認為影響發揮,給踢到床下去了,讓我們看看可憐的小明的記錄 子彈數量 血 行為 機槍 多 少 戰鬥 機槍 少 多 逃跑 小刀 少 多 戰鬥 小刀 少 少 逃跑 為了對得起小明記錄的這四條記錄,我們對其進行決策樹分析,從資料中看 1.如...
決策樹和CART決策樹
首先簡單介紹下決策樹 說到決策樹肯定離不開資訊熵 什麼是資訊熵 不要被這名字唬住,其實很簡單 乙個不太可能的時間居然發生了,要比乙個非常可能的時間發生提供更多的資訊。訊息說 今天早上太陽公升起 資訊量是很少的,以至於沒有必要傳送。但另一條訊息說 今天早上日食 資訊量就很豐富。概率越大資訊量就越少,與...
決策樹(二)決策樹回歸
回歸 決策樹也可以用於執行回歸任務。我們首先用sk learn的decisiontreeregressor類構造一顆回歸決策樹,並在乙個帶雜訊的二次方資料集上進行訓練,指定max depth 2 import numpy as np quadratic training set noise np.r...