• 大小: 4KB
    文件类型: .java
    金币: 1
    下载: 0 次
    发布日期: 2021-06-02
  • 语言: Java
  • 标签: kmeans  

资源简介

基于JAVA的kmeans算法,随机取数,循环取平均与计算,最终分类

资源截图

代码片段和文件信息

package Kmeans;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class Kmeans {
public static int dimension=690;
public static int count_of_data=320;
public static int cluster=20;
public Kmeans() throws FileNotFoundException{
ArrayList dataset=new ArrayList<>();
      String path=“E:\\数据挖掘\\实验三\\聚类实验数据\\data.txt“;
// String path=“C:\\data.txt“;
File file=new File(path);
Scanner sc=null;
sc=new Scanner(file);
while(sc.hasNextLine()){
Data data=new Data();
String str=sc.nextLine();
String[] arr=str.split(“ “);
for(String s:arr){
data.point.add(Double.parseDouble(s));
}
dataset.add(data);
}
File fi = new File(“K-mean“ + cluster + “.txt“);
FileOutputStream fs = new FileOutputStream(fi);
PrintStream ps = new PrintStream(fs);
// 随机取cluster个点
ArrayList initial=new ArrayList<>();
Random rand =new Random();
for(int i=0;i int x;
while(initial.contains(x=rand.nextInt(count_of_data))==true){}
initial.add(x);
}
// 生成cluster个簇
ArrayList crowdset=new ArrayList<>();
for(int i=0;i Crowdtogether crowd=new Crowdtogether();
crowd.dim=i;
for(int j=0;j crowd.point.add(dataset.get(initial.get(i)).point.get(j));
}
crowdset.add(crowd);
}
// 每个点分配簇
for(int i=0;i dyeing(dataset.get(i)idatasetcrowdset);
}
// while循环
boolean flag=false;
while(flag==false){
// 取平均值
for(int i=0;i double sumDistance=0;
double count=0;
Double[] pt=new Double[dimension];
for(int x=0;x pt[x]=0.0;
}
for(int j=0;j if(dataset.get(j).dim==i){
for(int k=0;k pt[k]=pt[k]+dataset.get(j).point.get(k);
}
count++;
}
}
for(int k=0;k

评论

共有 条评论