DistanceMatrix[{u1,u2,…}]
要素 ui, ujの各ペア間の距離の行列を与える.
DistanceMatrix[{u1,u2,…},{v1,v2,…}]
要素 ui, vjの各ペア間の距離の行列を与える.
DistanceMatrix
DistanceMatrix[{u1,u2,…}]
要素 ui, ujの各ペア間の距離の行列を与える.
DistanceMatrix[{u1,u2,…},{v1,v2,…}]
要素 ui, vjの各ペア間の距離の行列を与える.
詳細とオプション
- DistanceMatrixは,数値データ,地理空間データ,テキストデータ,視覚的データ,日付と時刻のデータおよびその組合せを含む,さまざまなデータに使うことができる.
- 各h uiは,単一のデータ要素,データ要素のリスト,あるいはデータ要素の連想でよい.DistanceMatrix[data,…]の data はDatasetオブジェクトでもよい.
- 指定可能なオプション
-
DistanceFunction Automatic 使用する距離メトリック FeatureExtractor Identity データの前処理の仕方 FeatureNames Automatic データに割り当てる特徴名 FeatureTypes Automatic データに割り当てる特徴タイプ PerformanceGoal Automatic パフォーマンスのどの面について最適化するか RandomSeeding 1234 どのような擬似乱数生成器のシードを内部的に使うべきか WorkingPrecision Automatic 数値データに使用する精度 - DistanceFunctionの設定は,任意の距離,非類似度関数,あるいは2つの値間の距離を定義する関数 f でよい.
- デフォルトで,要素タイプによって次の距離関数が使われる.
-
EuclideanDistance 数値データ ImageDistance 画像 JaccardDissimilarity ブールデータ EditDistance 文字列 Abs[DateDifference[#1,#2]]& 日付と時刻 ColorDistance 色 GeoDistance 地理空間データ Boole[SameQ[#1,#2]]& 名目データ HammingDistance 名目ベクトルデータ WarpingDistance 数列 - 画像,色あるいは音声のオブジェクトと距離関数 f の場合は,DistanceFunction->f がImageDistance,ColorDistance,AudioDistanceにそれぞれ渡される. »
- 画像はすべて,まずConformImagesを使って調整される.
- デフォルトで,データ要素が混合タイプのベクトルのとき,距離は各タイプについて独立に計算され,Normを用いて組み合される.
- PerformanceGoalの可能な設定
-
"Speed" 計算時間を最短にする "Quality" 精度および確度を最大にする Automatic 速度と精度の自動トレードオフ - RandomSeedingの可能な設定
-
Automatic 関数が呼び出されるたびに自動的にシードを変える Inherited 外部シードの乱数を使う seed 明示的な整数または文字列をシードとして使う
例題
すべて開く すべて閉じる例 (3)
dm = DistanceMatrix[{1, 2, 3, 4}]dm // MatrixFormdm = DistanceMatrix[{1, 2, 3, 4}, {5, 6, 7}]dm // MatrixFormdm = DistanceMatrix[{{1.5, 4.3}, {2.1, 5.6}, {6.2, 4.5}}, {{1.6, 4.2}, {2.3, 5.4}}]dm // MatrixFormスコープ (10)
DistanceMatrix[{[image], [image], [image]}] // MatrixFormDistanceMatrix[{"abcd", "bcde", "xyz"}] // MatrixFormDistanceMatrix[{{True, False, True}, {True, True, True}, {True, False, False}}] // MatrixFormDistanceMatrix[{DateObject[{1985, 10, 3}], DateObject[{1989, 5, 30}], DateObject[]}] // MatrixFormDistanceMatrix[{GeoPosition[Entity["City", {"Paris", "IleDeFrance", "France"}]], GeoPosition[Entity["City", {"Sydney", "NewSouthWales", "Australia"}]], GeoPosition[Entity["City", {"Boston", "Massachusetts", "UnitedStates"}]], GeoPosition[Entity["City", {"SanFrancisco", "California", "UnitedStates"}]]}] // MatrixFormDistanceMatrix[{{"a", "b", "c", "d"}, {"b", "c", "d", "e"}, {"x", "y", "z"}}] // MatrixFormDistanceMatrix[{{1.1, 1.2, 1.3, 1.4, 1.5}, {1.2, 1.3}, {1.4, 1.5, 1.6}}] // MatrixFormDistanceMatrix[{{"A", "Sugar"}, {"A", "Salt"}, {"B", "Sugar"}, {"B", "Salt"}}]//MatrixFormDistanceMatrix[{{1.2, "A"}, {3.1, "A"}, {1.1, "B"}, {3.3, "B"}}] // MatrixForm連想のリストとしてフォーマットされたデータ集合から距離行列を計算する:
data = {<|"age" -> 32, "height" -> 160, "gender" -> "female"|>,
<|"height" -> 183, "age" -> 41, "gender" -> "female"|>,
<|"height" -> 123, "age" -> 30, "gender" -> "female"|>,
<|"height" -> 175, "age" -> 21, "gender" -> "male"|>,
<|"height" -> 150, "age" -> 11, "gender" -> "male"|>,
<|"age" -> 52, "height" -> 164, "gender" -> "female"|>};DistanceMatrix[data]//MatrixFormDistanceMatrix[<|"age" -> {32, 41, 30, 21, 11, 52}, "height" -> {160, 183, 123, 175, 150, 164}, "gender" -> {"female", "female", "female", "male", "male", "female"}|>]//MatrixFormデータはDatasetオブジェクトとして与えることもできる:
dataset = Dataset[data]DistanceMatrix[dataset]//MatrixFormオプション (9)
DistanceFunction (3)
SquaredEuclideanDistanceを距離関数として使って整数ベクトルから距離行列を計算する:
DistanceMatrix[{{1, 5}, {2, 3}, {3, 1}, {4, 7}}, DistanceFunction -> SquaredEuclideanDistance] // MatrixFormManhattanDistanceを使って距離行列を計算する:
DistanceMatrix[{{1.3, 5.2}, {1.2, 7.3}, {3.6, 1.1}, {4.6, 7.4}}, DistanceFunction -> ManhattanDistance] // MatrixFormDistanceMatrix[{RGBColor[0.8153963685313876, 0.8780324414500478, 0.8878969785400366], RGBColor[0.7000498357974252, 0.12659377056191357, 0.2441846342253282], RGBColor[0.22075683601648843, 0.11406627268342273, 0.5155520370226843], RGBColor[0.7106648135050211, 0.42410292720247544, 0.14462936430464635], RGBColor[0.46490866303974765, 0.16254211516915973, 0.6466382153254229]}, DistanceFunction -> "CIE2000"]FeatureExtractor (1)
FeatureNames (1)
FeatureNamesを使って特徴に命名し,さらなる指定でこの名前を参照する:
DistanceMatrix[{{2.3, "male"}, {4.8, Missing[]}, {Missing[], "female"}, {5.2, "female"}}, FeatureNames -> {"gender", "age"}, FeatureTypes -> <|"gender" -> "Numerical", "age" -> "Nominal"|>]FeatureTypes (1)
FeatureTypesを使って最初の特徴を名目的であるとする解釈を強制する:
DistanceMatrix[{{1, "A"}, {2, "A"}, {2, "B"}, {1, "B"}}, FeatureTypes -> <|1 -> "Nominal"|>]// MatrixFormPerformanceGoal (1)
vectors = RandomReal[{10, 11}, {2000, 1000}];このベクトルの距離行列を計算し,その操作を基準に従って評価する:
AbsoluteTiming[result = DistanceMatrix[vectors];]PerformanceGoalを"Speed"に設定して同じ操作を行う:
AbsoluteTiming[resultspeed = DistanceMatrix[vectors, PerformanceGoal -> "Speed"];]AbsoluteTiming[reference = Outer[EuclideanDistance, vectors, vectors, 1];]StandardDeviation[Flatten[result - reference]]StandardDeviation[Flatten[resultspeed - reference]]PerformanceGoal"Speed"のときは,データの中心化の精度が上がる:
mean = Mean[vectors];
centered = # - mean & /@ vectors;AbsoluteTiming[resultspeedcentered = DistanceMatrix[centered, PerformanceGoal -> "Speed"];]StandardDeviation[Flatten[resultspeedcentered - reference]]RandomSeeding (1)
DistanceMatrixは,たとえランダム性が含まれていても,何回計算されても同じ結果を与える.
data = RandomReal[1, {2, 20}];table = Table[DistanceMatrix[data, FeatureExtractor -> (RandomChoice[#, 10]&)], 5];Counts[table]RandomSeedingオプションの与えを変えて距離行列を計算する:
randomtable = Table[DistanceMatrix[data, FeatureExtractor -> (RandomChoice[#, 10]&), RandomSeeding -> RandomInteger[10]], 5];Counts[randomtable]WorkingPrecision (1)
長さ100の500個のランダムな数値ベクトルについて,精度が30で距離行列を計算する:
r = RandomReal[1, {500, 100}, WorkingPrecision -> 30];AbsoluteTiming[dm = DistanceMatrix[r];]DistanceMatrixは任意精度計算を使う:
Precision[dm]WorkingPrecisionMachinePrecisionを使うと計算速度が上がる:
AbsoluteTiming[dmmachine = DistanceMatrix[r, WorkingPrecision -> MachinePrecision];]Precision[dmmachine]ベクトルが類似している場合は,WorkingPrecisionの値を変えることで結果が著しく変わることがある:
r = RandomReal[{10 ^ 20, 10 ^ 20 + 1}, {3, 2}, WorkingPrecision -> 30]DistanceMatrix[r] // MatrixFormDistanceMatrix[r, WorkingPrecision -> MachinePrecision] // MatrixForm関連するガイド
-
▪
- 距離と類似度の測定基準 ▪
- ベクトル操作 ▪
- 配列アラインメントと比較 ▪
- テキスト解析 ▪
- 自然言語処理
テキスト
Wolfram Research (2015), DistanceMatrix, Wolfram言語関数, https://reference.wolfram.com/language/ref/DistanceMatrix.html (2017年に更新).
CMS
Wolfram Language. 2015. "DistanceMatrix." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2017. https://reference.wolfram.com/language/ref/DistanceMatrix.html.
APA
Wolfram Language. (2015). DistanceMatrix. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/DistanceMatrix.html
BibTeX
@misc{reference.wolfram_2026_distancematrix, author="Wolfram Research", title="{DistanceMatrix}", year="2017", howpublished="\url{https://reference.wolfram.com/language/ref/DistanceMatrix.html}", note=[Accessed: 14-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_distancematrix, organization={Wolfram Research}, title={DistanceMatrix}, year={2017}, url={https://reference.wolfram.com/language/ref/DistanceMatrix.html}, note=[Accessed: 14-September-2026]}