L2正規化された機能マトリックスで「Distance」、「cosine」、「EmptyAction」、「drop」を使用してMatlabの通常のkmeansアルゴリズムを使用していますが、問題があります。1.00000
Matlab が生成する出力は、k=20 の場合でも、すべてのデータポイントを cluster に割り当てるだけであり、C のすべての重心はNaN
です。これを引き起こしている可能性のあるものについて誰か提案がありますか?
行列のレイアウトは ([0,1,...,1,0,1],[...],[0,1,...,1,0,1]) です。numpy.linalg.norm
ファイルをMatlabに渡す前に、Pythonを使用してL2正規化を行いました。これは、私が kmeans を実行している正確な方法です。
m=importdata('matrix.txt');
data=m'; % transpose, because kmeans treats columns as features instead of rows
[L, C]=kmeans(data, 20, 'Distance', 'cosine', 'EmptyAction', 'drop')
これが私の正規化されたデータセットのサンプルです:
10.3440804328
12.6885775404
15.5884572681
15.9059737206
17.4355957742
17.0
17.3493515729
17.3205080757
18.6279360102
19.7230829233
21.400934559
22.0
22.5831795813
23.0
24.0416305603
25.2388589282
26.8141753556
22.5388553392
9.2736184955
13.5277492585
15.2970585408
どんな助けや提案も大歓迎です。さらに情報が必要な場合はお知らせください。