5.52. msim 二変数間の類似度の計算

f= パラメータで指定した項目の二変数間の類似度(距離)を c= パラメータで指定した類似度(距離)関数で計算し類似度行列として出力する。

パラメータ

i= : 型=str , 任意(default=標準入力)

入力データを指定する。

o= : 型=str , 任意(default=標準出力)

出力データを指定する。

k= : 型=str , 任意(default=キーブレイク処理しない)

ここで指定された項目(複数項目指定可)を単位として求める。

f= : 型=str , 必須

ここで指定された項目全ての二項目間の類似度を求める。

c= : 型=str , 必須

類似度(距離)名リスト(複数項目指定可)
次項に示した類似度(距離)名を指定する。
項目名は以下のように,(:)コロンに続けて指定して変更可能。
コロンに続く名称を省略した場合は類似度(距離)関数名がそのまま項目名として利用される。
例) msim f=x,y,z c=pearson:ピアソン積率相関係数,euclid:ユークリッド距離,cosine:コサイン
類似度 =covar|ucovar|pearson|spearman|kendall|euclid|cosine|
~~ cityblock|hamming|chi|phi|jaccard|supportr|lift|confMax|
~~ confMin|yuleQ|yuleY|kappa|oddsRatio|convMax|convMin

a= : 型=str , 任意(default=)

2変数の名称を示す項目名を指定する。カンマで区切って2つ指定する。
省略すると fld1,fld2 が使われる。

d= : 型=bool , 任意(default=False)

対角行列、上三角行列を出力する。
d オプションが指定されないと類似度行列の下三角行列のみ出力されるが、
d オプションを指定することにより対角行列及び上三角行列も出力される。

n= : 型=bool , 任意(default=False)

NULL値が1つでも含まれていると結果もNULL値とする。

bufcount= : 型=str , 任意(default=)

バッファのサイズ数を指定する。

利用例

importと入力データ(CSV)の準備

 1import nysol.mcmd as nm
 2
 3with open('dat1.csv','w') as f:
 4  f.write(
 5'''x,y,z
 614,0.17,-14
 711,0.2,-1
 832,0.15,-2
 913,0.33,-2
10''')
11
12with open('dat2.csv','w') as f:
13  f.write(
14'''key,x,y,z
15A,14,0.17,-14
16A,11,0.2,-1
17A,32,0.15,-2
18B,13,0.33,-2
19B,10,0.8,-5
20B,15,0.45,-9
21''')
22
23with open('dat3.csv','w') as f:
24  f.write(
25'''x,y,z
261,1,0
271,0,1
281,0,1
290,1,1
30''')

基本例

x、y、z 項目の2項目間の組み合わせについて ピアソンの積率相関係数とコサインを計算する。

1nm.msim(c="pearson,cosine", f="x,y,z", i="dat1.csv", o="rsl1.csv").run()
2### rsl1.csv の内容
3# fld1,fld2,pearson,cosine
4# x,y,-0.5088704666,0.7860308044
5# x,z,0.1963041929,-0.5338153343
6# y,z,0.3311001423,-0.5524409416

対角行列、上三角行列を出力

x、y、z 項目の2項目間の組み合わせについて ピアソンの積率相関係数とコサインを計算する。(dオプションあり)

 1nm.msim(c="pearson,cosine", f="x,y,z", d=True, i="dat1.csv", o="rsl2.csv").run()
 2### rsl2.csv の内容
 3# fld1,fld2,pearson,cosine
 4# x,x,1,1
 5# x,y,-0.5088704666,0.7860308044
 6# x,z,0.1963041929,-0.5338153343
 7# y,x,-0.5088704666,0.7860308044
 8# y,y,1,1
 9# y,z,0.3311001423,-0.5524409416
10# z,x,0.1963041929,-0.5338153343
11# z,y,0.3311001423,-0.5524409416
12# z,z,1,1

キー単位での計算

key 項目を単位にして計算する。

1nm.msim(k="key", c="pearson,cosine", f="x,y,z", i="dat2.csv", o="rsl3.csv").run()
2### rsl3.csv の内容
3# key%0,fld1,fld2,pearson,cosine
4# A,x,y,-0.8746392857,0.8472573627
5# A,x,z,0.3164384831,-0.521983618
6# A,y,z,0.1830936883,-0.6719258683
7# B,x,y,-0.7919009884,0.8782575583
8# B,x,z,-0.471446429,-0.9051543403
9# B,y,z,-0.1651896746,-0.8514129252

類似度名の指定

01値のデータに付いての計算。ハミング距離とphi係数を計算する。

1nm.msim(c="hamming,phi", f="x,y,z", i="dat3.csv", o="rsl4.csv").run()
2### rsl4.csv の内容
3# fld1,fld2,hamming,phi
4# x,y,0.75,-0.5773502692
5# x,z,0.5,-0.3333333333
6# y,z,0.75,-0.5773502692

類似度名の変更

01値のデータに付いての計算。ハミング距離とphi係数を計算し、 出力項目名を変更する。

1nm.msim(c="hamming:ハミング距離,phi:ファイ係数", a="変数1,変数2", f="x,y,z", i="dat3.csv", o="rsl5.csv").run()
2### rsl5.csv の内容
3# 変数1,変数2,ハミング距離,ファイ係数
4# x,y,0.75,-0.5773502692
5# x,z,0.5,-0.3333333333
6# y,z,0.75,-0.5773502692

関連メソッド