ens = fitensemble(X,Y,method,nlearn,learners) 创建一个集成模型来预测对数据的响应。集成由学习者中列出的模型组成。
第一部分
您必须prior按类别标签的字母顺序使用。
所以如果标签是['A','B'],你使用'prior',[P(A) P(B)],
或者如果标签是['true','false'],你使用'prior',[P(false) P(true)],
或者如果标签是[-1 10],你使用'prior',[P(-1) P(10)].
第二部分
关于classnames,使用此选项以便您可以fitensemble在数据中调用更少的类。
想象一下你有四个班级A,B,C,D,所以你Y会是这样的:
Y = [A;A;B;D;B;A;C;A;A;A;D, ... ];
现在你可以写'classnames',['A';'B'],如果你fitensemble只想要两个类,它会和'classnames',['B';'A'],.
我知道这是一个迟到的答案,我希望它有帮助。
例子
我使用了“fisheriris”数据库,它有三个类别(setosa',versicolor ,virginica`)。
因为它有每个类别的150案例50,我随机化了数据并选择100了样本。
load fisheriris
rng(12);
idx = randperm(size(meas,1));
meas = meas(idx,:);
species = species(idx,:);
meas = meas(1 : 100,:);
species = species(1 : 100,:);
trueprior = [ sum(strcmp(species,'setosa')),...
sum(strcmp(species,'versicolor')),...
sum(strcmp(species,'virginica'))] / 100;
显示trueprior = [0.32,0.30,0.38]了真实的先验概率。
在下面的代码中,我训练了三个fitensembles,第一个使用默认选项,所以先验概率是empirical(与 相同trueprior);pprior第二个是用set训练的,trueprior结果与第一个相同(因为trueprior按类标签的字母顺序排列)。第三个是按非字母顺序训练的,显示的结果与前两个不同。
ada1 = fitensemble(meas,species,'AdaBoostM2',20,'tree');
subplot(311)
plot(resubLoss(ada1,'mode','individual'));
title('Resubstitution error for default prior (empirical)');
ada2 = fitensemble(meas,species,'AdaBoostM2',20,'tree','prior',trueprior);
subplot(312)
plot(resubLoss(ada2,'mode','individual'));
title('Resubstitution error for prior with alphabetical order of class labels');
ada3 = fitensemble(meas,species,'AdaBoostM2',20,'tree','prior',trueprior(end:-1:1));
subplot(313)
plot(resubLoss(ada3,'mode','individual'));
title('Resubstitution error for prior with random order');

我还使用选项训练了一个fitensemble只有两个课程的课程classnames
ada4 = fitensemble(meas,species,'AdaBoostM1',20,'tree','classnames',...
{'versicolor','virginica'});
作为AdaBoosM1不支持两个以上类的证明,这里只有两个类可以正常工作。