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
不支持两个以上类的证明,这里只有两个类可以正常工作。