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

最佳答案

函数classregtree的文档页是不言而喻的。。。
让我们回顾一下分类树模型的一些最常见的参数:
x:数据矩阵,行是实例,列是预测属性
y:列向量,每个实例的类标签
分类:指定哪些属性是离散类型(相对于连续类型)
方法:生成分类树还是回归树(取决于类类型)
名称:为属性命名
修剪:启用/禁用减少的错误修剪
minparent/minleaf:如果要进一步拆分,则允许指定节点中实例的最小数量
nvartosample:用于随机树(考虑每个节点上随机选择的K个属性)
权重:指定权重实例
成本:指定成本矩阵(各种错误的惩罚)
split criterion:用于在每次拆分时选择最佳属性的条件我只熟悉基尼指数,它是信息增益准则的一种变化。
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类所取代(参见R2014a中的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])

07-24 09:22