問題タブ [dendextend]

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

r - グループ化されていないラベル名に基づいてRを使用して樹状図ラベルに色を付ける方法

ラベル名の一部に基づいて樹形図のラベルに色を付けようとしています。ラベル名は、フォルダー内のファイル名から派生します。ファイルは .txt ファイルで、次のように名前が付けられます: 167_001.txt の最初の 3 つの数字はテキストの特定の著者を示し、最後の 3 つの数字はその著者による個別の文章を区別します。ファイルの完全な名前でブランチにラベルを付けたいのですが、最初の 3 つの数字のみに基づいてラベルに色を付けて、特定の作者のどの作品が別の作者と共通点が多いかを確認して、誰が誰に影響を与えたかを確認できます。これらは中世の作家なので、何かを盗用した可能性のある現代の作家を見つけるのを手伝ってくれません. したがって、ファイルが 080 で始まる場合、ファイル名の最後の部分が何であっても、グループ化されている場所に関係なく、すべての 080 ファイルを 1 つの色にしたいのですが、ファイルの最後の部分をラベル名。これが私がこれまでに持っているものです:

ご覧のとおり、dendextend パッケージを使用しています。誰かがより良いパッケージ、または私が必要とするものを同様に達成するパッケージを持っているなら、それは素晴らしいことです. 私が現在持っているものは、dendextend によって提供される「color_unique_labels」関数と十分に類似しているため、ファイルを同じカラー ファミリに配置します。同じ作者は常に同じ色で、どの作品が異なる作者と類似性を共有しているかを簡単に確認できるようにしたいと考えています。下記参照。数百人の異なる著者がいるので、それぞれに個別の色を手動で割り当てるのは避けたいと思います (A = "赤"、B = "青"、C = "蘭" など)。 「color_unique_labels」のように機能します ファイル名の最初の 3 つの数字に基づいて色を自動的に選択して割り当てます。私の例は USArrests パッケージを使用しており、最初の文字で州名に色を付ける方法を確認したいので、すべての「A」州と「C」州などは同じ色になります。したがって、アラバマ、アラスカ、アリゾナ、アーカンソーはすべて同じ色で、カリフォルニア、コロラド、コネチカットも同じ色です。繰り返しますが、実際のデータセットには 50 ではなく数百の可能性があるため、より自動化する方法を見つけたいと思いますが、それが唯一の選択肢である場合は反対しません。前もって感謝します!したがって、すべての「A」状態と「C」状態などは同じ色です。したがって、アラバマ、アラスカ、アリゾナ、アーカンソーはすべて同じ色で、カリフォルニア、コロラド、コネチカットも同じ色です。繰り返しますが、実際のデータセットには 50 ではなく数百の可能性があるため、より自動化する方法を見つけたいと思いますが、それが唯一の選択肢である場合は反対しません。前もって感謝します!したがって、すべての「A」状態と「C」状態などは同じ色です。したがって、アラバマ、アラスカ、アリゾナ、アーカンソーはすべて同じ色で、カリフォルニア、コロラド、コネチカットも同じ色です。繰り返しますが、実際のデータセットには 50 ではなく数百の可能性があるため、より自動化する方法を見つけたいと思いますが、それが唯一の選択肢である場合は反対しません。前もって感謝します!

「color_unique_labels」関数を使用したデンドログラム

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

r - クラスター階層とネストされたクラスター割り当ての取得

私は現在、ドキュメントのトピックの階層を調べています。最初のステップとして、ドキュメントのベクトル表現を見つけます。その後、階層クラスタリングを使用して、ドキュメントのトピック内にトピックがあるかどうかを判断します。少なくとも 2% の元のデータを含む (ネストされた) クラスターのみを考慮したいと考えています。これを達成するために、Rを使用しています。

現在、クラスタリングの結果からクラスタ階層を効率的に抽出することに苦労しています。クラスタリングは、元の「hclust」関数と同様の結果を提供する「fastcluster」パッケージで行われます。

私の最終的な出力は次のようになります。2つのテーブルがあります

クラスターの割り当て:

クラスター階層:

ご覧のとおり、観測値 3、4、および 5 はクラスター割り当てテーブルで複数回発生します。ここで、クラスターの 1 つはその親クラスターのサブクラスターです。これは、階層テーブルで確認できます。

私の現在のアプローチは、「Dendextend」パッケージの cutree.dendogram 関数を使用して、k の値のグリッドのクラスター割り当てを見つけ、出力からクラスター階層と割り当てを推測することです。ただし、このアプローチは非常にナイーブであり、多数の観測とクラスターの場合は非常に遅くなります。

この問題に効率的に取り組む方法についての提案、できれば簡単に入手できるパッケージを使用する方法を教えていただければ幸いです。

編集:サンプル出力データに対応する次の例を検討してください。

木を高さ 6 で切断すると、出力で A と B という名前の 2 つのクラスターが得られます。ただし、ツリーを高さ 4 で切断すると、出力に A、C、D という名前の 3 つのクラスターが表示されます。たとえば、docID 3 の観測は、クラスター B とクラスター C (ツリーを切り取った高さに応じて) のいずれかにあり、サンプル出力クラスター割り当ての 2 つのエントリに対応します。クラスター B は 2 つのクラスター C と D に分割されており、これはクラスター階層の出力で確認できます。

ここでの目標は、樹形図を下に移動しながら、クラスターの割り当てと階層の完全なリストを取得することです。(できれば、(サブ)クラスター内の観測量が一定量の観測量を下回ると停止します)

これまで、これを行うための合理的で効率的な方法を思いつくことができませんでした。