0

我正在关注教程并尝试实现 TreeBagger 方法。我有一个问题,因为我无法理解部分代码。

b = TreeBagger(nTrees,X,Y,'oobpred','on','cat',6,'minleaf',leaf(ii));

谁能告诉我什么是“猫”以及数字 6 吗?

4

2 回答 2

1

TreeBagger 的构造函数:

%   In addition to the optional arguments above, this method accepts all
%   optional CLASSREGTREE arguments with the exception of 'minparent'.
%   Refer to the documentation for CLASSREGTREE for more detail.

'cat' 不是 TreeBagger 的有效输入对之一,因此它必须是 CLASSREGTREE 的输入。查看 classregtree 的输入对,唯一接近“cat”的输入对是“categorical”,它表示:

%      'categorical' Vector of indices of the columns of X that are to be
%                   treated as unordered categorical variables

如果您查看 statgetargs.m,特别是这一行:

i = strmatch(lower(pname),pnames);

只要第一部分拼写正确,它将允许任何参数。pnames 将包含一个有效字符串的单元数组(其中一个将是“分类”),而 pname 将包含一个用于比较 pnames 的字符串(最终,这将包含“cat”)。如果您只输入输入字符串的第一部分,它仍然可以工作。即对我来说这有效:

EDU>> a = TreeBagger(nTrees,X,Y,'oobpr','on','cat',6,'minle',leaf(ii));
EDU>> b = TreeBagger(nTrees,X,Y,'oobpred','on','cat',6,'minleaf',leaf(ii));
EDU>> isequal(a,b)

ans =

     1

如果 'cat' 被更改,它就不起作用,因为它明确存储了 'cat',因为它在 TreeArgs 下拼写。无论如何,“猫”被视为 classregtree 的“分类”。

于 2013-03-16T18:36:58.000 回答
0

cat被视为 的categorical输入参数的缩写classregtree,它指定X应将 中的第六个变量视为分类变量。

于 2013-03-17T23:31:38.870 回答