Matlab中的决策树
machine-learning
matlab
5
0

我在Matlab中看到了帮助,但是他们提供了一个示例,但没有说明如何使用'classregtree'函数中的参数。任何帮助解释“ classregtree”及其参数使用的帮助将不胜感激。

参考资料:
Stack Overflow
收藏
评论
共 1 个回答
高赞 时间 活跃

函数classregtree的文档页面不言自明...

让我们回顾一下分类树模型的一些最常见的参数:

  • x :数据矩阵,行是实例,cols是预测属性
  • y :列向量,每个实例的类标签
  • categorical :指定哪些属性是离散类型(而不是连续的)
  • 方法 :产生分类树还是回归树(取决于类类型)
  • 名称 :为属性指定名称
  • prune :启用/禁用减少错误的修剪
  • minparent / minleaf :如果要进一步拆分,则允许指定节点中的最小实例数
  • nvartosample :用于随机树(考虑每个节点的K个随机选择的属性)
  • 权重 :指定加权实例
  • 成本 :指定成本矩阵(各种错误的惩罚)
  • splitcriterion :用于在每次拆分时选择最佳属性的标准。我只熟悉基尼系数,它是信息增益标准的一种变体。
  • priorityprob :明确指定先验课程的概率,而不是从训练数据中计算

一个完整的示例来说明该过程:

%# 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函数)。

这是使用新功能/类的更新示例:

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])
收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号