決策樹分類

2021-10-05 15:27:34 字數 2035 閱讀 7533

發現使用決策樹太方便了,之前不了解,吭呲吭呲的自己整了很多,matlab分分鐘搞定,還清晰明了效果好;

需要根據大量資料進行分類或者設定閾值時,使用決策樹太方便了。

源資料:提取了一些資料的特徵值和類別,用來區分走路和不走了的狀態,

資料格式[feature1, feature2, feature3, feature4, feature6, sign], sign為結果

**:

a=importdata('.\decisiontree\xyz計步.txt'); % 匯入資料

b=importdata('.\decisiontree\xyz不計步.txt');

testa = importdata('.\decisiontree\xyz測試計步.txt');

testb = importdata('.\decisiontree\xyz測試不計步.txt');

train = [a;b];

% 訓練資料

p_train = train(:, 1:6);

t_train = train(:,7);

% 測試資料

p_testa = testa(:, 1:6);

p_testb = testb(:, 1:6);

if 0 % 檢視葉子節點含有的最小樣本數對決策樹效能的影響

leafs = logspace(1,2,10);

n = numel(leafs);

err = zeros(n,1);

for n = 1:n

t = classificationtree.fit(p_train, t_train,'crossval', 'on','minleaf',leafs(n));

err(n) = kfoldloss(t);

endplot(leafs,err);

xlabel('葉子節點含有的最小樣本數');

ylabel('交叉驗證誤差');

title('葉子節點含有的最小樣本數對決策樹效能的影響');

end% 建立決策樹分類器

if 1

ctree = classificationtree.fit(p_train, t_train);

view(ctree,'mode','graph');

t_sim = predict(ctree, p_testb);

endif 0 % 設定minleaf為10,產生優化決策樹

optimaltree = classificationtree.fit(p_train, t_train,'minleaf', 10);

view(optimaltree, 'mode','graph');

t_sima = predict(optimaltree, p_testa);

t_simb = predict(optimaltree, p_testb);

% 計算優化後的決策樹的重帶入誤差和交叉驗證誤差

resubopt = resubloss(optimaltree)

lossopt = kfoldloss(crossval(optimaltree))

% 計算優化前決策樹的重代入誤差和交叉驗證誤差

resubdefault = resubloss(ctree)

lossdefault = kfoldloss(crossval(ctree))

end

決策樹,樹枝太多,不放圖了。

交叉驗證誤差:葉子節點含有的最小樣本數對決策樹效能的影響

優化後的結果:選用最小葉子節點為10;

粗暴一點,選用最小葉子節點為100(下圖);

葉子最小節點在100,誤差在可以接受範圍內,完美;

決策樹分類

一 分類的概念 分類是一種重要的資料分析形式,分類方法用於 資料物件的離散類別,而 則用於 資料物件的連續取值 資料分類是兩個階段的過程,包括學習階段和分類階段 學習階段 訓練階段 就是建立描述預先定義的資料類或概念集的分類器 而訓練集是有資料庫元祖和與他們相互關聯的類標號組成 類標號屬性是離散值和...

分類決策樹

決策樹是基於特徵對例項進行分類的樹形結構。決策樹學習演算法包括 特徵選擇 樹的生成和樹的剪枝。2.1.id3 1 針對當前的集合,計算每個特徵的資訊增益 2 選擇資訊增益最大的特徵作為當前節點的決策決策特徵 3 根據特徵不同的類別劃分到不同的子節點 比如年齡特徵有青年,中年,老年,則劃分到3顆子樹 ...

分類決策樹

決策樹是乙個簡單易用的機器學習演算法,具有很好的實用性。在風險評估 資料分類 專家系統中都能見到決策樹的身影。決策樹其實是一系列的if then規則的集合,它有可讀性良好,分類速度快等優點。把決策樹看成是一些if then規則的集合,在每一層樹上根據屬性的值判斷走勢,至到遇到葉節點,葉節點對應的就是...