導航:首頁 > 五金知識 > matlab決策樹工具箱

matlab決策樹工具箱

發布時間:2021-12-20 06:45:21

㈠ 決策樹已經求出來了,如何使用matlab對數據進行分類

按照你的決策節點規則寫不就完了...

㈡ 如何利用matlab建立決策樹模型,對原始數據(excel表格)有什麼要求最好有代碼,C4.5演算法的~

C4.5的好像沒看到人實現過,不過ID3是很好用的,用treefit函數,excel函數只要主體部分,屬性矩陣和分類向量要分開存放,不要第一行和第一列的注釋內容(如果沒有就不用刪),用xlsread函數獲取Excel數據得到輸入矩陣。目標向量可以另外在建立一個excel一樣的使用。可以繼續交流

㈢ MATLAB使用fitctree生成的決策樹信息怎麼輸出

treefit貌似已經被classregtree代替了, 如果要獲得測試值,可以用predict(tree, test_data)來獲得,當然也可以用一些classregtree自有的performance analysis的函數。

㈣ optimize是matlab哪個工具箱里的

optimize是matlab哪個工具箱里的抄
決策樹(Decision Tree)是在已知各種襲情況發生概率的基礎上,通過構成決策樹來求取凈現值的期望值大於等於零的概率,評價項目風險,判斷其可行性的決策分析方法,是直觀運用概率分析的一種圖解法。

㈤ MATLAB中自帶決策樹函數怎麼使用,新手求教

個例子很簡單,和運行出來的圖不一樣,我試著改了一些參數,居然沒什麼變化。。。。都不知那圖怎麼弄的。
在網上找到的代碼,有高手可以解釋一下下面代碼參數代表什麼嗎

function D = ID3(train_features, train_targets, params, region)

% Classify using Quinlan's ID3 algorithm
% Inputs:
% features - Train features
% targets - Train targets
% params - [Number of bins for the data, Percentage of incorrectly assigned samples at a node]
% region - Decision region vector: [-x x -y y number_of_points]
%
% Outputs
% D - Decision sufrace

[Ni, M] = size(train_features);

%Get parameters
[Nbins, inc_node] = process_params(params);
inc_node = inc_node*M/100;

%For the decision region
N = region(5);
mx = ones(N,1) * linspace (region(1),region(2),N);
my = linspace

㈥ matlab決策樹問題,求回答

運行到 t=classregtree(D,classity,'names',AttributName); 錯誤了 你help 一下 你的工具箱里有沒有這個函數,

㈦ 如何用matlab實現決策樹多叉樹

決策樹是數學、計算機科學與管理學中經常使用的工具.
決策論中 (如風險管理),決策樹(Decision tree)由一個決策圖和可能的結果(包括資源成本和風險)組成,用來創建到達目標的規劃.決策樹建立並用來輔助決策,是一種特殊的樹結構.決策樹是一個利用像樹一樣的圖形或決策模型的決策支持工具,包括隨機事件結果,資源代價和實用性.它是一個演算法顯示的方法.決策樹經常在運籌學中使用,特別是在決策分析中,它幫助確定一個能最可能達到目標的策略.如果在實際中,決策不得不在沒有完備知識的情況下被在線採用,一個決策樹應該平行概率模型作為最佳的選擇模型或在線選擇模型演算法.決策樹的另一個使用是作為計算條件概率的描述性手段.
決策樹提供了一種展示類似在什麼條件下會得到什麼值這類規則的方法.比如,在貸款申請中,要對申請的風險大小做出判斷,圖是為了解決這個問題而建立的一棵決策樹,從中我們可以看到決策樹的基本組成部分:決策節點、分支和葉子.
決策樹中最上面的節點稱為根節點,是整個決策樹的開始.本例中根節點是「收入>¥40,000」,對此問題的不同回答產生了「是」和「否」兩個分支.
決策樹的每個節點子節點的個數與決策樹在用的演算法有關.如CART演算法得到的決策樹每個節點有兩個分支,這種樹稱為二叉樹.允許節點含有多於兩個子節點的樹稱為多叉樹.決策樹的內部節點(非樹葉節點)表示在一個屬性上的測試.
每個分支要麼是一個新的決策節點,要麼是樹的結尾,稱為葉子.在沿著決策樹從上到下遍歷的過程中,在每個節點都會遇到一個問題,對每個節點上問題的不同回答導致不同的分支,最後會到達一個葉子節點.這個過程就是利用決策樹進行分類的過程,利用幾個變數(每個變數對應一個問題)來判斷所屬的類別(最後每個葉子會對應一個類別).
例如,
假如負責借貸的銀行官員利用上面這棵決策樹來決定支持哪些貸款和拒絕哪些貸款,那麼他就可以用貸款申請表來運行這棵決策樹,用決策樹來判斷風險的大小.「年收入>¥40,00」和「高負債」的用戶被認為是「高風險」,同時「收入5年」的申請,則被認為「低風險」而建議貸款給他/她.
數據挖掘中決策樹是一種經常要用到的技術,可以用於分析數據,同樣也可以用來作預測(就像上面的銀行官員用他來預測貸款風險).常用的演算法有CHAID、 CART、ID3、C4.5、 Quest 和C5.0.
建立決策樹的過程,即樹的生長過程是不斷的把數據進行切分的過程,每次切分對應一個問題,也對應著一個節點.對每個切分都要求分成的組之間的「差異」最大.
對決策樹演算法的研究開發主要以國外為主,現有的涉及決策樹演算法的軟體有SEE5、Weka、spss等,在國內也有不少人開展了對決策樹演算法的構建及應用研究,如中國測繪科學研究院在原有C5.0演算法的基礎上進行了演算法重構,將其用於地表覆蓋遙感影像分類中.

㈧ Matlab關於決策樹的是在哪個工具箱里

決策樹(Decision Tree)是在已知各種情況發生概率的基礎上,通過構成決策樹來求取凈現值的期望值大於等於零的概率,評價項目風險,判斷其可行性的決策分析方法,是直觀運用概率分析的一種圖解法。

決策樹的優缺點:
優點:

1) 可以生成可以理解的規則。

2) 計算量相對來說不是很大。

3) 可以處理連續和種類欄位。

4) 決策樹可以清晰的顯示哪些欄位比較重要

㈨ 求決策樹源代碼。最好使用matlab實現。

function [Tree RulesMatrix]=DecisionTree(DataSet,AttributName)
%輸入為訓練集,為離散後的數字,如記錄1:1 1 3 2 1;
%前面為屬性列,最後一列為類標
if nargin<1
error('請輸入數據集');
else
if isstr(DataSet)
[DataSet AttributValue]=readdata2(DataSet);
else
AttributValue=[];
end
end
if nargin<2
AttributName=[];
end
Attributs=[1:size(DataSet,2)-1];
Tree=CreatTree(DataSet,Attributs);
disp([char(13) 'The Decision Tree:']);
showTree(Tree,0,0,1,AttributValue,AttributName);
Rules=getRule(Tree);
RulesMatrix=zeros(size(Rules,1),size(DataSet,2));
for i=1:size(Rules,1)
rule=cell2struct(Rules(i,1),{'str'});
rule=str2num([rule.str([1:(find(rule.str=='C')-1)]) rule.str((find(rule.str=='C')+1):length(rule.str))]);
for j=1:(length(rule)-1)/2
RulesMatrix(i,rule((j-1)*2+1))=rule(j*2);
end
RulesMatrix(i,size(DataSet,2))=rule(length(rule));
end
end
function Tree=CreatTree(DataSet,Attributs) %決策樹程序 輸入為:數據集,屬性名列表
%disp(Attributs);
[S ValRecords]=ComputEntropy(DataSet,0);
if(S==0) %當樣例全為一類時退出,返回葉子節點類標
for i=1:length(ValRecords)
if(length(ValRecords(i).matrix)==size(DataSet,1))
break;
end
end
Tree.Attribut=i;
Tree.Child=[];
return;
end
if(length(Attributs)==0) %當條件屬性個數為0時返回佔多數的類標
mostlabelnum=0;
mostlabel=0;
for i=1:length(ValRecords)
if(length(ValRecords(i).matrix)>mostlabelnum)
mostlabelnum=length(ValRecords(i).matrix);
mostlabel=i;
end
end
Tree.Attribut=mostlabel;
Tree.Child=[];
return;
end
for i=1:length(Attributs)
[Sa(i) ValRecord]=ComputEntropy(DataSet,i);
Gains(i)=S-Sa(i);
AtrributMatric(i).val=ValRecord;
end
[maxval maxindex]=max(Gains);
Tree.Attribut=Attributs(maxindex);
Attributs2=[Attributs(1:maxindex-1) Attributs(maxindex+1:length(Attributs))];
for j=1:length(AtrributMatric(maxindex).val)
DataSet2=[DataSet(AtrributMatric(maxindex).val(j).matrix',1:maxindex-1) DataSet(AtrributMatric(maxindex).val(j).matrix',maxindex+1:size(DataSet,2))];
if(size(DataSet2,1)==0)
mostlabelnum=0;
mostlabel=0;
for i=1:length(ValRecords)
if(length(ValRecords(i).matrix)>mostlabelnum)
mostlabelnum=length(ValRecords(i).matrix);
mostlabel=i;
end
end
Tree.Child(j).root.Attribut=mostlabel;
Tree.Child(j).root.Child=[];
else
Tree.Child(j).root=CreatTree(DataSet2,Attributs2);
end
end
end
function [Entropy RecordVal]=ComputEntropy(DataSet,attribut) %計算信息熵
if(attribut==0)
clnum=0;
for i=1:size(DataSet,1)
if(DataSet(i,size(DataSet,2))>clnum) %防止下標越界
classnum(DataSet(i,size(DataSet,2)))=0;
clnum=DataSet(i,size(DataSet,2));
RecordVal(DataSet(i,size(DataSet,2))).matrix=[];
end
classnum(DataSet(i,size(DataSet,2)))=classnum(DataSet(i,size(DataSet,2)))+1;
RecordVal(DataSet(i,size(DataSet,2))).matrix=[RecordVal(DataSet(i,size(DataSet,2))).matrix i];
end

Entropy=0;
for j=1:length(classnum)
P=classnum(j)/size(DataSet,1);
if(P~=0)
Entropy=Entropy+(-P)*log2(P);
end
end
else
valnum=0;
for i=1:size(DataSet,1)
if(DataSet(i,attribut)>valnum) %防止參數下標越界
clnum(DataSet(i,attribut))=0;
valnum=DataSet(i,attribut);
Valueexamnum(DataSet(i,attribut))=0;
RecordVal(DataSet(i,attribut)).matrix=[]; %將編號保留下來,以方便後面按值分割數據集
end
if(DataSet(i,size(DataSet,2))>clnum(DataSet(i,attribut))) %防止下標越界
Value(DataSet(i,attribut)).classnum(DataSet(i,size(DataSet,2)))=0;
clnum(DataSet(i,attribut))=DataSet(i,size(DataSet,2));
end
Value(DataSet(i,attribut)).classnum(DataSet(i,size(DataSet,2)))= Value(DataSet(i,attribut)).classnum(DataSet(i,size(DataSet,2)))+1;
Valueexamnum(DataSet(i,attribut))= Valueexamnum(DataSet(i,attribut))+1;
RecordVal(DataSet(i,attribut)).matrix=[RecordVal(DataSet(i,attribut)).matrix i];
end
Entropy=0;
for j=1:valnum
Entropys=0;
for k=1:length(Value(j).classnum)
P=Value(j).classnum(k)/Valueexamnum(j);
if(P~=0)
Entropys=Entropys+(-P)*log2(P);
end
end
Entropy=Entropy+(Valueexamnum(j)/size(DataSet,1))*Entropys;
end
end
end
function showTree(Tree,level,value,branch,AttributValue,AttributName)
blank=[];
for i=1:level-1
if(branch(i)==1)
blank=[blank ' |'];
else
blank=[blank ' '];
end
end
blank=[blank ' '];
if(level==0)
blank=[' (The Root):'];
else
if isempty(AttributValue)
blank=[blank '|_____' int2str(value) '______'];
else
blank=[blank '|_____' value '______'];
end
end
if(length(Tree.Child)~=0) %非葉子節點
if isempty(AttributName)
disp([blank 'Attribut ' int2str(Tree.Attribut)]);
else
disp([blank 'Attribut ' AttributName{Tree.Attribut}]);
end
if isempty(AttributValue)
for j=1:length(Tree.Child)-1
showTree(Tree.Child(j).root,level+1,j,[branch 1],AttributValue,AttributName);
end
showTree(Tree.Child(length(Tree.Child)).root,level+1,length(Tree.Child),[branch(1:length(branch)-1) 0 1],AttributValue,AttributName);
else
for j=1:length(Tree.Child)-1
showTree(Tree.Child(j).root,level+1,AttributValue{Tree.Attribut}{j},[branch 1],AttributValue,AttributName);
end
showTree(Tree.Child(length(Tree.Child)).root,level+1,AttributValue{Tree.Attribut}{length(Tree.Child)},[branch(1:length(branch)-1) 0 1],AttributValue,AttributName);
end
else
if isempty(AttributValue)
disp([blank 'leaf ' int2str(Tree.Attribut)]);
else
disp([blank 'leaf ' AttributValue{length(AttributValue)}{Tree.Attribut}]);
end
end
end
function Rules=getRule(Tree)
if(length(Tree.Child)~=0)
Rules={};
for i=1:length(Tree.Child)
content=getRule(Tree.Child(i).root);
%disp(content);
%disp([num2str(Tree.Attribut) ',' num2str(i) ',']);
for j=1:size(content,1)
rule=cell2struct(content(j,1),{'str'});
content(j,1)={[num2str(Tree.Attribut) ',' num2str(i) ',' rule.str]};
end
Rules=[Rules;content];
end
else
Rules={['C' num2str(Tree.Attribut)]};
end
end

閱讀全文

與matlab決策樹工具箱相關的資料

熱點內容
煙台華盛金屬設備有限公司怎麼樣 瀏覽:857
地暖分水器的放氣閥門在哪 瀏覽:344
如何給機械水表調字 瀏覽:78
煤氣罐上低壓閥門怎麼調 瀏覽:318
新昌五金建材市場 瀏覽:322
機械手常用坐標系有哪些 瀏覽:355
取95ml水需要用什麼儀器 瀏覽:191
圓帶傳動用於什麼機械 瀏覽:860
化工管道閥門可以地埋嗎 瀏覽:654
實驗儀器的正確選擇和實驗裝置 瀏覽:462
臀部按摩疏通有什麼好的儀器 瀏覽:182
輻射4機械大師怎麼離開 瀏覽:605
車子儀表台被曬得發白了如何解決 瀏覽:597
五征儀表盤不亮什麼原因 瀏覽:907
一字帶磁暖氣閥門開關 瀏覽:334
cad機械制圖怎麼填充 瀏覽:692
上海悅鑫五金製品有限公司地址 瀏覽:468
板牆自動提升裝置 瀏覽:30
暖氣上12345數字的閥門 瀏覽:567
麥德龍有電動工具買嗎 瀏覽:384