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

ClassificationKNN

说明

ClassificationKNNは,距離計量と最近傍の個数の両方を変更できる最近傍分類モデルです。ClassificationKNN分类器には学习データが格纳されるので,このモデルを使用して再代入予测を计算できます。または,このモデルと预测メソッドを使用して新しい観测値を分类できます。

作成

ClassificationKNNモデルの作成にはfitcknnを使用します。

プロパティ

すべて展開する

KNNのプロパティ

複数のクラスで最小コストが同じである場合に预测が使用するタイブレークアルゴリズム。次のいずれかを指定します。

  • “最小”- 同顺位グループの中で最小インデックスを使用します。

  • “最近的”- 同顺位グループの中で最近傍のあるクラスを使用します。

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

既定では,K最近傍の中で同じ个数の最近傍点を复数のクラスがもつ场合に,同顺位が発生します。BreakTiesは,IncludeTiesである場合に適用されます。

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

距离计量。文字ベクトルまたは关数ハンドルを指定します。可能な値はNSMethodプロパティに応じて异なります。

NSMethod 可能な距离计量
“详尽” ExhaustiveSearcherの任意の距離計量
'kdtree' “cityblock”“切比雪夫”“欧几里德”,または“闵可夫斯基

次の表は,ExhaustiveSearcherの距離計量の一覧です。

说明
“cityblock” 市街地距离。
“切比雪夫” チェビシェフ距離(最大座標差)。
“相关” 1から,一連の値として扱われる観測間の標本線形相関係数を引きます。
“余弦” 1から,ベクトルとして扱われる観测间の夹角の余弦を引きます。
“欧几里德” ユークリッド距離。
“汉明” 異なる座標の比率を示すハミング距離。
“jaccard” 1から,ジャカード係数(異なる非ゼロ座標の比率)を引いた値。
“mahalanobis” 正定共分散行列Cを使用して计算される,マハラノビス距离。Cの既定値はXの标本共分散行列であり,nancov (X)によって计算されます。Cについて異なる値を指定するには,ドット表記を使用してMDLDistParameterプロパティを设定します。
“闵可夫斯基 ミンコフスキー距離。既定の指数は2です。异なる指数を指定するには,ドット表记を使用してMDLDistParameterプロパティを设定します。
“seuclidean” 標準化されたユークリッド距離。Xと各クエリ点の間の各座標差分がスケーリングされまつす。まり,スケール値小号で除算されます。小号の既定値はXから計算される標準偏差で,S = nanstd(X)です。小号について異なる値を指定するには,ドット表記を使用してMDLDistParameterプロパティを设定します。
“枪兵” 1から,観測値間の標本スピアマンの順位相関(値の系列として扱われる)を引いた値。
@distfun

距离关数ハンドル。distfunは次の形式です

功能D2 = distfun(ZI,ZJ)距离的计算%
ここで,

  • は1行のXまたはÿを含む1ñ列のベクトルです。

  • ZJは複数行のXまたはÿを含むM2ñ列の行列です。

  • D2M21列の距离のベクトルであり,D2 (k)は観测値ZJ (k,:)の間の距離です。

詳細は,距離計量を参照してください。

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

NSMethod'kdtree'である場合,ドット表記を使用して距离を変更できる距离计量は,“cityblock”“切比雪夫”“欧几里德”および“闵可夫斯基のみです。

データ型:字符|function_handle

距離重み付け関数。次の表のいずれかの値を指定します。

说明
“平等” 重み付けなし
“逆” 重みは1 /距離です
“squaredinverse” 重みは1 /距離2です
@fcn fcnは,非负の距离の行列を受け入れ,非负の距离の重みが含まれている同じサイズの行列を返す关数です。たとえば,“squaredinverse”@(d)d ^( - 2)と同じです。

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

データ型:字符|function_handle

距離計量のパラメーター。次の表に記載されている値のいずれかを指定します。

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

他の距離計量の場合,DistParameterの値は[]でなければなりません。

ドット表記を使用し,DistParameterを変更できます。mdl.DistParameter = newDistParameter。ただし,距离“mahalanobis”または“seuclidean”である場合は,DistParameterを変更できません。

データ型:|

k番目に小さい距離値の近傍をすべて预测に含めるかどうかを示す同順位使用フラグ。または真正を指定します。IncludeTies真正である場合,すべての近傍が预测に含まれます。それ以外の场合,预测は正確にk個の近傍を使用します(BreakTiesプロパティを参照)。

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

データ型:合乎逻辑

このプロパティは読み取り専用です。

最近傍探索法。'kdtree'または“详尽”のいずれかを指定します。

  • 'kdtree'-ķd木を作成および使用して最近傍を探索します。

  • “详尽”- 网罗的探索アルゴリズムを使用します新しい点xnewのクラスを予测するときに,X内のすべての点からxnewまでの距离を计算して最近傍を探索します。

Xの列数が10以下で,Xがスパースではなく,距离计量が'kdtree'タイプである场合,既定値は'kdtree'です。それ以外の場合,既定値は“详尽”です。

予测时に各点の分类に使用するX内の最近傍の个数。正の整数値を指定します。

ドット表記を使用してNumNeighborsを変更します。mdl。ñumNeighbors = newNumNeighbors

データ型:|

他の分類のプロパティ

このプロパティは読み取り専用です。

カテゴリカル予測子のインデックス。正の整数のベクトルを指定します。CategoricalPredictorsには,カテゴリカル予测子が含まれている予测子データの列に対応するインデックス値を格纳します。どの予测子もカテゴリカルではない场合,このプロパティは空([])になります。

データ型:

このプロパティは読み取り専用です。

重複を削除した学習データÿ内のクラス名.categorical配列,文字配列,逻辑ベクトル,数値ベクトル,または文字ベクトルの细胞配列を指定します。类名のデータ型はÿと同じです。(字符串配列は文字ベクトルの细胞配列として扱われます)。

データ型:カテゴリカル|字符|合乎逻辑|||细胞

点の误分类コスト。正方行列を指定します。成本(I,J)は,真のクラスが一世である场合に点をクラスĴに分类するコストです(行は真のクラス,列は予测したクラスに対応します)。成本の行と列の顺序は,类名のクラスの顺序に対応します。成本の行および列の数は,応答に含まれている一意なクラスの数です。

既定では,成本(I,J)= 1I〜= j的の場合)および成本(I,J)= 0我= j的の场合)です。つまり,正しい分类のコストは0,误った分类のコストは1です。

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

データ型:|

このプロパティは読み取り専用です。

展开された予测子名。文字ベクトルの细胞配列を指定します。

モデルがカテゴリカル変数用のエンコーディングを使用している场合,ExpandedPredictorNamesには展開された変数を表す名前が格納されます。それ以外の場合,ExpandedPredictorNamesPredictorNamesと同じです。

データ型:细胞

このプロパティは読み取り専用です。

ClassificationKNNモデルに学习をさせるために使用したパラメーター。构造体を指定します。

データ型:構造体

このプロパティは読み取り専用です。

予测子の平均。长さnumel(PredictorNames)の数値ベクトルを指定します。

fitcknnを使用してモデルに学习をさせるときにMDLを標準化しなかった場合,は空([])になります。

データ型:|

このプロパティは読み取り専用です。

ClassificationKNNモデルに学習をさせるときに使用した観測値の個数。正の整数スカラーを指定します。为NaN値が含まれている行はあてはめに使用されないので,この数値は学习データの行数より小さくなる可能性があります。

データ型:

このプロパティは読み取り専用です。

予测子変数の名前。文字ベクトルの细胞配列を指定します。変数名の顺序は,学习データXに現れる順序と同じです。

データ型:细胞

各クラスの事前确率。数値ベクトルを指定します。之前の要素の顺序は,类名のクラスの顺序に対応します。

ベクトル之前を追加または変更するには,次のようにドット表記を使用します。mdl。之前= priorVector

データ型:|

このプロパティは読み取り専用です。

応答変数名。文字ベクトルを指定します。

データ型:字符

このプロパティは読み取り専用です。

ClassificationKNNモデルのあてはめに使用した元のデータXの行.logicalベクトルを指定します。すべての行を使用した场合,このプロパティは空になります。

データ型:合乎逻辑

スコア変換。文字ベクトルまたは関数ハンドルのいずれかを指定します。

次の表は,使用可能な文字ベクトルをまとめています。

说明
'doublelogit' 1 / (1 + e-2x
“invlogit” 日志(X /(1 - X))
“ismax” 最大のスコアをもつクラスのスコアを1に設定し,他のすべてのクラスのスコアを0に設定します。
'Logit模型' 1 / (1 + e- x
'没有'または“身份” x(変換なし)
“标志” x <0的のとき-1
x = 0时のとき0
X> 0のとき1
“对称” 2 x - 1
“symmetricismax” 最大のスコアをもつクラスのスコアを1に設定し,他のすべてのクラスのスコアを1に設定します。
“symmetriclogit” 2 /(1 + E- x) - 1

MATLAB®関数またはユーザー定義関数の場合は,スコア変換用の関数ハンドルを使用します。関数ハンドルは,行列(元のスコア)を受け入れて同じサイズの行列(変換したスコア)を返さなければなりません。

ドット表記を使用してScoreTransformを変更します。mdl。小号coreTransform = newScoreTransform

データ型:字符|function_handle

このプロパティは読み取り専用です。

予测子の标准偏差。长さnumel(PredictorNames)の数値ベクトルを指定します。

学习时に予测子変数を标准化しなかった场合,σは空([])になります。

データ型:|

このプロパティは読み取り専用です。

観测値の重み。ÿと同じ行数をもつ非負値のベクトルを指定します。w ^の各エントリは,ÿで該当する観測の相対的な重要性を示します。

データ型:|

このプロパティは読み取り専用です。

标准化されていない予测子データ。数値行列を指定します。Xの各列が1つの予测値(変数)を表し,各行が1つの観测値を表します。

データ型:|

このプロパティは読み取り専用です。

クラスラベル.categorical配列,文字配列的,逻辑的ベクトル,数値ベクトル,または文字ベクトルの细胞配列を指定します。ÿの各値は,Xの対応する行について観測されたクラスラベルです。

ÿのデータ型は,モデルの学習に使用したÿのデータと同じです。(字符串配列は文字ベクトルの细胞配列として扱われます)。

データ型:||合乎逻辑|字符|细胞|カテゴリカル

ハイパーパラメーター最適化のプロパティ

このプロパティは読み取り専用です。

ハイパーパラメーターの交差検証最適化。ハイパーパラメーターおよび関連する値が含まれているテーブルまたはBayesianOptimizationオブジェクトを指定します。fitcknnを使用してモデルを作成するときに名前と値のペアの引数'OptimizeHyperparameters'が空以外であった場合,このプロパティは空以外になります。値は,モデル作成時の名前と値のペアの引数“HyperparameterOptimizationOptions”の设定に依存します。

  • 'bayesopt'(既定) -BayesianOptimizationクラスのオブジェクト

  • 'gridsearch'または“randomsearch”- 使用したハイパーパラメーター,観测された目的关数の値(交差検证损失),および最低(最良)から最高(最悪)までの観测値の顺位が格纳されているテーブル

オブジェクト关数

compareHoldout 新しいデータを使用して2つの分類モデルの精度を比較
crossval 交差検证済みķ最近傍分类器
边缘 k最近傍分類器のエッジ
损失 k最近傍分類器の損失
保证金 k最近傍分類器のマージン
预测 k最近傍分類モデルの使用によるラベルの予測
resubEdge 再代入によるķ最近傍分类器のエッジ
resubLoss 再代入によるķ最近傍分类器の损失
resubMargin 再代入によるk最近傍分類器のマージン
resubPredict k最近傍分類器の再代入ラベルを予測

すべて折りたたむ

フィッシャーのアヤメのデータに対してķ最近傍分類器に学習をさせます。ここで,予測子の最近傍の個数ķは5です。

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

加载fisheririsX =量;Y =物种;

Xは150本のアヤメについて4つの花弁の測定値が含まれている数値行列です。ÿは,対応するアヤメの種類が含まれている文字ベクトルの细胞配列です。

5最近傍分類器を学習させます。非カテゴリカル予測子データを標準化します。

Mdl = fitcknn (X, Y,'NumNeighbors'5,“标准化”,1)
MDL = ClassificationKNN ResponseName: 'Y' CategoricalPredictors:[]类名:{ 'setosa' '云芝' '锦葵'} ScoreTransform: '无' NumObservations:150距离: '欧几里得' NumNeighbors:5的属性,方法

MDLは学習させたClassificationKNN分类器であり,一部のプロパティはコマンドウィンドウに表示されます。

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

Mdl.ClassNames
ANS =3X1单元阵列{ 'setosa'} { '云芝'} { '锦葵'}
Mdl.Prior
ANS =1×30.3333 0.3333 0.3333

Mdl.Priorにはクラスの事前确率が格纳されます。これは,fitcknnの名前と値のペアの引数“之前”を使用して指定できます。クラス事前确率の顺序はMdl.ClassNamesのクラスの順序に対応します。既定では,事前確率はデータ内のクラスのそれぞれの相対的頻度です。

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

Mdl.Prior= [0.5 0.2 0.3];

MDL预测に渡すと,新しい测定値にラベルを付けることができますま。た,crossvalに渡すと,分類器を交差検証できます。

ヒント

  • 关数紧凑的は,学習データのプロパティと,新しい観測値のラベルの予測には不要な他のプロパティを削除することにより,ほとんどの分類モデルのサイズを削減します同意最近棒分類モデルではラベルの予測にすべての学習データが必要なので,ClassificationKNNモデルのサイズを小さくすることはできません。

代替機能

knnsearchは,点のk最近傍を探索します。rangesearchは,固定距离内の点をすべて探索します。クエリデータの分类に示すように,これらの関数は分類に使用することができます。分類を実行する場合は,あるステップで(fitcknnを使用して)分類器に学習をさせ,別のステップで(预测を使用して)分類を行うことができるので,ClassificationKNNモデルを使用する方が便利です。または,fitcknnを呼び出すときにいずれかの交差検证オプションを使用して,K最近傍分类モデルに学习をさせることもできます。この场合,fitcknnClassificationPartitionedModel交差検証済みモデルオブジェクトを返します。

拡張機能

R2012aで​​导入