問題タブ [hierarchical-clustering]

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 に答える
1966 参照

r - 階層的クラスタリング大疎距離行列R

非常に長い距離のセットでfastclustを実行しようとしていますが、問題が発生しています。

私は非常に大きなcsvファイル(約9,100万行なので、Rではforループに時間がかかりすぎる)を持っています。これは、data.frameに読み込んだときに次のようになります。

これはスパースリストであり、sparseMatrix()を使用してスパース行列に変換できます。

ただし、as.dist()を使用してdistオブジェクトに変換しようとすると、Rから「問題が大きすぎます」というエラーが表示されます。ここで他のdistの質問を読みましたが、他の人が提案したコード上記のサンプルデータセットでは機能しません。

助けてくれてありがとう!

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

python - Python での三角距離行列への距離の CSV

scipy を使用して階層的クラスタリングを実行するために、キーワード間の類似点の大きな csv があり、それを三角距離行列に変換したいと考えています (非常に大きく、スパースの方が優れているため)。現在のデータ csv は次のようになります。

これを行う方法がわからず、Python でのクラスタリングに関する簡単なチュートリアルが見つかりません。

助けてくれてありがとう!

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

r - rでデンドログラムを決闘する(rでデンドログラムを背中合わせに配置する)

rに2つのデンドログラムを「背中合わせに」配置するかなり簡単な方法はありますか? 2 つのデンドログラムには同じオブジェクトが含まれていますが、わずかに異なる方法でクラスター化されています。デンドログラムの違いを強調する必要があります。では、 soilDBパッケージで行われたもののようなものですが、おそらくあまり関与せず、土壌科学志向でしょうか?

ここに画像の説明を入力

オブジェクト間を結ぶ直線の数を最大化するために樹状図を並べることができれば (上記を参照)、樹状図間の違いが強調されるため、素晴らしいことです。

何か案は?

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

hierarchical-clustering - 2D ArrayList での単一リンク クラスタリング

こんにちは、Java Netbeans で 2D ArrayList を使用してシングル リンク クラスタリングを行う方法を探しています。

続いて、結果をグラフで視覚化します。

私の知る限り、LingPipe はそれを行うことができますが、結果を正確に表示する可能性があると思われる HashSet 文字列を使用します。

助言がありますか?本当に助かります。ありがとうございました!:D

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

algorithm - 代表者の段階的な階層構造

このスキームに従って、インクリメンタル クラスタリング アルゴリズムを使用しています。

x から最も近い中心の検索を高速化するために、新しいデータポイントが考慮されるたびに段階的に更新できる中心の階層構造 (ツリーを使用) が必要です。

ツリーの各内部ノードは、そのノードの下の重心の平均として表されます。特定の重心を更新する場合 (新しいデータポイントがこの重心に割り当てられたため)、この重心の上にあるすべてのノードを再構築する必要があります。

したがって、アルゴリズムは次のようになります。

この場合、この関数はどのように定義できますか? それに対するより良い解決策はありますか?

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

python - デンドログラムを見つけるためのPythonの代替方法

寸法 8000x100 のデータがあります。これらの 8000 個のアイテムをクラスター化する必要があります。私はこれらのアイテムの注文にもっと興味があります。小さなデータの場合は上記のコードから目的の結果を得ることができましたが、より高い次元の場合、実行時エラー「RuntimeError: オブジェクトの str を取得中に最大再帰深度を超えました」が発生し続けます。「Z」から並べ替えられた列を取得する別の方法はありますか。

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

r - Rを使用したK-centersクラスタリング

Rを使用したk-centersクラスタリングの単純なライブラリ関数は見つかりませんが、k-means(kmeans())および階層的クラスタリング(hclust())の場合は見つかりました。

この投稿に示されているように、Rを使用した単純な欲張りk-centersクラスタリングのライブラリ関数はありますか?

そうでない場合(私はRに慣れていないので)、どのように実装しますか(ロジックを理解していますが、実際にRコードで記述する方法ではありません)。

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

r - Rでのマルチスケール階層的クラスタリングのエラー

と呼ばれるRパッケージを使用して階層的クラスタリングを行っています。これは、ブートストラップを組み込んで、取得したクラスターの有意水準を計算することpvclustで構築されています。hclust

3次元と10個の観測値を持つ次のデータセットについて考えてみます。

単独で使用する場合hclust、クラスタリングはユークリッド測度と相関測度の両方で正常に実行されます。

ただし、で設定されたそれぞれを使用する場合はpvclust、次のようになります。

...次のエラーが発生します。

  • ユークリッド:Error in hclust(distance, method = method.hclust) : must have n >= 2 objects to cluster
  • 相関関係:Error in cor(x, method = "pearson", use = use.cor) : supply both 'x' and 'y' or a matrix-like 'x'

なお、距離はによって計算されるpvclustため、事前に距離を計算する必要はありません。hclustまた、方法(平均、中央値など)は問題に影響を与えないことに注意してください。

データセットの次元を4に増やすと、正常にpvclust実行されるようになりました。pvclust3次元以下でこれらのエラーが発生するのに、発生しないのはhclustなぜですか?さらに、4次元を超えるデータセットを使用すると、エラーが消えるのはなぜですか?

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

python - Pythonでの階層的クラスタリングの凸包

階層的クラスタリングを使用して、2次元にフラット化された大量のデータセットを視覚化しようとしています。私がやりたいのは、クラスターを構成点の凸包としてレンダリングすることにより、階層内のさまざまな高さからデータを見ることができる視覚化を作成することです。この問題の最も難しい部分は、階層を上に移動するときにペアクラスターの凸包を効率的にマージできるアルゴリズムが必要なことです。O(n log n)時間で点の凸包を計算するためのアルゴリズムをたくさん見てきましたが、この場合、問題の下部構造を利用する方がはるかに効率的であるように見えますが、私は正確にはわかりません。

編集:

詳細については、データ構造は、クラスタリングの元のポイントで始まり、次のクラスターを形成するために結合されるポイント/クラスターを示す配列です。つまり、ツリー/ポインタ構造のようなものですが、1つの大きな配列に含まれています。重要な部分は、スーパークラスターの2つの構成クラスターが何であるかを確認するのは効率的ですが、クラスターに属するすべてのポイントのセットを取得するのは効率的ではないということです。したがって、合理的なアルゴリズムはすべてボトムアップで機能する必要があります。

つまり、ある場所で階層の真ん中にいて、事前に計算された階層で、クラスターAとBがマージされてクラスターCが生成されたとします。下から上に向かっていくので、すでに凸包を計算しました。クラスターAとBのポイントであるため、これらを組み合わせてクラスターCの凸包を作成する必要があります。クラスターAの凸包は、実際には単一のポイント、ペア、または完全なポリゴンである可能性があります。クラスターBについても同じことが言えます。したがって、これらをマージしてクラスターCの凸包を形成する方法はいくつかありますが、おそらくシングルトンとペア​​をポリゴンと同じように扱う賢いソリューションがあると思います。

最も明白な解決策は、クラスターAとBの凸包からの点の組み合わせを使用して凸包を計算することです。しかし、100kポイントの階層でこれを行う必要があるため、より効率的なものがあるかどうか疑問に思います。 AとBの凸包を組み合わせる方法。

編集2:

さて、私は自分の言いたいことのイラストをASCIIで表現しようとしました。クラスターAの凸包は1-2-3-4、Bの凸包は5-6-7-8、Cの凸包は1-2-4-7-8-5です。おそらく、クラスターAとBには船体の内側に追加のポイントが含まれていますが、これらは明らかにCの船体の一部になることはできないため、問題はクラスターAとBの船体を「スプライス」して形成する場所を決定するアルゴリズムです。ポイントの座標に基づくCの船体。これは、プロセス全体の帰納的ステップです。(最終的には、アルゴリズムが最上位のクラスターで終了するまで、CはクラスターDと組み合わされます。最上位のクラスターは、凸包としてすべての点の凸包を持ちます)。

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

r - パターンを一致させて、プロットに適した色を選択します

データをクラスタリングしているときに、問題が発生しました。クラスターの枝を病気の種類ごとに色付けしたいと思います。だから私は私のためにこれを行うべき小さなスクリプトを書きました。

しかし、問題はfit$labels、病気の種類、つまり患者IDだけではないということです。したがって、SPORADICをラベル名に一致させようとすると、NA値しか取得されません。したがって、ラベル名全体と一致させるのではなく、ラベル内のパターンを検索するようにスクリプトに指示する方法を知りたいのです。

Mydataは次のようになります。