• 大小: 15KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-10-14
  • 语言: Java
  • 标签: 聚类分析  

资源简介

实验描述: 对指定数据集进行聚类分析,选择适当的聚类算法,编写程序实现,提交程序和结果报告。 数据集: Iris Data Set(见附件一) ,根据花的属性进行聚类。 数据包括四个属性:sepal length花萼长度,sepal width花萼宽度,petal length花瓣长度,petal width花瓣宽度。其中第五个值表示该样本属于哪一个类。 样本点间的距离直接用向量的欧氏距离。

资源截图

代码片段和文件信息

package com.company;


        import java.io.File;
        import java.util.Scanner;
        import java.util.Vector;

        import static com.sun.org.apache.xalan.internal.lib.ExsltStrings.split;

public class Main {
    public static Vector indata = new Vector<>();  //存储从文件中读取的原始数据
    public static Vector data = new Vector<>();  //存储经过处理后的每一个样本的各个属性值和所属分类
    public static Vector init_kernal = new Vector<>();//存储每次迭代产生的聚类核心的每个属性值的均值

    public static boolean loadData(String url) {//加载测试的数据文件
        try {
            Scanner in = new Scanner(new File(url));//读入文件
            while (in.hasNextLine()) {
                String str = in.nextLine();//将文件的每一行存到str的临时变量中
                indata.add(str);//将每一个样本点的数据追加到Vector 中
            }
            return true;
        } catch (Exception e) { //如果出错返回false
            return false;
        }
    }


    public static void pretreatment(Vector indata) {   //数据预处理,将原始数据中的每一个属性值提取出来存放到Vector  data中
        int i = 0;
        String t;
        while (i < indata.size()) {//取出indata中的每一行值
            double[] tem = new double[5];
            t = indata.get(i);
            String[] sourceStrArray = t.split(““ 5);//使用字符串分割函数提取出各属性值

            for (int j = 0; j < 4; j++) {
                tem[j] = Double.parseDouble(sourceStrArray[j]);//将每一个的样本的各属性值类型转换后依次存入到double[]数组中
            }
            tem[4] = 0;//tem的第五个值表示所属类别,1.0表示第一类,2.0表示第二类,3.0表示第三类,初始化为0不属于任何类
            data.add(tem);//将每一个样本加入到data中
            i++;
        }

    }

    public static Vector set_kernal(Vector data int a int b int c) {//设置初始的聚类核心,a,b,c分别表示一个类的核心在data中的编号
        init_kernal.add(data.get(a));
        init_kernal.add(data.get(b));
        init_kernal.add(data.get(c));
        return init_kernal;

    }

    public static int choose(double[] data double[] a double[] b double[] c) {//判断一个样本属于哪一个类,返回值1表示第一类,2表示第二类,3表示第三类
        double ta tb tc;
        //ta,tb,tc分别表示一个样本点到三个聚类核心的欧式距离的平方
        ta = (data[0] - a[0]) * (data[0] - a[0]) + (data[1] - a[1]) * (data[1] - a[1]) + (data[2] - a[2]) * (data[2] - a[2]) + (data[3] - a[3]) * (data[3] - a[3]);
        tb = (data[0] - b[0]) * (data[0] - b[0]) + (data[1] - b[1]) * (data[1] - b[1]) + (data[2] - b[2]) * (data[2] - b[2]) + (data[3] - b[3]) * (data[3] - b[3]);
        tc = (data[0] - c[0]) * (data[0] - c[0]) + (data[1] - c[1]) * (data[1] - c[1]) + (data[2] - c[2]) * (data[2] - c[2]) + (data[3] - c[3]) * (data[3] - c[3]);

        if (ta == Math.min(Math.min(ta tb) tc))   //如果到第一类的距离最小返回1
            return 1;
        else if (tb == Math.min(Math.min(ta tb) tc))//如果到第二类的距离最小返回2
            return 2;
        else if (tc == Math.min(Math.min(ta tb) tc))//如果到第三类的距离最小返回3
            return 3;
        return 0;
    }


    public static Vector onestep(Vector data Vector kernal) {//函数执行一次表示kmeans的

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-11-22 00:30  2014301500370-李勇志\
     目录           0  2016-12-10 12:10  2014301500370-李勇志\.idea\
     文件         686  2016-11-15 14:35  2014301500370-李勇志\.idea\compiler.xml
     目录           0  2016-11-22 00:30  2014301500370-李勇志\.idea\copyright\
     文件          76  2016-11-15 14:35  2014301500370-李勇志\.idea\copyright\profiles_settings.xml
     文件          97  2016-11-15 14:35  2014301500370-李勇志\.idea\description.html
     文件         529  2016-11-15 14:35  2014301500370-李勇志\.idea\misc.xml
     文件         283  2016-11-15 14:35  2014301500370-李勇志\.idea\modules.xml
     文件          91  2016-11-15 14:35  2014301500370-李勇志\.idea\project-template.xml
     文件       34495  2016-12-07 13:48  2014301500370-李勇志\.idea\workspace.xml
     目录           0  2016-11-15 17:10  2014301500370-李勇志\out\
     目录           0  2016-11-15 17:10  2014301500370-李勇志\out\production\
     目录           0  2016-11-15 19:24  2014301500370-李勇志\out\production\数据挖掘实验\
     目录           0  2016-11-15 19:24  2014301500370-李勇志\out\production\数据挖掘实验\com\
     目录           0  2016-11-22 00:30  2014301500370-李勇志\out\production\数据挖掘实验\com\company\
     文件        4952  2016-11-15 19:24  2014301500370-李勇志\out\production\数据挖掘实验\com\company\Main.class
     目录           0  2016-11-15 17:10  2014301500370-李勇志\src\
     目录           0  2016-11-15 17:10  2014301500370-李勇志\src\com\
     目录           0  2016-11-22 00:30  2014301500370-李勇志\src\com\company\
     文件        7562  2016-11-15 19:30  2014301500370-李勇志\src\com\company\Main.java
     文件         437  2016-11-15 14:35  2014301500370-李勇志\数据挖掘实验.iml

评论

共有 条评论