k-means java实现_k-means java实现

import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.Random; public class Kmeans { /** * @param args * @throws IOException */ public static List>> initHelpCenterList(List>> helpCenterList,int k){ for(int i=0;i>()); } return helpCenterList; } /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException{ List> centers = new ArrayList>(); List> newCenters = new ArrayList>(); List>> helpCenterList = new ArrayList>>(); //读入原始数据 BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("wine.txt"))); String data = null; List> dataList = new ArrayList>(); while((data=br.readLine())!=null){ //System.out.println(data); String []fields = data.split(","); List tmpList = new ArrayList(); for(int i=0; i) tmpList); } br.close(); //随机确定K个初始聚类中心 Random rd = new Random(); int k=3; int [] initIndex={59,71,48}; int [] helpIndex = {0,59,130}; int [] givenIndex = {0,1,2}; System.out.println("random centers' index"); for(int i=0;i>()); } /* //注释掉的这部分目的是,取测试数据集最后稳定的三个类簇的聚类中心作为初始聚类中心 centers = new ArrayList>(); for(int i=0;i<59;i++) helpCenterList.get(0).add(dataList.get(i)); for(int i=59;i<130;i++) helpCenterList.get(1).add(dataList.get(i)); for(int i=130;i<178;i++) helpCenterList.get(2).add(dataList.get(i)); for(int i=0;i tmp = new ArrayList(); for(int j=0;jcurrentDistance){ minDistance=currentDistance; centerIndex=j; } } helpCenterList.get(centerIndex).add(dataList.get(i)); } // System.out.println(helpCenterList); //计算新的k个聚类中心 for(int i=0;i tmp = new ArrayList(); for(int j=0;j>(newCenters); //System.out.println(newCenters); newCenters = new ArrayList>(); helpCenterList = new ArrayList>>(); helpCenterList=initHelpCenterList(helpCenterList,k); } } //输出最后聚类结果 for(int i=0;i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值