ERRORこの広告は、90日以上更新していないブログに表示しています。2017-10-23Pythonで配列のJaccard距離を計算する(scipy.spatial.distance.jaccard)Jaccard距離とは2配列間の距離(類似性の逆)をその要素の正誤によって求める指標である。配列の要素がNaNかNaNでないか(または0か0より大きいか)を区別したい場合と、完全に値が一致しているかしていないかを区別したい場合などがある。scipyにはscipy.spatial.distance.jaccardとして提供されているが、挙動がよくわからなかったのでテストした。以下のような配列を用意する。2.]のみが一致したとみなされ、距離は3/4となっている。NaNかNaNでないかの違いだけを見たい場合、boolに変換する。0.]のみが不一致とみなされた。ここで注目すべきは、非常に気持ち悪いがnp.nanがTrueになるという点である。2.]の比較が行われ距離が1/2となる。dtype=objectだとnp.nan_to_numが適用されないのでstrを含むデータを扱う場合は頑張って置換するしか無い。NaNをFalse、0をTrueとして扱いたい場合もあるかも知れないが、これも簡単な方法はないので頑張って置換するしか無い。sum()を駆使するほうが楽。tryalnigro.hatenablog.com同様の挙動をするものにscipy.spatial.distance.hammingやscipy.spatial.distance.kulsinskiがある。False]の比較も行うタイプのもので、kulsinskiは分子分母にoffsetが設けられたもの。installする月別アーカイブはてなブログをはじめよう!tryalnigroさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。