【Java】K

您所在的位置:网站首页 java图像算法 【Java】K

【Java】K

2023-07-24 01:42| 来源: 网络整理| 查看: 265

1.K-means算法简述以及代码原型

数据挖掘中一个重要算法是K-means,我这里就不做详细介绍。如果感兴趣的话可以移步陈皓的博客:   

 http://www.csdn.net/article/2012-07-03/2807073-k-means 讲得很好

    总的来讲,k-means聚类需要以下几个步骤:

         ①.初始化数据

         ②.计算初始的中心点,可以随机选择

         ③.计算每个点到每个聚类中心的距离,并且划分到距离最短的聚类中心簇中

         ④.计算每个聚类簇的平均值,这个均值作为新的聚类中心,重复步骤3

         ⑤.如果达到最大循环或者是聚类中心不再变化或者聚类中心变化幅度小于一定范围时,停止循环。

    恩,原理就是这样,超级简单。但是Java算法实现起来代码量并不小。这个代码也不算是完全自己写的啦,也有些借鉴。我把k-means实现封装在了一个类里面,这样就可以随时调用了呢。

      

import java.util.ArrayList; import java.util.Random; public class kmeans { private int k;//簇数 private int m;//迭代次数 private int dataSetLength;//数据集长度 private ArrayList dataSet;//数据集合 private ArrayList center;//中心链表 private ArrayList cluster;//簇 private ArrayList jc;//误差平方和,这个是用来计算中心聚点的移动哦 private Random random; //设置原始数据集合 public void setDataSet(ArrayList dataSet){ this.dataSet=dataSet; } //获得簇分组 public ArrayList getCluster(){ return this.cluster; } //构造函数,传入要分的簇的数量 public kmeans(int k){ if(kdataSetLength) k=dataSetLength; center=initCenters(); cluster=initCluster(); jc=new ArrayList(); } //初始化数据集合 private void initDataSet(){ dataSet=new ArrayList(); double[][] dataSetArray=new double[][]{{8,2},{3,4},{2,5},{4,2}, {7,3},{6,2},{4,7},{6,3},{5,3},{6,3},{6,9}, {1,6},{3,9},{4,1},{8,6}}; for(int i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3