我在处理一个16类的问题时使用了决策树。我设置了以下参数:
CvDTreeParams params = CvDTreeParams(50, // 最大深度
100,// 最小样本数
0, // 回归精度:此处不适用
true, // 计算替代分裂,无缺失数据
16, // 最大类别数(对于更大的数字使用次优算法)
5, // 交叉验证折数
false, // 使用1SE规则 => 较小的树
false, // 丢弃修剪后的树枝
priors // 先验概率数组);
CvDTree* dtree = new CvDTree();
dtree->train(data, CV_ROW_SAMPLE, classes,
Mat(), Mat(), var_type, Mat(), params);
但是生成的树最大深度只有25。深度没有增加。我在Matlab上使用相同的数据,树的深度达到了50。OpenCV中是否有什么限制了树的深度?
回答:
OpenCV源代码中对最大深度有25的硬性限制。因此,需要更改二进制文件才能使其工作。