我正在尝试使用MATLAB中的随机森林算法进行预测。 但是,我在使它正确运行方面遇到问题。 功能签名如下。
B = TreeBagger(NTrees,X,Y)
如果我正确理解这一点,则NTrees是要放置的树的数量,X是要素矩阵,其中一行对应于一个观测值,一个列对应于一个要素,Y则对应于X的标签。
使用它执行分类时,我将选项"方法"设置为"分类"。 但是,我收到以下错误消息:
Unable to create unique default labels using only 5
significant digits. Use the LABELS input argument.
http://ch.mathworks.com/help/stats/treebagger.html此处的文档未指定有关LABELS命令的任何内容。 有人可以帮我解决这个问题吗?
从显示的文档中,Y看起来像是用于分类的真实类标签或用于回归的数字函数值的数组。 我认为问题是Y。Y中包含什么?
不知道在您的特定情况下Y是什么,我认为这是您错误的根源。 文档说Y是真实类标签的数组...真实类标签可以是数字矢量,字符矩阵,字符串的矢量单元格数组或分类矢量。
分类向量在matlab中引发以下错误(在此处找到此错误):
function b = categorical(a,labels,levels,edges)
...
b.labels = labels;
if isnumeric(levels)
b.labels = cellstr(num2str(levels,'%0.5g'))';
if length(unique(b.labels)) < length(b.labels)
error('stats:categorical:categorical:CantInferNumericLabels', ...
['Unable to create default labels using only 5 significant ' ...
'digits.
Use the LABELS input argument.']);
end
...
end
所以在我看来,就像您的分类向量Y一样,matlab无法推断数字标签,因为它们中有些可能具有5个以上的有效数字。
是的,这就是问题所在。 向量Y包含其标签的值大于可以用5位数字表示的类的类。 将它们映射到较低范围可解决此问题。