問題タブ [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 に答える
528 参照

r - 距離行列を使用して自然なクラスター数を生成する方法は?

距離行列 1609*1609 があり、距離範囲は 0 ~ 1 です。この行列を使用して自然なクラスター数を取得する方法は?

spss には、特定の数のクラスターを生成できる TwoStep クラスター関数があることは知っていますが、入力は変数リストである必要があります。私は距離行列しか持っていないので、SPSS で TwoStep クラスターを使用することはできないと思います。

で使用しようとしhclustましRたが、クラスターの数がわかりません。を使用しようとしていますNbClustが、「マトリックス」が何であるかわかりません。私は非類似度行列しか持っていません。

サンプルデータは以下の通りです。

hclustはプロットを描くために使用しますが、これは私が望むものではありません.

グループ番号を自動生成したいので、やってみNbClustます。

しかし、それは示しています

前もって感謝します。

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

python - 距離行列を newick 文字列形式の系統樹に変換する

FASTA ファイルを読み取って距離行列を作成しました。今度は、newick 文字列形式で系統樹を生成する関数を作成するよう求められます。この関数は、距離行列を 1 つの引数に取ります。最初にいくつかのコードを教えてください。

フォーマット例:

print(upgma(エドワーズ))

(E:17.00,((((F:0.50,B:0.50):5.75,G:6.25):2.00,(D:4.00,A:4.00):4.25):6.25,C:14.50):2.50)

0 投票する
3 に答える
4406 参照

apache-spark - Sparkで距離行列を計算するには?

サンプルをペアリングしようとしましたが、100 個のサンプルが 9900 個のサンプルになり、よりコストがかかるため、膨大な量のメモリが必要になります。スパークの分散環境で距離行列を計算するより効果的な方法は何ですか?

ここに私がしようとしている疑似コードのスニペットがあります

上記のコードはペアを作成しますが、データセットに 100 個のサンプルが含まれている場合でも、filteredSamples (上記) をペアリングすると 4950 サンプルになり、ビッグデータには非常にコストがかかる可能性があります

0 投票する
0 に答える
1258 参照

r - ビッグデータのガワー距離

地理データでクラスタリングを実行して、自分の地域内の風景のタイプを分類したいと考えています。

私のデータは、通常のグリッドの各フィールドの 5 つの変数 (気温、気温の振幅、降水量、高度、および土壌の種類) で構成されています。100 万を少し超えるフィールド (= データ フレーム内の行) があります。

変数のうち 4 つは数値であり、土壌タイプは数値で表されるカテゴリ変数です。(数値データは既に標準化されています。) Gower 距離非類似度行列をカウントし、この行列に対して PCA と階層的クラスタリングを実行することにしました。ただし、データが大きすぎます。

変数は勾配にあるため、サンプリングしたくありません。小さいデータで周波数を数えてガワー距離を実行しようとしましたが、それでも大きすぎます。

(1) 大きなデータセットを手動でチャンクし、(2) 各チャンク マトリックスに、距離分析の各変数の範囲の「説明」として変数の最大値と最小値を含む 2 つの行を追加し、(3) gower.dist関数を使用して各チャンクの非類似度行列をカウントし、(4) 余分な行を削除し、(5) すべてのチャンク非類似度行列を 1 つの大きな非類似度行列にマージします。

これは正しく機能する方法だと思いますか?この問題に対処する方法について他に何か提案はありますか?

非類似度行列で PCA を実行するのは正しいですか?

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

r - 条件付き距離での平均 xy ポイント

ポイントの xy 座標があり、ポイントの平均化に距離を使用したいと考えています。データに名前を付け、関数qqを使用して距離行列を取得しますdist

私がやりたいことは、特定のしきい値に近いポイントを平均化することです。この例では、80 を使用できます。その制限を下回る唯一のペアワイズ距離は、3-4 と 3-6 です。問題は、元の行列に戻り、xy 座標を平均して、3-4 ペアを 1 つのポイントにし、3-6 ペアを別のポイントにする方法です (以前のポイント 3、4、および 6 を破棄します)。

ここdputに私のdata.frameがあります

アップデート

提供されている変更コードの一部を使用して、3-4 の場所と 3-6 の場所で置き換える必要がある 2 つのポイントを取得します。これは、ポイント 3 と 4 と 6 が qq から消える必要があり、この 2 つのポイントがそれに追加される必要があることを意味します

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

r - R クラス間距離行列

この質問は、距離行列からグループ内距離とグループ間距離を抽出する方法のフォローアップのようなものですか? Rで。その質問では、最初にすべてのポイントの距離行列を計算し、次に単純にクラス間距離行列を抽出しました。最初の計算をバイパスして抽出にスキップしたい状況があります。つまり、クラス間距離行列を直接計算したいのです。リンクされた例から微調整を加えて描画すると、次のデータフレームにいくつかのデータがあるとしdfます。

私が欲しいのは距離行列です:

これを行うためのエレガントで高速な方法がRにすでに存在しますか?

EDIT上記の1Dケースの適切な解決策を受け取った後、ボーナスの質問を考えました.高次元のケースはどうですか?代わりに次のようにdf見える場合:

Bそして、 class 内のポイントと class 内のポイントの間のユークリッド距離の行列を再度取得することに興味がありAます。

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

r - R の距離行列から対角線を抽出する

距離行列から最初の対角線の値を抽出する方法を知りたいです。

例えば:

ベクトルで値を取得したい:2.828427, 3.000000, 2.828427

ありがとう!

0 投票する
3 に答える
1882 参照

python - Python で距離行列を計算するより効率的な方法

こんにちは、行のすべてのペア間の距離を含む行列を返すコードを (python 2 を使用して) 記述しようとしています。以下は私が書いた実装です。期待どおりに動作しますが、行数が大きくなると非常に遅くなる可能性があります。したがって、多数の行に対してコードをより効率的にする方法について誰か提案があるかどうか疑問に思っていました。

前もって感謝します

0 投票する
0 に答える
96 参照

opencl - OpenCL: ラグド ベクトル演算の並列化 (三角距離行列)

このシリアルコードのカーネルを作成するのに問題があります:

hypot主な問題は、距離が同じベクトルの値に依存することだと思います。または、j値が に依存している可能性がありますi。OpenCL を使用してこのコードを並列化するにはどうすればよいですか?

(より詳しい情報:)

この投稿に続いて、最初に上三角距離行列の値を取得することから始めました。これはカーネルコードです:

int n(xは(1,2,3,4,5,6,7,8)lengthx等しい) です。次に、n(n-1)/2値が必要です (例では合計 28)。グローバルとローカルのワーク サイズをn(8) に設定しました。およびのcl_memバッファ オブジェクトのサイズは、それぞれ( 28) です。しかし、結果を読み返すと、28 個の値が得られますが、期待される値ではありません。私は得る: (0,7,12,15,16,15,12,7,0,0,0...,0)。何か助けはありますか?xxautonn(n-1)/2

0 投票する
0 に答える
543 参照

r - Rで二乗距離を計算するより効率的な方法

行のすべてのペア間の二乗距離を含む行列を返すコードを (R を使用して) 記述しようとしています。以下は私が書いた実装です。期待どおりに動作しますが、行数が大きくなると非常に遅くなる可能性があります。私の観察によると、この行 (combn(x,m=2)) の実行に最も時間がかかります。したがって、多数の行に対してコードをより効率的にする方法について誰か提案があるかどうか疑問に思っていました.よろしくお願いします