資源簡介
這是我從網上找到的一份決策樹Cart算法代碼,其中在確定分枝時采用的是熵不純度確定的方法,代碼可以運行.聲明這份代碼不是我原創的,是從某個網頁上下載下來的,不過原作者的代碼中許多變量沒有作詳細注釋,我在閱讀這份代碼時加了許多自己的理解,幾乎每個變量每句代碼都作了解釋,對于學習決策樹CART算法的同學具有比較好的入門指導作者,這里將代碼貢獻出來與大家一起分享,如果有注釋不準的地方,請發表評論提醒我。也向原作者致謝(不好意思,忘記在哪個網頁上下載的了)
代碼片段和文件信息
function?Tree?=?CART_MakeBinaryTree(Train_Samples?TrainingTargets?Region)
%?--------------------------------------------------------------------------------------------------------------
%?基于?熵不純度?遞歸地實現??非剪枝完全二叉樹
%?輸入變量:?
%???Train_Samples??:?n個d維訓練樣本?為(n?*?d)的矩陣
%???TrainingTargets:?對應的類別屬性?為(n?*?1)的矩陣
%???Region?????????:?特征向量各維度的下限值與上限值?為(d?*?2)的矩陣(特征值取離散的自然數區間?左小右大)
%?
%?輸出變量:?
%? 一個基本樹形節點?Tree??
%?
%?基本樹形節點結構?
%?一:?label?標簽(記錄當前節點判定所用的維度?當節點為葉子時為空)
%?二:?Value?閾值(記錄當前所用維度判定之閾值?葉子節點時表類別)
%?三:?Left??左枝(小于等于閾值的待分目標?歸于此?當節點為葉子時為空)
%?四:?Right?右枝(大于閾值的?歸于此?當節點為葉子時為空)
%?五:?Num???當前節點的樣本的數目
%?--------------------------------------------------------------------------------------------------------------
[nDim]?=?size(Train_Samples); %?n:?樣本數?Dim:?樣本維度
[tm]???=?size(Region); %?t:?特征維度?m:?2因為是每個維度的下界與上界
if?Dim?~=?t?||?m?~=?2
????disp(‘參數錯誤?請檢查‘);
????return;
end
%?檢查類別屬性是否只有一個屬性?若是則當前為葉節點?否則需要繼續分
if?(?length(unique(Tra
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????7440??2015-06-20?23:29??dtree_cart\CART_MakeBinaryTree.m
?????文件???????2402??2015-06-20?23:32??dtree_cart\CART_PruningBinaryTree.m
?????文件???????1285??2015-06-20?23:30??dtree_cart\CART_UseBinaryTree.m
?????文件???????1589??2015-06-20?23:34??dtree_cart\main.m
?????目錄??????????0??2015-06-20?23:38??dtree_cart
-----------?---------??----------?-----??----
????????????????12716????????????????????5
- 上一篇:數據庫課程設計——學生成績管理系統
- 下一篇:用qt5寫的視頻播放器
評論
共有 條評論