JAVA读取excel表格数据,K均值聚类

前几天在写支持向量机,还有松弛因子和SMO算法没有写。然后接到了新任务,用java写算法。借书,查资料,想着先写个比较简单的K均值,发现java写这些真的太不方便了,但是工程上肯定不可能用matlab的。忧伤。
根据之前学习的机器学习作业,想着用作业里的数据,因为之前matlab把作业都做好了,也知道正确答案是什么。这样我用java编,也能知道自己编的对不对。
因为matlab里是.mat文件,我又开始查java怎么读取.mat文件,花了大量时间按照他人博客里说的,也没有搞定。后来想了个蠢方法,把数据复制到excel里,再写程序读出来。
刚才添加程序出错,导致刚才写的一大堆文字没了,很烦==。
程序也不知道怎么添加,就放图片进去。有想要程序的可以私信我。程序比较多,我贴了大部分。感觉好蠢阿
昨天刚下载的java,对java编程语言还不太熟悉,所以程序很多地方不够简便,但是这样也有好处,就是容易看懂。

K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。
假设要把样本集分为c个类别,算法描述如下:
(1)适当选择c个类的初始中心;
(2)在第k次迭代中,对任意一个样本,求其到c个中心的距离,将该样本归到距离最短的中心所在的类;
(3)利用均值等方法更新该类的中心值;
(4)对于所有的c个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束,否则继续迭代。

程序解释:程序中将300个样本数据分为3类,先用jxl.jar包里的功能读取excel的数据到数组X,再随机初始化聚类中心,根据各个样本点到聚类中心的欧式距离远近,将样本点归到离它最近的一类。归好类后基于每个类求平均值,并将其作为新的聚类中心。再基于新聚类中心对样本点重新归类。迭代,直至聚类中心的移动小于某个阈值。

JAVA读取excel表格数据,K均值聚类
JAVA读取excel表格数据,K均值聚类
JAVA读取excel表格数据,K均值聚类

JAVA读取excel表格数据,K均值聚类

JAVA读取excel表格数据,K均值聚类

JAVA读取excel表格数据,K均值聚类
JAVA读取excel表格数据,K均值聚类

JAVA读取excel表格数据,K均值聚类
JAVA读取excel表格数据,K均值聚类
JAVA读取excel表格数据,K均值聚类