[已答复] 使用谱聚类对数据进行聚类,出现数据类型无效问题

[复制链接]
chinaheart1989 发表于 2022-5-2 20:32:14
本帖最后由 chinaheart1989 于 2022-5-2 20:53 编辑

使用谱聚类对数据集进行聚类,谱聚类使用的MATLAB自带的函数,使用场景是在循环过程中,前几 步循环能够正常聚类,但是到18步时,出现
错误使用 kmeans (line 166)
数据类型无效。KMEANS 的第一个参数必须为实数数组。

出错 spectralcluster>clusterEigenvectors (line 191)
        idx = kmeans(V,k,'Replicates',5);
出错 spectralcluster (line 179)

labels = clusterEigenvectors(Vnonan,k,clustMethod);

数据为
0.380593708462561
0.00786098469176665
0.00221099178774479
0.244894625061265
0.00184331797235023
0.243669335075968
0.317685589519651

idx=spectralcluster(data,2);
数据类型使用WHOS ,是double类型,直接使用kmeans函数却能够正常聚类,请问如何解决




4 条回复


chinaheart1989 发表于 2022-5-2 20:40:59
又试过其他方法,将数据复制到EXCEL表中,然后在命令窗口随便赋值,然后再使用上述语句,能够聚类,请问这个到底是什么原因

chinaheart1989 发表于 2022-5-13 10:34:24
自己回复一波,别沉了啊

谢中华 发表于 2022-5-13 11:10:05
本帖最后由 谢中华 于 2022-5-13 11:27 编辑

数据量太少,并且数据的量级也太小了,导致函数内部求解拉普拉斯矩阵的特征向量时出现了复数,对数据做个标准化变换就可以了,或者乘以一个倍数(例如10)也行
  1. data0 = [0.380593708462561
  2. 0.00786098469176665
  3. 0.00221099178774479
  4. 0.244894625061265
  5. 0.00184331797235023
  6. 0.243669335075968
  7. 0.317685589519651];
  8. data1 = zscore(data0);
  9. idx2 = spectralcluster(data1,2);
复制代码

chinaheart1989 发表于 2022-5-16 18:05:38
谢中华 发表于 2022-5-13 11:10
数据量太少,并且数据的量级也太小了,导致函数内部求解拉普拉斯矩阵的特征向量时出现了复数,对数据做个标 ...

谢谢,我试了一下,还是不行,同样的问题,按照您提供的方式修改,z变换,normalize或者直接将数据放大都不行,都会遇到同样的问题,其中采用数据放大的方法,将数据放大10倍,100倍,数据最后聚类结果不相同
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表