ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

predict

分類モデルのアンサンブルの使用によるラベルの予測

構文

labels = predict(Mdl,X)
labels = predict(Mdl,X,Name,Value)
[labels,score] = predict(___)

説明

labels = predict(Mdl,X) は、学習済みの完全またはコンパクトなアンサンブル分類 Mdl に基づいて、テーブルまたは行列 X 内の予測子データに対する予測クラス ラベルのベクトルを返します。

labels = predict(Mdl,X,Name,Value) は、1 つ以上の Name,Value 引数のペアによって指定された追加オプションを使用します。

[labels,score] = predict(___) は、前の構文の入力引数のいずれかを使用して、ラベルが特定のクラスから派生する尤度を示す分類スコアの行列 (score) も返します。X 内の各観測値について、予測クラス ラベルは、すべてのクラスの中で最大のスコアに対応します。

入力引数

Mdl

fitcensemble で作成されたアンサンブル分類、または compact で作成されたコンパクトなアンサンブル分類。

X

分類対象の予測子データ。数値行列またはテーブルを指定します。

X の各行は 1 つの観測値に対応し、各列は 1 つの変数に対応します。

  • 数値行列の場合

    • X の列を構成する変数の順序は、Mdl に学習させた予測子変数の順序と同じでなければなりません。

    • テーブル (たとえば Tbl) を使用して Mdl に学習をさせた場合、Tbl に含まれている予測子変数がすべて数値変数であれば、X を数値行列にすることができます。学習時に Tbl 内の数値予測子をカテゴリカルとして扱うには、fitcensemble の名前と値のペアの引数 CategoricalPredictors を使用してカテゴリカル予測子を同定します。Tbl に種類の異なる予測子変数 (数値および categorical データ型など) が混在し、X が数値行列である場合、predict でエラーがスローされます。

  • テーブルの場合

    • predict は、文字ベクトルの cell 配列ではない cell 配列と複数列の変数をサポートしません。

    • テーブル (たとえば Tbl) を使用して Mdl に学習をさせた場合、X 内のすべての予測子変数は変数名およびデータ型が、(Mdl.PredictorNames に格納されている) Mdl に学習させた変数と同じでなければなりません。ただし、X の列の順序が Tbl の列の順序に対応する必要はありません。TblX に追加の変数 (応答変数や観測値の重みなど) を含めることができますが、predict はこれらを無視します。

    • 数値行列を使用して Mdl に学習をさせた場合、Mdl.PredictorNames 内の予測子名と X 内の対応する予測子変数名が同じでなければなりません。学習時に予測子の名前を指定する方法については、fitcensemble の名前と値のペアの引数 PredictorNames を参照してください。X 内の予測子変数はすべて数値ベクトルでなければなりません。X に追加の変数 (応答変数や観測値の重みなど) を含めることができますが、predict はこれらを無視します。

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で閉じなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

'Learners'

弱学習器 predict のインデックスは、応答の計算のために数値ベクトルを使用します。

既定値: 1:T。ここで T は、Mdl 内の弱学習器の数を示します。

'UseObsForLearner'

NT 列のサイズの logical 行列です。

  • NX の行の数です。

  • T は、Mdl に存在する弱学習器の数です。

UseObsForLearner(i,j)true のとき、学習器 jX の行 i のクラスの予測に使用されます。

既定値: true(N,T)

出力引数

labels

分類ラベルのベクトル。labels のデータ型は、学習 Mdl で使用されるラベルと同じです。(string 配列は文字ベクトルの cell 配列として扱われます)。

score

1 観測値あたり 1 行、1 クラスあたり 1 列の行列。各ツリーによって各観測値および各クラスに生成されたスコアは、このクラスから発生する観測値の確率であり、ツリーのリーフでこのクラスの観測値の分数として計算されます。predict はアンサンブル内のすべてのツリーでこれらのスコアの平均を計算します。

すべて展開する

フィッシャーのアヤメのデータセットを読み込みます。標本サイズを調べます。

load fisheriris
N = size(meas,1);

データを学習セットとテスト セットに分割します。データの 10% を検定用にホールドアウトします。

rng(1); % For reproducibility
cvp = cvpartition(N,'Holdout',0.1);
idxTrn = training(cvp); % Training set indices
idxTest = test(cvp);    % Test set indices

学習データをテーブルに格納します。

tblTrn = array2table(meas(idxTrn,:));
tblTrn.Y = species(idxTrn);

AdaBoostM2 と学習セットを使用して、アンサンブル分類に学習をさせます。弱学習器として木の切り株を指定します。

t = templateTree('MaxNumSplits',1);
Mdl = fitcensemble(tblTrn,'Y','Method','AdaBoostM2','Learners',t);

テスト セットについてラベルを予測します。モデルの学習にはテーブル データを使用しましたが、ラベルの予測には行列を使用できます。

labels = predict(Mdl,meas(idxTest,:));

テスト セットの混同行列を作成します。

Mdl.ClassNames
ans = 3x1 cell array
    {'setosa'    }
    {'versicolor'}
    {'virginica' }

confusionmat(species(idxTest),labels)
ans = 3×3

     8     0     0
     0     2     1
     0     0     4

Mdl は、テスト セット内の 1 つの versicolor 種のアヤメを virginica として誤分類します。

詳細

すべて展開する

拡張機能

R2011a で導入