【问题标题】:SMILE xmeans gave wrong clusteringSMILE xmeans 给出了错误的聚类
【发布时间】:2021-09-30 06:22:11
【问题描述】:

我正在使用这个二维数组和微笑核心 2.4.0 测试 xmeans 聚类。

import smile.clustering.xmeans

val arrData = Array(Array(0.0,0,0),
  Array(0.0,0,0),
  Array(0,0.0,0),
  Array(0,0,0.0),
  Array(0,0,0.0),
  Array(100,100.0,100),
  Array(100,100,100.0),
  Array(100.0,100,100),
  Array(100,100.0,100),
  Array(100,100,100.0),
  Array(1000,1000.0,1000),
  Array(1000,1000,1000.0),
  Array(1000,1000.0,1000),
  Array(1000.0,1000,1000),
  Array(1000,1000.0,1000),
  Array(1000,1000,1000.0))

val fitX = xmeans(arrData, 10)

println("k: " + fitX.k)
println("size: " + fitX.centroids.size)
println("centroids: " + fitX.centroids(0)(0)+"-"+fitX.centroids(0)(1)+"-"+fitX.centroids(0)(2))
println("distortion: " + fitX.distortion)
for (a<-0 to fitX.y.length)  println("y: "+a+" "+ fitX.y(a))

我不明白为什么它会给出以下输出,因为很明显元素是 0,100,1000。不应该只有一个集群,并且质心只是 3 个特征的平均值。我做错什么了吗?

k: 1
size: 1
centroids: 406.25-406.25-406.25
distortion: 1.0228125E7
y: 0 0
y: 1 0
y: 2 0
y: 3 0
....
y:15 0

【问题讨论】:

    标签: scala cluster-analysis smile


    【解决方案1】:

    刚刚尝试了另一个更长的数组,length=233,

    Array(Array(1.2,2.2,3.2)
    ....
    Array(33.4,43.4,53.4)
    ...
    Array(121.1,171.1,221.1))
    

    它给出了两个质心。所以看起来 xmeans 对最小数据行数有要求。

    【讨论】:

      猜你喜欢
      • 2015-07-13
      • 2012-09-09
      • 1970-01-01
      • 2021-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-03
      相关资源
      最近更新 更多