8.24. dist 距離¶
書式1: dist(タイプ,num_1,num_2,...,n_k,num_{k+1},num_{k+2},...,num_{2k})
2つのk次元ベクトル( \(num_1,num_2,\cdots,n_k),(num_{k+1},num_{k+2},\cdots,num_{2k}\) )の距離を計算する。
距離としては以下のものが利用できる。
詳細な定義はmsimを参照のこと。
egin{itemize}
item euclid
: ユークリッド距離
item cityblock
: 都市ブロック距離
item hamming
: ハミング距離
end{itemize}
ハミング距離については、値は文字型として指定しなければならない(以下の例を参考のこと)。
利用例¶
importと入力データ(CSV)の準備
1import nysol.mcmd as nm 2 3with open('dat1.csv','w') as f: 4 f.write( 5'''id,x1,y1,x2,y2 61,0,0,1,1 72,0,1,2,0 83,,,, 9''') 10 11with open('dat2.csv','w') as f: 12 f.write( 13'''id,x1,y1,x2,y2 141,a,b,a,c 152,0,1,0,1 163,,,, 17''')
ユークリッド距離
1nm.mcal(c='dist("euclid",${x1},${y1},${x2},${y2})', a='rsl', i="dat1.csv", o="rsl1.csv").run() 2### rsl1.csv の内容 3# id,x1,y1,x2,y2,rsl 4# 1,0,0,1,1,1.414213562 5# 2,0,1,2,0,2.236067977 6# 3,,,,,
都市ブロック距離
1nm.mcal(c='dist("cityblock",${x1},${y1},${x2},${y2})', a='rsl', i="dat1.csv", o="rsl2.csv").run() 2### rsl2.csv の内容 3# id,x1,y1,x2,y2,rsl 4# 1,0,0,1,1,2 5# 2,0,1,2,0,3 6# 3,,,,,
ハミング距離
ハミング距離の計算では、値を文字列として指定していることに注意する。
1nm.mcal(c='dist("hamming",$s{x1},$s{y1},$s{x2},$s{y2})', a='rsl', i="dat2.csv", o="rsl3.csv").run() 2### rsl3.csv の内容 3# id,x1,y1,x2,y2,rsl 4# 1,a,b,a,c,1 5# 2,0,1,0,1,2 6# 3,,,,,