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',
雲芝,
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]
顯示了真實的先驗概率。
在下面的代碼我已經訓練3 fitensembles
,第一個使用默認選項,因此先驗概率是empirical
(是trueprior
爲相同);第二個是用pprior
設置爲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
不支持多類工作正常這裏只有兩個類。
感謝您的編輯,@丹。尷尬。 –