昨天开始看聚类方法,结果才看到第一个K-means聚类方法就卡壳了。我先大致了解了K-means聚类方法的原理,然后照着老师的代码逐步实现,就在使用kmeans函数进行聚类时,命令窗口报出了“KMEANS does not accept complex data.”的错误,百度也没有查询到相关的解决办法。自己前后经历了反复看原理以及kmeans函数的使用方法,但也没什么进展。直到后面突然想起看报告的错误的源代码,不到五分钟解决了问题。以下为解决方案:
(1)命令窗口报出“错误使用 kmeans (line 159) KMEANS does not accept complex data.”错误,点击“line 159”,显示为以下错误,意思是参数类型不匹配。
(2)我的kmeans聚类的那两行代码是:
bonds = corp(:,{ 'Coupon','YTM','CurrentYield','RatingNum'});%取出含有'Coupon','YTM','CurrentYield','RatingNum'的列 kidx = kmeans(bonds,numClust,'distance',dist_k);
通过在命令窗口输入“class(bonds)”发现竟然是table类型,肯定不能识别啊,于是我使用table2array()函数将其改成了数组类型,一切问题迎刃而解。
改后的代码是:
bonds = corp(:,{ 'Coupon','YTM','CurrentYield','RatingNum'});%取出含有'Coupon','YTM','CurrentYield','RatingNum'的列 % bonds = table2array(bonds); %%