Main Content

makecdiscr

パラメーターから判別分析分類器を構築する

説明

cobj = makecdiscr(Mu,Sigma) は、クラス平均 Mu と共分散行列 Sigma からコンパクトな判別分析分類器を構築します。

cobj = makecdiscr(Mu,Sigma,Name,Value) は、1 つ以上の名前と値のペアの引数で指定された追加オプションによりコンパクトな分類器を構築します。たとえば、誤分類のコストや各クラスの事前確率を指定できます。

すべて折りたたむ

フィッシャーのアヤメのデータの平均と共分散からコンパクトな線形判別分析分類器を構築します。

load fisheriris
mu(1,:) = mean(meas(1:50,:));
mu(2,:) = mean(meas(51:100,:));
mu(3,:) = mean(meas(101:150,:));

mm1 = repmat(mu(1,:),50,1);
mm2 = repmat(mu(2,:),50,1);
mm3 = repmat(mu(3,:),50,1);
cc = meas;
cc(1:50,:) = cc(1:50,:) - mm1;
cc(51:100,:) = cc(51:100,:) - mm2;
cc(101:150,:) = cc(101:150,:) - mm3;
sigstar = cc' * cc / 147; % unbiased estimator of sigma
cpct = makecdiscr(mu,sigstar,...
   'ClassNames',{'setosa','versicolor','virginica'})
cpct = 
  CompactClassificationDiscriminant
           PredictorNames: {'x1'  'x2'  'x3'  'x4'}
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: {'setosa'  'versicolor'  'virginica'}
           ScoreTransform: 'none'
              DiscrimType: 'linear'
                       Mu: [3x4 double]
                   Coeffs: [3x3 struct]


入力引数

すべて折りたたむ

クラス平均。サイズのスカラー値クラス平均の Kp 列の行列として指定されます。K はクラス数で、p は予測子の数です。Mu の各行は、対応するクラスの多変量正規分布の平均を表します。クラス インデックスは、ClassNames 属性にあります。

データ型: single | double

クラス内共分散。スカラー値の行列として指定します。

  • 線形判別の場合、Sigma はサイズ pp 列の対称な半正定値行列で、p は予測子の数です。

  • 2 次判別の場合、Sigma はサイズ p x p x K の配列で、K はクラスの数です。各 i で、Sigma(:,:,i) は対称な半正定値行列です。

データ型: single | double

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: 'ClassNames',{'setosa' 'versicolor' 'virginica'} は、'setosa''versicolor''virginica' をグループ化変数として使用する判別分析分類器を指定します。

Mu の順のクラス名。'ClassNames' とグループ化変数を含む配列で構成される、コンマ区切りのペアとして指定します。数値ベクトル、categorical ベクトル、logical ベクトル、文字配列、string 配列、文字ベクトルの cell 配列など、グループ化変数用のデータ型のいずれかを使用します。

既定値は 1:K です。ここで K はクラスの数 (Mu の行の数) です。

例: 'ClassNames',{'setosa' 'versicolor' 'virginica'}

データ型: single | double | logical | char | string | cell

誤分類のコスト。'Cost' と正方行列で構成されるコンマ区切りのペアとして指定します。ここで、Cost(i,j) は、真のクラスが i である場合に点をクラス j に分類するコストです。または、Cost は 次の 2 つのフィールドをもつ構造体 S の場合もあります。2 つのフィールドは、y と同じ型のグループ名を表す変数が格納されている S.ClassNames と、コスト行列が格納されている S.ClassificationCosts です。

既定値は、i~=j の場合は Cost(i,j)=1i=j の場合は Cost(i,j)=0 です。

データ型: single | double | struct

予測子変数名。'PredictorNames' と文字ベクトルの cell 配列または string 配列から構成されるコンマ区切りのペアとして指定します。この配列には、X と同じ順序で予測子変数名を格納します。

データ型: string | cell

各クラスの事前確率。'Prior' と以下のいずれかで構成されるコンマ区切りのペアとして指定します。

  • すべてのクラスの事前確率が等しいことを意味する文字ベクトル 'uniform'

  • クラスごとに 1 つのスカラー値が格納されているベクトル

  • 構造体 S には 2 つのフィールドがあります。

    • ClassNames と同じ型の変数としてクラス名を含む S.ClassNames

    • 対応する確率のベクトルを含む S.ClassProbs

データ型: char | string | single | double | struct

応答変数名。'ResponseName' と、応答変数 y の名前が格納されている文字ベクトルまたは string スカラーから構成されるコンマ区切りのペアとして指定します。

例: 'ResponseName','Response'

データ型: char | string

出力引数

すべて折りたたむ

判別分析分類器。クラス CompactClassificationDiscriminant の判別分析分類器オブジェクトとして返されます。predict メソッドを使用すると、新しいデータの分類ラベルを予測できます。

ヒント

  • cobj を構築した後で、ドット表記を使用して判別タイプを変更できます。

    cobj.DiscrimType = 'discrimType'

    ここで、discrimType は、関数 'linear''quadratic''diagLinear''diagQuadratic''pseudoLinear''pseudoQuadratic' のいずれかです。線形タイプ間または 2 次タイプ間での変更は可能ですが、線形タイプと 2 次タイプの間の変更はできません。

  • cobjSigma が行列である場合の線形分類器です。cobjSigma が 3 次元配列である場合の 2 次分類器です。

バージョン履歴

R2014a で導入