問題タブ [cluster-analysis]
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.
r - クラスターの最も代表的なインスタンス
データセット ( data.matrixという名前のデータフレーム) に対してクラスター分析を実行した後、各インスタンスが属するクラスター名を含む、クラスターという名前の新しい列を末尾 (列 27) に追加しました。
私が今欲しいのは、各クラスターの代表的なインスタンスです。クラスターの重心から最小のユークリッド距離を持つインスタンスを見つけようとしました (そして、クラスターごとに手順を繰り返します)。
これが私がしたことです。他の - おそらくもっとエレガントな - 方法を考えられますか? (null のない数値列を想定します)。
algorithm - 自動生成された特徴ベクトルの集約
私は分類システムを持っていますが、残念ながら仕事上の理由からあいまいにする必要があります。考慮すべき 5 つの機能があるとします。基本的には一連のルールです。
サブジェクトを取得して AE の値を取得し、ルールを順番に照合してみます。いずれかが一致した場合、最初の結果を返します。
C は離散値で、ae のいずれかになります。残りは単なる整数です。
ルールセットは古いシステムから自動的に生成され、非常に多数のルール (約 2,500 万) を含んでいます。古いルールは if ステートメントでした。
ご覧のとおり、古いルールでは多くの場合、一部の機能が使用されなかったり、範囲が受け入れられなかったりします。より厄介なものもあります:
ルールセットは人間が維持する必要があるため、はるかに小さくする必要があるため、最初の例が次のようになるようにルールセットを縮小したいと思います。
結果として、結果列でルールセットを分割し、それぞれを個別に縮小できます。ただし、ルールセットを特定して縮小する簡単な方法は思いつきません。クラスタリング アルゴリズムを試してみましたが、一部のデータが離散的であり、それを連続として扱うのは不完全であるため、それらはチョークします。もう一つの例:
理想的な世界では、これは 2 つのルールになります。
つまり、アルゴリズムは A と B の関係を識別するだけでなく、C がノイズであると推測します (ルールにとって重要ではありません)。
この問題をどうやって解決するか考えている人はいますか? ほとんどの場合、これは 1 回限りのプロセスであると予想されるため、どの言語やライブラリも公正なゲームです。前もって感謝します。
java - Java クラスタリング ライブラリ
Java で軽量のクラスタリング ライブラリを探しています。そのライブラリに何百ものクラスタリング アルゴは必要ありません。5 ~ 7 個のアルゴで十分です。
きっと、「どのような種類のアルゴリズムが必要で、どのような目的のために」と尋ねるでしょう:)。クラスタリングを使用してデータを分類するだけです。たとえば、K は意味します。
PS: weka については知っていますが、特にクラスタリング専用ではないため、使用したくありません。
python - 株価が互いに 0.5% 以内にある場合、株価をグループに分けます
回答ありがとうございます。以前は StackOverflow を使用したことがなかったので、回答の数とその速度に驚きました。素晴らしいです。
私はまだ適切に回答を行っていませんが、問題の仕様にいくつかの情報を追加する必要があると考えました. 下の画像を参照してください。
ポイントが足りないので画像は掲載できませんが、http://journal.acquitane.com/2010-01-20/image003.jpgで画像をご覧いただけます
この画像は、私が達成しようとしていることをより詳しく説明している可能性があります。したがって、ページ全体の水平線がチャートの価格ポイントであることがわかります。これで、それぞれの 0.5% 以内の線のクラスター化が得られました。これは良いことであり、これらのクラスターを自動的に識別したい理由です。チャートで、S2 & MR1、R2 & WPP1 にクラスターがあることがわかります。
そのため、毎日これらの価格を作成し、0.5% 以内のものを手動で特定できます。-しかし、この質問の目的は、pythonルーチンでそれを行う方法です。
ラベルを付けてリストを再作成しました (以下を参照)。2 つの異なる日付のものであるため、表示価格が画像の価格と一致しないことに注意してください。
[YR3,175.24,8] [SR3,147.85,6] [YR2,144.13,8] [SR2,130.44,6] [YR1,127.79,8] [QR3,127.42,5] [SR1,120.94,6] [ QR2,120.22,5] [MR3,118.10,3] [WR3,116.73,2] [DR3,116.23,1] [WR2,115.93,2] [QR1,115.83,5] [MR2,115.56,3] [DR2 ,115.53,1] [WR1,114.79,2] [DR1,114.59,1] [WPP,113.99,2] [DPP,113.89,1] [MR1,113.50,3] [DS1,112.95,1] [WS1, 112.85,2] [DS2,112.25,1] [WS2,112.05,2] [DS3,111.31,1] [MPP,110.97,3] [WS3,110.91,2] [50MA,110.87,4] [MS1,108.91 ,3] [QPP,108.64,5] [MS2,106.37,3] [MS3,104.31,3] [QS1,104.25,5] [SPP,103.53,6] [200MA,99.42,7] [QS2,97.05, 5] [YPP,96.68,8] [SS1,94.03,6] [QS3,92.66,5] [YS1,80.34,8] [SS2,76.62,6] [SS3,67.12,6] [YS2,49.23,8] ] [YS3,32.89,8]
グループ C は間違っており、含めるべきではないという点で、元のリストを間違えました。ご指摘ありがとうございます。
また、0.5% は固定されていません。この値は日々変化しますが、問題を特定するための例として 0.5% を使用しました。
再度、感謝します。マーク
PS。私は今、答えをチェックすることでひび割れます。
やあ:
株価を操作する必要があります。Python を使い始めたばかりです (ただし、どの言語でもこれを実装するのは難しいと思います)。これをPythonでうまく実装する方法についてのアイデアを探しています。
ありがとうマーク
問題: サブリストに 2 つの項目 (株価、重量) があるリスト (FloorLevels (以下を参照)) のリストがあります。株価が互いに 0.5% 以内にある場合、株価をグループに分けたいと考えています。グループの強さは、その総重量によって決まります。例えば:
python - Python KMeans オレンジ フレームワーク
kmeans クラスタリングにオレンジを使用する予定です。チュートリアルを完了しましたが、まだ質問したいことがいくつかあります。
高次元のベクトルのクラスタリングを扱っています。1) コサイン距離は実装されていますか? 2) 空の値にゼロを与えたくありません。空のフィールドにゼロを入れないようにしましたが、エラーが発生しています:
空の値を示すにはどうすればよいですか? 3) 例のテーブルに「ID」を組み込む方法はありますか? 簡単に参照できるように、データを ID (分類ではなく) でラベル付けしたいと考えています。私は、ID 列を私のデータの公式部分とはしません。
4) kmeans クラスタリングで別の方法で出力する方法はありますか? 私はこの形式で何かを好むだろう:
ありがとう!
java - Java(および一般)の2次元ハッシュマップ
Javaで2次元ハッシュマップを効率的に作成するための最良の方法はどれですか?私が話していることの例を示すために:私は集団的知性に関連するいくつかのアルゴリズムを開発しています。これらのアルゴリズムは、要素のペア間の相関を計算することによって機能します。
これらの値をキャッシュしないと、同じペアで複数回計算されるため、パフォーマンスが低下します。(アルゴリズムはO(n ^ 2)になる可能性がありますが、O(n ^ 3)になる可能性があるため、HashMapを使用して値を格納することを検討していました。複数回使用する。
このようなデータ構造をJavaで実装するための最も効率的な方法はどれですか?O(1)を使用して要素のペアによって生成された値をキャッシュして削除することは可能ですが、明示的なクラスを使用することはとにかく重すぎるようです。
Javaでは不十分であることが判明した場合は、C / C ++に切り替える必要があるため、これらの言語に関連するアイデアも歓迎します。
ありがとう
java - Javaの場合-同様の値をグループ化する
まず、私の質問を読んでくれてありがとう。
TF/IDFを使用しました次に、それらの値について、コサイン類似度を計算して、より類似しているドキュメントの数を確認しました。次のマトリックスを見ることができます。列名はdoc1、doc2、doc3のようであり、行名はdoc1、doc2、doc3などのようです。次のマトリックスを使用すると、doc1とdoc4の類似性が72%(0.722711142)であることがわかります。両方の文書が似ているのを見ても正しいです。1000のドキュメントがあり、各ドキュメントの頻度を確認できます。それらの数が類似していることを確認するためにマトリックスで。k-meansやagnes(階層)などのさまざまなクラスタリングを使用してそれらを組み合わせました。それはクラスターを作りました。たとえば、Cluster1には(doc4、doc5、doc3)becozがあり、それぞれ値(0.722711142、0.602301766、0.69912109)が近くなっています。しかし、これら3つのドキュメントが実際に同じであるかどうかを手動で確認すると、そうではありません。:
PS:値は間違っている可能性があります、それはあなたにアイデアを与えるためだけです。ご不明な点がございましたら、お問い合わせください。ありがとう
java - 局所性のあるJava分散オブジェクト?
アプリケーションサーバー用にさまざまなJavaオブジェクト配布ライブラリ(Terracotta、JCS、JBoss、Hazelcast ...)を評価していますが、さまざまな軸での動作を理解するのに問題があります。
分散オブジェクトに対する私の要件は多くありません。つまり、1対1および1対多のメッセージングに要約されます。他にもありますが、残りの部分ではJDBCを使用するだけで、使用可能なライブラリのいずれかを使用して、この前にキャッシュを配置できると思います。
オブジェクトを分散し、ローカリティプロパティを表示するシステムが必要です。つまり、オブジェクトを取得するサーバーは、他のノードとの過剰な通信なしにオブジェクトを保持する傾向があります。Hazelcastはシンプルに見えますが(そしてピアツーピアは素晴らしいです)、オブジェクトがすべてのノードに均等に分散されている必要があるようです。
オブジェクトを、できれば透過的に永続化する方法が必要です。EC2を使用する予定なので、一時的で無料の制限付きローカルストレージ(ディスク)と永続的で非無料の無制限ストレージ(S3)のオプションがあります。OutOfMemoryErrorsについて心配しないのは素晴らしいことです。
私はテラコッタのシンプルさと「魔法」が好きですが、それは私からbeejeezusを怖がらせます。また、真に拡張するには、$$$$を費やす必要があります。そうしないと、単一のハブと通信します。
私は安くて、無料であるだけでなく、成熟した、大規模なユーザーベースの何かが欲しいです。
ご入力いただきありがとうございます。
algorithm - 時系列のイベントで不明な数のクラスターを検出するのに適切なデータ クラスタリング アルゴリズムはどれですか?
これが私のシナリオです。さまざまな場所と時間に発生する一連のイベントを考えてみましょう。例として、嵐の最中に都市で落雷を記録した高所の人を考えてみてください。私の目的では、稲妻は瞬間的で、特定の場所 (高層ビルなど) にしか当たらない。また、落雷ごとに固有の ID があり、後でその落雷を参照できると想像してください。この都市にはそのような場所が約 100,000 あります (ご想像のとおり、これは、私の現在の雇用主が実際の問題に敏感であるための例えです)。
フェーズ 1 では、入力は (攻撃 ID、攻撃時間、攻撃場所) タプルのセットです。目的の出力は、短時間内に同じ場所にヒットした複数のイベントのクラスターのセットです。クラスターの数は事前にわかりません (そのため、k-means はここではあまり役に立ちません)。「短い」と見なされているものは、特定のクラスタリング試行に対して事前定義できます。つまり、アルゴリズムを実行するよりも、たとえば 3 分に設定できます。後で 4 分または 10 分で試してください。おそらく、アルゴリズムがクラスタリングの「強さ」を決定し、特定の入力に対して、「短い」に特定の値を使用することによって最もコンパクトなクラスタリングが達成されることを推奨するのが良いかもしれませんが、これは最初は必要ありません。
フェーズ 2 では、ストライクの振幅 (つまり、実数) を考慮して、短時間内に同様の振幅を持つクラスターを探します。
データ クラスタリングに関する回答をグーグルで調べて確認しました。情報は少し当惑します (以下は、私が役に立つと思ったリンクのリストです)。AFAIK、k-means、および関連するアルゴリズムは、クラスターの数をアプリオリに指定する必要があるため、役に立ちません。私は誰かに私の問題を解決するよう求めているわけではありません (私はそれを解決するのが好きです) が、時間を節約するためにデータ クラスタリング アルゴリズムの大規模な世界で何らかのオリエンテーションが役立ちます。具体的には、クラスタ数が不明な場合に適したクラスタリング アルゴリズムはどれか。
編集:イベントは常に発生しますが、場所ごとにクラスター化するだけでよいという意味で、場所は無関係であることに気付きました。したがって、各場所には独自の時系列のイベントがあり、独立して分析できます。
いくつかの技術的な詳細:
- データセットはそれほど大きくないため、すべてをメモリに収めることができます。
- 並列処理はあると便利ですが、必須ではありません。私は 4 コアのマシンしか持っていませんが、MapReduce と Hadoop は多すぎます。
- 私がよく知っている言語は Java です。私はまだ R を使用したことがなく、そのための学習曲線は、与えられた時間に対しておそらく多すぎるでしょう。とにかく暇つぶしに見てみます。
- とりあえず、ツールを使用して分析を実行しても問題ありません。コードだけを作成する必要はありません。おそらくWekaが提案されるので、これについて言及しています。
- 視覚化が役立ちます。データセットはメモリに収まらないほど大きいため、ビジュアライゼーションは少なくともズームとパンをサポートする必要があります。明確にするために: 視覚化 GUI を構築する必要はありません。ツールで生成された結果を確認するために使用する優れた機能です。
ありがとうございました。私が役立つと思った質問は次のとおりです。数値のクラスターの中心を見つける方法は? 統計の問題?, Paper Boys のクラスタリング アルゴリズム, Java クラスタリング ライブラリ,オブジェクトをクラスタ化する方法 (座標なし) ,ドットの「クラスタ」を検出するアルゴリズム
r - 樹状図(または「hclust」)オブジェクトを手動で作成するにはどうすればよいですか?(Rで)
樹状図を画像として提供しています。それほど大きくないので、「手作業で」Rオブジェクトに組み立てることができます。
だから私の質問は、私が持っているのが樹状図画像だけである場合、どのように手動で樹状図(または「hclust」)オブジェクトを作成するのですか?
「as.dendrogram」という関数があるようですが、使い方の例が見つかりませんでした。
(ps:この投稿はここからの私の質問に続いています)
どうもありがとう、タル