解决MATLAB在K-means提示“KMEANS does not accept complex data.”错误

在尝试K-means聚类时遇到MATLAB错误‘KMEANS does not accept complex data.’,通过查看错误源代码发现原因为参数类型不匹配。解决方法是将table类型的变量转换为数组类型,使用table2array()函数即可。此问题揭示了查看错误报告在解决编程问题中的重要性。
摘要由CSDN通过智能技术生成

昨天开始看聚类方法,结果才看到第一个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);
%%
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值