ドキュメンテーション

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

classify

構文

class = classify(sample,training,group)
class = classify(sample,training,group,'type')
class = classify(sample,training,group,'type',prior)
[class,err] = classify(...)
[class,err,POSTERIOR] = classify(...)
[class,err,POSTERIOR,logp] = classify(...)
[class,err,POSTERIOR,logp,coeff] = classify(...)

説明

class = classify(sample,training,group) は、sample 内のデータの各行を training にあるグループのいずれかに分類します。sampletraining は列数が等しい行列でなければなりません。group は、training のグループ化変数です。一意な値でグループを定義し、各要素は training の対応する行が所属するグループを定義します。group には、カテゴリカル変数、数値ベクトル、文字配列、string 配列、または文字ベクトルの cell 配列を指定できます。traininggroup は同じ行数でなければなりません。classify は、group 内の <undefined> 値、NaN、空の文字ベクトル、空の string、および <missing> string 値を欠損データ値として扱い、training の対応する行を無視します。出力 classsample の各行が割り当てられたグループと、group と同じタイプのグループを示します。

class = classify(sample,training,group,'type') は、判別関数のタイプを指定できます。一重引用符で囲んで type を指定します。type は次のいずれかです。

  • linear — 各グループに対して、プールされた共分散の推定値で、多変量正規密度をあてはめます。これは既定値です。

  • diaglinearlinear に類似していますが、対角線の共分散行列推定値 (単純ベイズ分類器) を使用します。

  • quadratic — グループで階層化された共分散推定値で多変量正規密度を近似します。

  • diagquadraticquadratic に類似していますが、対角線の共分散行列推定値 (単純ベイズ分類器) を使用します。

  • mahalanobis — 階層化された共分散推定値と共に、マハラノビス距離を使用します。

class = classify(sample,training,group,'type',prior) は、そのグループの前の確率を指定できます。prior は、以下のいずれかになります。

  • group 内の一意の値の番号と同じ長さの数値ベクトル (または、group がカテゴリカルである場合、group で定義されたレベルの数)。group が数値またはカテゴリカルである場合、prior の順序は group 内の順序付きの値に対応しなければなりません。それ以外の場合、prior の順序は、group 内に値が現れる順序に対応しなければなりません。

  • フィールドをもつ 1 行 1 列の構造体で次のいずれかです。

    • prob — 数値ベクトル。

    • groupgroup と同じタイプのもので、prob の要素が対応するグループを示す一意の値を含みます。

    構造体として、prior には group で現れないグループを含めることができます。これは training がより大きな学習セットのサブセットである場合に役立つことがあります。classifygroup 配列上以外に、構造体に現れるグループをすべて無視します。

  • 文字ベクトルまたは string スカラー 'empirical'training 内のグループ相対頻度からグループの事前確率を推定すべきであることを示します。

prior は等しい確率、つまり一様分布の数値ベクトルが既定の設定です。誤差率計算を除き、prior はマハラノビス距離による判別には使用しません。

[class,err] = classify(...) は、training データに基づき、誤分類誤差率の推定値 err も返します。classify は見かけの誤差率、つまり誤分類され、グループの前の確率で重み付けされた training の観測値の比率を返します。

[class,err,POSTERIOR] = classify(...) は行列 POSTERIOR も返します。この行列には、j 番目の学習グループが i 番目の標本観測のソースであった事後確率 Pr(group j|obs i) の推定値が格納されます。POSTERIOR は、マハラノビス判別については計算されません。

[class,err,POSTERIOR,logp] = classify(...) は、すべてのグループについて、標本観測の無条件予測確率密度 p(obs i) = ∑p(obs i|group j)Pr(group j) の対数の推定値を含むベクトル logp も返します。logp はマハラノビス距離のためには計算されません。

[class,err,POSTERIOR,logp,coeff] = classify(...) は、グループのペア間の境界曲線の係数を含む構造体配列 coeff も返します。coeff(I,J) の各要素には、グループ I とグループ J を次のフィールドで比較する情報が含まれています。

  • typetype 入力からの判別関数のタイプ

  • name1 - 最初のグループの名前

  • name2 - 2 番目のグループの名前

  • const — 境界方程式の定数項 (K)

  • linear — 境界方程式の線形項の係数 (L)

  • quadratic — 境界方程式の 2 次項の係数 (Q)

linear タイプと diaglinear タイプの場合、quadratic フィールドはありません。0 < K+x*L の場合、配列 sample の行 x はグループ J ではなくグループ I に分類されます。その他のタイプの場合は、0 < K+x*L+x*Q*x' であれば、x はグループ I に分類されます。

すべて折りたたむ

学習データとして、フィッシャーの萼片測定によって分類したアヤメ versicolor と virginica を使用します。

load fisheriris
SL = meas(51:end,1);
SW = meas(51:end,2);
group = species(51:end);
h1 = gscatter(SL,SW,group,'rb','v^',[],'off');
set(h1,'LineWidth',2)
legend('Fisher versicolor','Fisher virginica',...
       'Location','NW')

測定値の格子点を同じスケールで分類します。

[X,Y] = meshgrid(linspace(4.5,8),linspace(2,4));
X = X(:); Y = Y(:);
[C,err,P,logp,coeff] = classify([X Y],[SL SW],...
                                group,'Quadratic');

分類を可視化します。

hold on;
gscatter(X,Y,C,'rb','.',1,'off');
K = coeff(1,2).const;
L = coeff(1,2).linear; 
Q = coeff(1,2).quadratic;
% Function to compute K + L*v + v'*Q*v for multiple vectors
% v=[x;y]. Accepts x and y as scalars or column vectors.
f = @(x,y) K + [x y]*L + sum(([x y]*Q) .* [x y], 2);

h2 = ezplot(f,[4.5 8 2 4]);
set(h2,'Color','m','LineWidth',2)
axis([4.5 8 2 4])
xlabel('Sepal Length')
ylabel('Sepal Width')
title('{\bf Classification with Fisher Training Data}')

代替機能

関数 fitcdiscr は判別分析も実行します。関数 fitcdiscr を使用して分類器に学習をさせ、関数 predict を使用して新しいデータのラベルを予測することができます。fitcdiscr は交差検証とハイパーパラメーター最適化をサポートします。新しい予測または事前確率の変更を行うたびに分類器をあてはめる必要はありません。

参照

[1] Krzanowski, W. J. Principles of Multivariate Analysis: A User's Perspective. New York: Oxford University Press, 1988.

[2] Seber, G. A. F. Multivariate Observations. Hoboken, NJ: John Wiley & Sons, Inc., 1984.

R2006a より前に導入