poster
2019-12-10, 16:49
我在Matlab中看到了帮助,但是他们提供了一个示例,但没有说明如何使用'classregtree'函数中的参数。任何帮助解释“ classregtree”及其参数使用的帮助将不胜感激。
回答:
函数classregtree (http://www.mathworks.com/help/stats/classregtree.html)的文档页面不言自明...
让我们回顾一下分类树模型的一些最常见的参数:
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' https://i.stack.imgur.com/JvaG1.png
更新:
上面的classregtree (http://www.mathworks.com/help/stats/classregtree.html)类已作废,并classregtree (http://www.mathworks.com/help/stats/classregtree.html)的ClassificationTree (http://www.mathworks.com/help/stats/classificationtree-class.html)和RegressionTree (http://www.mathworks.com/help/stats/regressiontree-class.html)类取代(请参阅fitctree (http://www.mathworks.com/help/stats/fitctree.html)和fitrtree (http://www.mathworks.com/help/stats/fitrtree.html)函数)。
这是使用新功能/类的更新示例:
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])
更多&回答... (https://stackoverflow.com/questions/1960430)
回答:
函数classregtree (http://www.mathworks.com/help/stats/classregtree.html)的文档页面不言自明...
让我们回顾一下分类树模型的一些最常见的参数:
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' https://i.stack.imgur.com/JvaG1.png
更新:
上面的classregtree (http://www.mathworks.com/help/stats/classregtree.html)类已作废,并classregtree (http://www.mathworks.com/help/stats/classregtree.html)的ClassificationTree (http://www.mathworks.com/help/stats/classificationtree-class.html)和RegressionTree (http://www.mathworks.com/help/stats/regressiontree-class.html)类取代(请参阅fitctree (http://www.mathworks.com/help/stats/fitctree.html)和fitrtree (http://www.mathworks.com/help/stats/fitrtree.html)函数)。
这是使用新功能/类的更新示例:
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])
更多&回答... (https://stackoverflow.com/questions/1960430)