ドキュメンテーション

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

ClassificationKNN クラス

説明

最近傍分類オブジェクト。ここで距離軽量 ("最近傍") と近傍の数の両方とも変更できます。このオブジェクトはメソッド predict を使用して新しい観測を分類します。オブジェクトには、学習に使用したデータが格納されているため、再置換予測を計算できます。

構築

mdl = fitcknn(X,y)k 最近傍分類モデルを作成します。

mdl = fitcknn(X,y,Name,Value) では、1 つ以上の Name,Value の引数ペアで指定された追加オプションを使用して、分類器を作成します。詳細は、「fitcknn」を参照してください。

入力引数

すべて折りたたむ

X — 予測子の値数値行列

予測子の値。数値行列として指定します。X の各列が 1 つの変数を表し、各行が 1 つの観測値を表します。

データ型: single | double

y — 分類値数値ベクトル | カテゴリカル ベクトル | 論理ベクトル | 文字配列 | 文字列のセル配列

分類値。数値ベクトル、カテゴリカル ベクトル、論理ベクトル、文字配列または文字列のセル配列。行数は X と同じです。y の各行は、X の対応する行の分類を表します。

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

プロパティ

BreakTies

メソッド predict を指定する文字列は、複数のクラスが同じ最小コストである場合に、同順位を解除するために使用します。既定では、同順位は K 最近傍点の中で同じ数の最近傍点を複数のクラスがもつときに発生します。

  • 'nearest' — 同順位グループの中で最近傍点のあるクラスを使用します。

  • 'random' — 同順位グループの中でランダムなタイブレーカーを使用します。

  • 'smallest' — 同順位グループの中で最小インデックスを使用します。

'BreakTies''IncludeTies'false である場合に適用されます。

ドット表記を使って BreakTies を変更します。mdl.BreakTies = newBreakTies

CategoricalPredictors

どの予測子がカテゴリカルであるかを指定します。

  • 'all' — すべての予測子がカテゴリカルです。

  • [] — カテゴリカル予測子はありません。

ClassNames

重複が削除された学習データ Y の要素のリスト。ClassNames には、数値ベクトル、カテゴリカル変数のベクトル、論理ベクトル、文字配列、文字列のセル配列のいずれかを指定できます。ClassNames のデータ型は、引数 Y のデータ型と同じです。

ドット表記を使って ClassNames を変更します。mdl.ClassNames = newClassNames

Cost

正方行列であり、Cost(i,j) は、その真のクラスが i である場合に点をクラス j に分類するコストです。CostKK 列であり、K はクラスの数です。

ドット表記を使用して、Cost 行列を変更します。 mdl.Cost = costMatrix.

Distance

距離計量を指定する文字列または関数ハンドル。許容される文字列は NSMethod パラメーターに依存します。これは、fitcknn で設定するものであり、ModelParameters のフィールドとして存在するものです。

NSMethod距離計量名
exhaustiveExhaustiveSearcher の任意の距離計量
kdtree'cityblock''chebychev''euclidean'、または 'minkowski'

定義については、「「距離計量」」を参照してください。

ExhaustiveSearcher の距離計量:

説明
'cityblock'市街地距離。
'chebychev'チェビシェフ距離 (最大座標差)。
'correlation'1 から、一連の値として扱われる観測間の標本線形相関係数を引きます。
'cosine'1 から、ベクトルとして扱われる観測間の夾角の余弦を引きます。
'euclidean'ユークリッド距離。
'hamming'異なる座標のパーセンテージとなるハミング距離。
'jaccard'1 から、ジャカード係数 (異なる非ゼロ座標の割合) を引いた値。
'mahalanobis'正定共分散行列 C を使用して計算される、マハラノビス距離。C の既定値は X の標本共分散行列であり、nancov(X) によって計算されます。C に別の値を指定するには、'Cov' 名前と値のペアを使用します。
'minkowski'ミンコフスキー距離。既定の指数は 2 です。別の指数を指定するには、'P' 名前と値のペアを使用します。
'seuclidean'標準化されたユークリッド距離。X と各クエリ点の間の各座標差分がスケーリングされます。つまり、スケール値 S で除算されます。S の既定値は、XS = nanstd(X) から計算される標準偏差です。S に別の値を指定するには、Scale 名前と値のペアを使用します。
'spearman'1 から、観測値間の標本スピアマンの順位相関 (値の系列として扱われる) を引いた値。
@distfun距離関数ハンドル。distfun は次の形式です
function D2 = DISTFUN(ZI,ZJ)
% calculation of  distance
...
ここで以下のようになります。
  • ZI は 1 行の X または Y を含む 1N 列のベクトルです。

  • ZJ は複数行の X または Y を含む M2N 列の行列です。

  • D2M21 列の距離のベクトルであり、D2(k) は観測値 ZIZJ(J,:) の間の距離です。

ドット表記を使って Distance を変更します。mdl.Distance = newDistance

NSMethodkdtree の場合、ドット表記を使用して、'cityblock''chebychev', 'euclidean' または 'minkowski' タイプの Distance のみを変更できます。

DistanceWeight

距離重み付け関数を指定する文字列または関数ハンドル。

DistanceWeight意味
'equal'重み付けなし
'inverse'重みは 1/距離です
'inversesquared'重みは 1/距離2 です
@fcnfcn は、非負の距離の行列を受け入れる関数であり、非負の距離重み付けを含む同じサイズの行列を返します。たとえば、'inversesquared'@(d)d.^(-2) と同じです。

ドット表記を使って DistanceWeight を変更します。mdl.DistanceWeight = newDistanceWeight

DistParameter

距離軽量の追加パラメーター。

距離計量パラメーター
'mahalanobis'正定共分散行列 C
'minkowski'ミンコフスキー距離指数。正のスカラー。
'seuclidean'X の列数と同じ長さをもつ、正のスカラー値のベクトル。

テーブル内あるもの以外の距離計量の値に対して DistParameter[] でなければなりません。

ドット表記を使用し、DistParameter を変更できます。mdl.DistParameter = newDistParameter。ただし、Distancemahalanobis または seuclidean である場合は、DistParameter を変更できません。

IncludeTies

predict に、距離値が K 番目に短い距離に等しいすべての近傍点が含まれるかどうかを示す論理値。IncludeTiestrue の場合、predict はすべての傍点を含みます。それ以外の場合、predict は正確に K の近傍点を使用します ('BreakTies' を参照)。

ドット表記を使って IncludeTies を変更します。mdl.IncludeTies = newIncludeTies

ModelParameters

mdl の学習に使用されるパラメーター。

Mu

長さが numel(PredictorNames) である、予測子平均の数値ベクトル。

mdl を、fitcknn を使用して学習させた際に標準化していない場合、Mu は空 ([]) です。

NumNeighbors

予測時に各点を分類するために X の最近傍点の数を指定する、正の整数。ドット表記を使用して NumNeighbors を変更します。mdl.NumNeighbors = newNumNeighbors

NumObservations

mdl の学習に使用される観測の数。NaN 値を含むデータ行は近似には含まれないため、この数は学習データの行数より小さい値になります。

PredictorNames

学習データ X に現れる順序で配列される、予測子変数の名前のセル配列。ドット表記を使って PredictorNames を変更します。mdl.PredictorNames = newPredictorNames

Prior

各クラスの事前確率。Prior は数値ベクトルで、各エントリは対応する ClassNames プロパティに関連付けられています。

ドット表記を使用して Prior ベクトルを追加または変更します。 obj.Prior = priorVector.

ResponseName

応答変数 Y を記述する文字列。ドット表記を使用して ResponseName を変更します。mdl.ResponseName = newResponseName

Sigma

長さが numel(PredictorNames) である、予測子の標準偏差の数値ベクトル。

mdl を、fitcknn を使用して学習させた際に標準化していない場合、Sigma は空 ([]) です。

W

Y と同じ行数の、非負の重みの数値ベクトル。W の各エントリは、Y で該当する観測の相対的な重要性を示します。

X

標準化されていない予測子の値の数値行列。X の各列が 1 つの予測値 (変数) を表し、各行が 1 つの観測値を表します。

Y

数値ベクトル、カテゴリカル変数のベクトル、論理ベクトル、文字配列または文字列のセル配列。行数は X と同じです。

Y は渡された Y データと同じ型です。

メソッド

crossval交差検定された k 最近傍分類器
edgek 最近傍分類器のエッジ
lossk 最近傍分類器の損失
margink 最近傍分類器のマージン
predictk 最近傍分類の予測
resubEdge再置換による k 最近傍分類器のエッジ
resubLoss再置換による k 最近傍分類器の損失
resubMargin再置換による k 最近傍分類器のマージン
resubPredictk 最近傍分類器の再置換応答の予測

定義

予測

ClassificationKNN は次と同等の手順を使用して点 Xnew の分類を予測します。

  1. Xnew に最近傍である学習セット XNumNeighbors 点を検出します。

  2. それらの最近傍点への NumNeighbors 応答値 Y を検出します。

  3. Y の値の中で最小の予測誤判別コストをもつ分類ラベル Ynew を割り当てます。

詳細は、『predict』ドキュメンテーションの事後確率および予測コストを参照してください。

コピーのセマンティクス

値。コピー操作に対する値クラスの影響については、MATLAB® のドキュメンテーションの「オブジェクトのコピー」を参照してください。

すべて折りたたむ

k 最近傍分類器の学習

フィッシャーのアヤメのデータに対して k 最近傍分類器を構築します。ここで、予測子の最近傍の数 k は 5 です。

フィッシャーのアヤメのデータを読み込みます。

load fisheriris
X = meas;
Y = species;

X は、150 のアヤメの種類に対して 4 つの花弁の測定を含む数値行列です。Y は対応するアヤメの種類を含む文字列のセル配列です。

5 最近傍分類器の学習。非カテゴリカル予測子データを標準化することをお勧めします。

Mdl = fitcknn(X,Y,'NumNeighbors',5,'Standardize',1)
Mdl = 

  ClassificationKNN
     PredictorNames: {'x1'  'x2'  'x3'  'x4'}
       ResponseName: 'Y'
         ClassNames: {'setosa'  'versicolor'  'virginica'}
     ScoreTransform: 'none'
    NumObservations: 150
           Distance: 'euclidean'
       NumNeighbors: 5


Mdl は学習させたClassificationKNN 分類器で、一部のプロパティはコマンド ウィンドウに表示されます。

ドット表記を使用して Mdl プロパティにアクセスします。

Mdl.ClassNames
Mdl.Prior
ans = 

    'setosa'
    'versicolor'
    'virginica'


ans =

    0.3333    0.3333    0.3333

Mdl.Prior はクラス事前確率を含み、fitcknn'Prior' 名前と値のペアの引数を使用して設定できます。クラス事前確率の順序は Mdl.ClassNames のクラスの順序に対応します。既定では、事前確率はデータ内のクラスのそれぞれの相対的頻度です。

学習後に事前確率をリセットすることもできます。たとえば、事前確率を 0.5、0.2 および 0.3 にそれぞれ設定します。

Mdl.Prior = [0.5 0.2 0.3];

Mdl を、たとえば、ClassificationKNN.predictに渡して新しい測定をラベル化できます。またClassificationKNN.crossvalに渡すと分類器に交差検定を実行できます。

関連する例

代替方法

knnsearch は、k 最近傍の点を検索します。rangesearch は、固定距離内のすべての点を検索します。knnsearch を使用した収集点データの分類 に示すように、これらの関数は分類に使用することができます。分類を実行する場合は、1 つの手順で分類を構成して残りの手順で分類ができるため、ClassificationKNN を使用するほうが便利です。また、ClassificationKNN には交差検定のオプションもあります。

この情報は役に立ちましたか?