問題タブ [distance-matrix]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
314 参照

r - ネストされた for ループを使用して距離行列を埋める

data("butterfly") セットの使用に問題があります。問題は:

問題 4: パッケージ「ade4」に続いて data(butterfly) をインストールします。私たちの質問は次のとおりです。「遺伝的類似性は、蝶のコロニー間の地理的距離と相関していますか?」d1 と呼ばれる距離尺度を使用して、遺伝的距離行列を入力します。マントルピースランダム化テストを実行し、結果を解釈します。距離 d2 の尺度を使用してテストを繰り返します。違いはありましたか?Mantel Randomization テストの散布図とランダム化プロットだけでなく、回答の一部として for ループ コードを表示します。

これは、非類似度を計算するために使用される関数です。方法がわかりません

これは、遺伝的距離行列を設定するために使用したコードです。

2 つの地理的距離の相違点を計算できます (例):

しかし、for ループを適用してすべての地理的距離の行列を埋める方法がわかりません。Mantel Randomization テストもわかりません。問題は、各行列に対して Mantel Randomization テストを実行することを意味していますが、このテストでは 2 つの行列 (つまり、d1 と d2) 間の相関関係を比較していませんか?

私は統計とRが初めてです。

0 投票する
1 に答える
451 参照

r - 距離関数では負の長さのベクトルは使用できません

大きなデータ フレーム (375,000 行と 5 列) があり、すべての変数は数値です。R の階層的クラスタリングを使用して、このデータ フレームを時空間的にクラスタリングしたいと考えています。しかし、距離行列を計算しようとすると、次のエラーが表示されます。コンピューターの最大メモリ (16 GB RAM) を超えているためですか? それとも、2 ^ 31 - 1 (約 20 億) 要素である R のベクトルの最大長を超えているためですか? ところで、私が計算しようとしているこの距離行列の長さを計算する方法は? 375,000^2 は 1000 億近くに相当しますか? いずれにせよ、この問題に関して私は何ができますか?この場合、どうにかして階層的クラスタリングを引き続き使用できますか?

kmeans を使用したクラスタリングは完全に機能しますが、上司は階層的クラスタリングを好みます。

ヒント/提案は大歓迎です

PS 行は車両のトリップ ID を表し、列は次を表します: 開始点の経度、開始点の緯度、終点の経度、終点の緯度、および特定の日のトリップ時間 (すべての値はすべての変数に対してスケーリングされます)。

0 投票する
2 に答える
869 参照

python - Python リストでのメモリ エラーの問題を回避するか、Numpy でより賢い方法を使用する

それぞれ13から24の観測値を持つ150,000の時系列を調べるDTW距離行列を計算しようとしています-つまり、生成された距離行列は約(150,000 x 150,000)/2 = 11,250,000,000のサイズのリストになります。

これを 200GB のサイズのビッグ データ クラスターで実行していますが、メモリ エラーが発生しています。

私はdtaidisatanceライブラリを使用しており、時系列全体を一度にリストに渡すことができるdistance_matrix_fast関数を使用しましたが、同様のメモリエラーが発生しましたが、パッケージから出てきました。ただし、実行するとすぐにエラーがスローされました。パッケージのブロック機能も使ったのですが、そもそも時系列を一気に取り込めないようです。

そこで、ループを実行して時系列の 2 つのペアごとの距離を計算し、それをリストに追加することにしました。ただし、長時間実行した後、次のように同じメモリエラーが再び発生します。

ファイル「/root/anaconda2/test/final_clustering_2.py」、93 行目、distance_matrix_scaled.append(dtw.distance_fast(Series_scaled[i], Series_scaled[j])) の MemoryError

これは以下の私のコードです:

このメモリ エラーが発生する理由を教えてください。これはpythonリストの制限ですか、それとも私のクラスタサイズですか? この問題をナビゲートするために使用できるnumpyの巧妙な方法または形式はありますか?

0 投票する
1 に答える
1398 参照

python - Pythonで隣接行列を距離行列に変換する

次のエッジリストを変換しました。

次の隣接行列に:

ここで、ソース列は投資の送信者であり、ターゲット列は投資の受信者です。重みの列は投資の量です。この重み付けされたネットワークで階層的クラスタリングを実行して、相互投資に基づいてクラスター化できるアクターを見つけたいと考えています (相互投資が高いほど、アクターは「近く」なります)。

私は SciPy の階層的クラスタリング パッケージ ( scipy.cluster.hierarchy) を使用しています。私の中心的な問題は、上記のエッジ リストを、パッケージが適切に読み取る方法を認識できる距離行列に変換することです。距離は小さくする必要があり、タイの重みが高くなります(逆も同様です)が 、上記のデータフレームを入力として使用すると、 distance_matrixfromはエラーのみを返します。scipy.spatial

説明されている方法でエッジの重みを反映するように距離行列を計算する方法はありますか? 主なポイントは、隣接行列を距離行列に変換して scipy パッケージで使用できるようにする方法を知ることです