用Java实现Kmeans聚类算法

具体算法可以参考
http://www.aboutyun.com/thread-18178-1-1.html

本文用K_means算法实现鸢尾花的识别

鸢尾花卉数据集,是一类多重变量分析的数据集。
每个数据包含4个属性。
可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类
在这里插入图片描述
最后通过K_means算法识别的类别和数据中给定的类别对比计算正确率

实现过程

  1. 定K值及初始质心
  2. 计算距离并划分数据
  3. 使用均值作为新质心
  4. 新的质心和原质心相等算法停止

Java代码

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;

public class K_means {
   
   
	
	//将花分为三类
	private List<float[]> K1 = new ArrayList<>();
	private List<float[]> K2 = new ArrayList<>();
	private List<float[]> K3 = new ArrayList<>();

	public static int num;
	
	private static List<float[]> flowerList = new ArrayList<>();
	
/**
 * 输入流导入实验数据
 */
	private void initData(){
   
   
		FileReader reader = null;
		try {
   
   
			reader = new FileReader("input.txt");
		} catch (FileNotFoundException e1) {
   
   
			e1.printStackTrace();
		}
		BufferedReader br = new BufferedReader(reader);
		String str;
		
		try {
   
   
			while((str = br.readLine()) != null){
   
   
				
				float[] flower = new float[6];
				String[] strArray =str.split("\\s+");
				flower[0] = Float.parseFloat(strArray[0]);
				flower[1] = Float.parseFloat(strArray[1]);
				flower[2] = Float.parseFloat(strArray[2]);
				flower[3] = Float.parseFloat(strArray[3]);
				flower[4] = Float.parseFloat(strArray[4]);
				flower[5] = Float.parseFloat
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值