このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
createns
最近傍探索モデル オブジェクトの作成
説明
は、学習データが格納されている n 行 K 列の数値行列 NS
= createns(X
)X
を使用して、ExhaustiveSearcher
または KDTreeSearcher
モデル オブジェクトのいずれかを作成します。
では、1 つ以上の名前と値のペアの引数を使用して追加オプションを指定します。たとえば、NS
= createns(X
,Name,Value
)NSMethod
を指定すると、作成するオブジェクトのタイプを決定できます。
例
既定の網羅的最近傍探索モデルの学習
フィッシャーのアヤメのデータセットを読み込みます。
load fisheriris
X = meas;
[n,k] = size(X)
n = 150
k = 4
X
には 150 個の観測値と 4 つの予測子があります。
データセット全体を学習データとして使用して、網羅的最近傍探索モデルを準備します。
Mdl1 = ExhaustiveSearcher(X)
Mdl1 = ExhaustiveSearcher with properties: Distance: 'euclidean' DistParameter: [] X: [150x4 double]
Mdl1
は ExhaustiveSearcher
モデル オブジェクトで、プロパティがコマンド ウィンドウに表示されます。このオブジェクトには、距離計量など、学習済みアルゴリズムに関する情報が格納されています。プロパティの値は、ドット表記を使用して変更できます。
または、createns
を使用し、探索法として 'exhaustive'
を指定することによっても、網羅的最近傍探索モデルを準備できます。
Mdl2 = createns(X,'NSMethod','exhaustive')
Mdl2 = ExhaustiveSearcher with properties: Distance: 'euclidean' DistParameter: [] X: [150x4 double]
Mdl2
は ExhaustiveSearcher
モデル オブジェクトでもあり、Mdl1
と等価です。
一連のクエリ データに対する最近傍を X
から探索するには、ExhaustiveSearcher
モデル オブジェクトとクエリ データを knnsearch
または rangesearch
に渡します。
既定の Kd 木を成長させる
ユークリッド距離を使用する 4 次元の Kd 木を成長させます。
フィッシャーのアヤメのデータセットを読み込みます。
load fisheriris
X = meas;
[n,k] = size(X)
n = 150
k = 4
X
には 150 個の観測値と 4 つの予測子があります。
データセット全体を学習データとして使用して、4 次元の Kd 木を成長させます。
Mdl1 = KDTreeSearcher(X)
Mdl1 = KDTreeSearcher with properties: BucketSize: 50 Distance: 'euclidean' DistParameter: [] X: [150x4 double]
Mdl1
は KDTreeSearcher
モデル オブジェクトで、プロパティがコマンド ウィンドウに表示されます。このオブジェクトには、距離計量など、成長した 4 次元 Kd 木に関する情報が格納されています。プロパティの値は、ドット表記を使用して変更できます。
または、createns
を使用して Kd 木を成長させることができます。
Mdl2 = createns(X)
Mdl2 = KDTreeSearcher with properties: BucketSize: 50 Distance: 'euclidean' DistParameter: [] X: [150x4 double]
Mdl2
は KDTreeSearcher
モデル オブジェクトでもあり、Mdl1
と等価です。X
には 4 つの列があり、既定の距離計量はユークリッドであるため、createns
は既定では KDTreeSearcher
モデルを作成します。
一連のクエリ データに対する最近傍を X
から探索するには、KDTreeSearcher
モデル オブジェクトとクエリ データを knnsearch
または rangesearch
に渡します。
ミンコフスキー距離計量による Kd 木の成長
指数が 5 のミンコフスキー距離を使用して Kd 木を成長させます。
フィッシャーのアヤメのデータセットを読み込みます。花弁の寸法を格納する変数を作成します。
load fisheriris
X = meas(:,3:4);
Kd 木を成長させます。指数が 5 のミンコフスキー距離を指定します。
Mdl = createns(X,'Distance','minkowski','P',5)
Mdl = KDTreeSearcher with properties: BucketSize: 50 Distance: 'minkowski' DistParameter: 5 X: [150x2 double]
X
には 2 つの列があり、距離計量がミンコフスキーであるため、createns
は既定では KDTreeSearcher
モデル オブジェクトを作成します。
マハラノビス距離によるクエリ データの最近傍の探索
関数 createns
を使用して、網羅的探索モデル オブジェクトを作成します。k 最近傍を探索するため、オブジェクトとクエリ データを関数 knnsearch
に渡します。
フィッシャーのアヤメのデータセットを読み込みます。
load fisheriris
クエリ セットとして使用するため、5 つのアヤメのデータを無作為に予測子データから抽出します。
rng('default'); % For reproducibility n = size(meas,1); % Sample size qIdx = randsample(n,5); % Indices of query data X = meas(~ismember(1:n,qIdx),:); Y = meas(qIdx,:);
学習データを使用して網羅的最近傍探索モデルを準備します。最近傍の探索にマハラノビス距離を指定します。
Mdl = createns(X,'Distance','mahalanobis')
Mdl = ExhaustiveSearcher with properties: Distance: 'mahalanobis' DistParameter: [4x4 double] X: [145x4 double]
距離計量がマハラノビスであるため、createns
は既定では ExhaustiveSearcher
モデル オブジェクトを作成します。
マハラノビス距離の計算には、学習データ内の予測子 (列) の共分散行列が使用されます。この値を表示するには、Mdl.DistParameter
を使用します。
Mdl.DistParameter
ans = 4×4
0.6547 -0.0368 1.2320 0.5026
-0.0368 0.1914 -0.3227 -0.1193
1.2320 -0.3227 3.0671 1.2842
0.5026 -0.1193 1.2842 0.5800
求める学習データ (Mdl.X
) のインデックスは、クエリ データ (Y
) の各点における 2 つの最近傍です。
IdxNN = knnsearch(Mdl,Y,'K',2)
IdxNN = 5×2
5 6
98 95
104 128
135 65
102 115
IdxNN
の各行は、クエリ データの観測値に対応します。列の順序は、距離の昇順で並べ替えた最近傍の順序に対応します。たとえば、マハラノビス距離に基づくと、Y(3,:)
の 2 番目の最近傍は X(128,:)
になります。
入力引数
X
— 学習データ
数値行列
学習データ。数値行列を指定します。X
には、それぞれが観測値 (インスタンスまたは事例) に対応する n 個の行と、それぞれが予測子 (特徴) に対応する K 個の列が含まれます。
データ型: single
| double
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: NS = createns(X,'Distance','mahalanobis')
は、最近傍を探索するときにマハラノビス距離計量を使用する ExhaustiveSearcher
モデル オブジェクトを作成します。
NSMethod
— 最近傍探索法
'kdtree'
| 'exhaustive'
作成するオブジェクトのタイプを定義するために使用される最近傍探索法。'NSMethod'
と 'kdtree'
または 'exhaustive'
から構成されるコンマ区切りのペアとして指定します。
'kdtree'
—createns
は Kd 木アルゴリズムを使用してKDTreeSearcher
モデル オブジェクトを作成します。'exhaustive'
—createns
は網羅的探索アルゴリズムを使用してExhaustiveSearcher
モデル オブジェクトを作成します。
次の 3 つの条件が満たされる場合、既定値は 'kdtree'
です。
それ以外の場合、既定値は 'exhaustive'
です。
例: 'NSMethod','exhaustive'
Distance
— 距離計量
'euclidean'
(既定値) | 文字ベクトルまたは string スカラーによる距離計量名 | カスタム距離関数
以後のクエリ点について最近傍を探索するために knnsearch
または rangesearch
を呼び出すときに使用する距離計量。'Distance'
と、文字ベクトルまたは string スカラーによる距離計量名、または関数ハンドルから構成されるコンマ区切りのペアとして指定します。
両方のタイプの最近傍探索モデルについて、createns
は次の距離計量をサポートします。
値 | 説明 |
---|---|
'chebychev' | チェビシェフ距離 (最大座標差)。 |
'cityblock' | 市街地距離。 |
'euclidean' | ユークリッド距離。 |
'minkowski' | ミンコフスキー距離。既定の指数は 2 です。別の指数を指定するには、'P' 名前と値のペアの引数を使用します。 |
createns
が網羅的探索アルゴリズムを使用する ('NSMethod'
が 'exhaustive'
) 場合、createns
は次の距離計量もサポートします。
値 | 説明 |
---|---|
'correlation' | 1 から、観測値間の標本線形相関を減算 (値の系列として処理) |
'cosine' | (行ベクトルとして扱われる) 観測値間の夾角の余弦を 1 から減算 |
'hamming' | ハミング距離 (異なる座標の比率) |
'jaccard' | 1 からジャカード係数 (異なる非ゼロ座標の比率) を減算 |
'mahalanobis' | マハラノビス距離 |
'seuclidean' | 標準化されたユークリッド距離 |
'spearman' | 1 から観測値間の標本スピアマン順位相関係数を減算 (値の系列として処理) |
createns
が網羅的探索アルゴリズムを使用する ('NSMethod'
が 'exhaustive'
) 場合、@
を使用してカスタム距離計量の関数ハンドル (たとえば @distfun
) を指定することもできます。カスタムな距離関数は、次のようになっていなければなりません。
function D2 = distfun(ZI,ZJ)
という形式になっている。次の引数を受け入れる。
X
またはクエリ点Y
の 1 行が含まれている 1 行 K 列のベクトルZI
。K はX
の列数です。X
またはY
の複数行が含まれている m 行 K 列の行列ZJ
。m は正の整数です。
m 行 1 列の距離のベクトル
D2
を返す。D2(
は、観測値j
)ZI
とZJ(
の間の距離です。j
,:)
詳細は、距離計量を参照してください。
例: 'Distance','minkowski'
P
— ミンコフスキー距離計量の指数
2
(既定値) | 正のスカラー
ミンコフスキー距離計量の指数。'P'
と正のスカラー値をコンマで区切って指定します。この引数は、'Distance'
が 'minkowski'
である場合のみ有効です。
例: 'P',3
データ型: single
| double
Cov
— マハラノビス距離計量の共分散行列
cov(X,'omitrows')
(既定値) | 正定値行列
マハラノビス距離計量の共分散行列。'Cov'
と K 行 K 列の正定値行列から構成されるコンマ区切りのペアとして指定します。K は X
の列数です。この引数は、'Distance'
が 'mahalanobis'
である場合のみ有効です。
例: 'Cov',eye(3)
データ型: single
| double
Scale
— 標準化されたユークリッド距離計量のスケール パラメーター値
std(X,'omitnan')
(既定値) | 非負の数値ベクトル
標準化されたユークリッド距離計量のスケール パラメーター値。'Scale'
と長さ K の非負の数値ベクトルから構成されるコンマ区切りのペアとして指定します。K は X
の列数です。学習データとクエリ データの間の距離は、対応する Scale
の要素を使用してスケーリングされます。この引数は、'Distance'
が 'seuclidean'
である場合のみ有効です。
例: 'Scale',quantile(X,0.75) - quantile(X,0.25)
データ型: single
| double
BucketSize
— 各葉ノードの最大データ点数
50
(既定値) | 正の整数
Kd 木の各葉ノードにおける最大データ点数。'BucketSize'
と正の整数をコンマで区切って指定します。
この引数は、KDTreeSearcher
モデル オブジェクトを作成する場合のみ有効です。
例: 'BucketSize',10
データ型: single
| double
出力引数
NS
— 最近傍探索モデル
ExhaustiveSearcher
モデル オブジェクト | KDTreeSearcher
モデル オブジェクト
最近傍探索モデル。ExhaustiveSearcher
モデル オブジェクトまたは KDTreeSearcher
モデル オブジェクトとして返されます。
最近傍探索モデル オブジェクトを作成すると、knnsearch
による最近傍探索または rangesearch
による半径探索を実行して、クエリ データに対する学習データの近傍点を探索できます。
バージョン履歴
R2010a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)