簡體   English   中英

Matlab中的決策樹

[英]Decision Tree in Matlab

我在Matlab中看到了幫助,但是他們提供了一個示例,但沒有解釋如何使用'classregtree'函數中的參數。 任何幫助解釋'classregtree'與其參數的使用將不勝感激。

函數classregtree的文檔頁面是不言自明的......

讓我們回顧一下分類樹模型的一些最常見的參數:

  • x :數據矩陣,行是實例,cols是預測屬性
  • y :列向量,每個實例的類標簽
  • 分類 :指定哪些屬性是離散類型(而不是連續)
  • 方法 :是否生成分類或回歸樹(取決於類類型)
  • names :給出屬性的名稱
  • prune :啟用/禁用減少錯誤的修剪
  • minparent / minleaf :允許指定節點中的最小實例數(如果要進一步拆分)
  • nvartosample :用於隨機樹(考慮每個節點K隨機選擇的屬性)
  • 權重 :指定加權實例
  • 成本 :指定成本矩陣(各種錯誤的罰分)
  • splitcriterion :用於在每次拆分時選擇最佳屬性的標准。 我只熟悉基尼指數,它是信息增益標准的變體。
  • priorprob :明確指定先前的類概率,而不是從訓練數據計算

一個完整的例子來說明這個過程:

%# load data
load carsmall

%# construct predicting attributes and target class
vars = {'MPG' 'Cylinders' 'Horsepower' 'Model_Year'};
x = [MPG Cylinders Horsepower Model_Year];  %# mixed continous/discrete data
y = cellstr(Origin);                        %# class labels

%# train classification decision tree
t = classregtree(x, y, 'method','classification', 'names',vars, ...
                'categorical',[2 4], 'prune','off');
view(t)

%# test
yPredicted = eval(t, x);
cm = confusionmat(y,yPredicted);           %# confusion matrix
N = sum(cm(:));
err = ( N-sum(diag(cm)) ) / N;             %# testing error

%# prune tree to avoid overfitting
tt = prune(t, 'level',3);
view(tt)

%# predict a new unseen instance
inst = [33 4 78 NaN];
prediction = eval(tt, inst)    %# pred = 'Japan'

樹


更新:

上面的classregtree類已經過時,並且被R2011a中的ClassificationTreeRegressionTree類所取代(參見fitctreefitrtree函數,R2014a中的新函數)。

這是更新的示例,使用新的函數/類:

t = fitctree(x, y, 'PredictorNames',vars, ...
    'CategoricalPredictors',{'Cylinders', 'Model_Year'}, 'Prune','off');
view(t, 'mode','graph')

y_hat = predict(t, x);
cm = confusionmat(y,y_hat);

tt = prune(t, 'Level',3);
view(tt)

predict(tt, [33 4 78 NaN])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM