如果您认为有一种方法可以存储 2^40000 位,那么您还没有意识到这个数字有多大,并且您错了大约 10000 个数量级。查看 Matlab 的classregtree文档。
我从@Amro 的详细答案中复制了(在此处找到):
” 下面是分类树模型的几个常用参数:
- x:数据矩阵,行是实例,列是预测属性
- y:列向量,每个实例的类标签
- categorical : 指定哪些属性是离散类型(相对于连续)
- method : 是生成分类树还是回归树(取决于类类型)
- names : 为属性命名
- prune:启用/禁用减少错误修剪
- minparent/minleaf:如果要进一步拆分,允许指定节点中的最小实例数
- nvartosample:用于随机树(考虑每个节点上随机选择的 K 个属性)
- weights:指定加权实例
- cost : 指定成本矩阵(各种错误的惩罚)
- splitcriterion:用于在每次拆分时选择最佳属性的标准。我只熟悉基尼指数,它是信息增益标准的一种变体。
- priorityprob:明确指定先验类概率,而不是根据训练数据计算
一个完整的例子来说明这个过程:
%# load data
load carsmall
%# construct predicting attributes and target class
vars = {'MPG' 'Cylinders' 'Horsepower' 'Model_Year'};
x = [MPG Cylinders Horsepower Model_Year];
y = strcat(Origin,{});
%# 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',2);
view(tt)
%# predict a new unseen instance
inst = [33 4 78 NaN];
prediction = eval(tt, inst)