1

私はデータの頻度に基づいて値をクラスタリングする必要があるクラスタリングアルゴリズムに取り組んでいます。これは、どの値が重要ではなく、個々のエンティティより大きなクラスタの一部として扱われるかを示します。発生頻度に基づいて値をクラスタリングする方法は?

私は、データ科学に新しいですし、これを達成するための最良のアルゴリズム/アプローチを知っていただきたいと思います。

たとえば、次のデータセットがあります。最初の列はプロパティ値で、2番目の列は発生頻度を示します。

Value = [1, 1.5, 2, 3, 4, 6, 8, 16, 32, 128] 
Frequency = [207, 19, 169, 92, 36, 7, 12, 5, 2, 2] 

Here, Frequency[i] corresponds to Value[i] 

頻度は値の重要度と考えることができます。値の重要性を表すもう一つのことは、配列内の要素間の距離です。例えば、1.5は32や128に比べてそれほど重要ではない。なぜなら、1と2のような要素がはるかに近いからである。

これらの値をクラスターに近づけるには、その発生。上記の問題の可能な出力は、

Clust_value = [(1, 1.5), 2, 3, 4, (6, 8), 16, (32, 128)] 

です。これはクラスタではなく1つの可能な回答です。私はこの問題に近づくための最良のアルゴリズムを知る必要があります。

まず、私はアカウントに値配列の要素の広がりを取ることなく、この問題を解決しようとしたが、それは、いくつかの状況で間違った答えを与えました。私たちは、値をクラスタリングするために平均値と中央値を再度使用してみましたが、成功した結果はありませんでした。

私たちは隣人の頻度を比較して、1つのクラスタに値をクラブに試してみました。また、値の配列の要素間の最小距離を見つけようとし、その差がしきい値より大きい場合は1つのクラスターに入れましたが、頻度が低い場合は値をクラスター化できませんでした。私はまた、クラスタリングアルゴリズムをオンラインで探しましたが、上で定義した問題に関連する有用なリソースを得ていませんでした。

問題にアプローチする方法はありますか?

+3

'これはクラスタではなく、可能な答えです。 ' - 問題はあまり明確に定義されていないようです。例えば。なぜここで32,128のクラスタリングが行われるのですか。クラスタリング16と32? - それは間違った答えを出した。 - 正確に何が正しいか、間違っているのか?周波数だけでクラスタリングするには、Shannon-FanoまたはHuffmanコーディングのラインに沿って何かを提案するかもしれません。 –

+0

@ 500-InternalServerError問題を正しくフレーム化できませんでした。問題は、2つのもの、すなわち周波数とノード間の距離に依存する値の配列のクラスタからです。 32,128は基本的に周波数4のクラスタを形成するようにクラスタを形成する。それが16に加わると、クラスターの頻度は7になり、128に対しては2になります。クラスター32で比較可能な頻度を達成するために、32は128よりも16ではなく、32は128よりも16に近くなります。今すぐ! –

答えて

0

あなたは別のものより1つのソリューションは、より良いものを作るのいくつかの数学的な品質基準を思い付くする必要があります。何千もの数字がない限り、最初の数字から始まり、品質が上がっている間は次の数字を追加します。それ以外の場合は新しいクラスターを開始します。あなたのデータはであるので、となります。これはかなり効率的で、かなり良い解決策を見つけることができます。

したがって、すべてになります。に品質を指定する必要があります。

既存の基準(K-手段で、例えば分散が)あなたのために働くことを前提としないでください。ほとんどの場合、要件が分散になるようなデータ変換を見つけることができるかもしれませんが、それもまたあなたの問題に特有のものになります。

関連する問題