资源简介
使用纯java实现KMeans模拟算法代码,随即撒点,计算K个聚类,使用了javaFX绘图工具包,结果有散点图的显示
代码片段和文件信息
package kmeans;
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.ScatterChart;
import javafx.scene.chart.XYChart;
import javafx.scene.chart.XYChart.Series;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import java.util.ArrayList;
import java.util.Vector;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.ScatterChart;
import javafx.scene.chart.XYChart;
import javafx.scene.chart.XYChart.Series;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
//随机选取若干个聚类,计算所有点到这些聚类的距离,取最小值属于该类
//分类后将每个类所有点取均值,算该类的中心点,随后对所有点再次计算欧氏距离,再次分类
//迭代到每个中心点不变为止
//生成指定个数和维数的随机向量
public class KMeans extends Application{
static ArrayList> vectorList ;//向量组
static Vector center1 ;//中心1
static Vector center2 ;//中心2
static ArrayList> cluster1;//聚类1
static ArrayList> cluster2;//聚类2
static double threshold = 0.01;
public void showVectorGroup(ArrayList> vectorList int vectorNum int dim) {
for(int i=0;i for(int j=0;j System.out.print(vectorList.get(i).get(j)+“ “);
}
System.out.println();
}
}
public static ArrayList> generateVectorGroup(int vectorNum int dim) {
ArrayList> vectorList = new ArrayList>();
//随机填充向量组
for(int i=0;i Vector vTemp = new Vector<>();
for(int j=0;j double randomTemp = Math.random()*100-30;
vTemp.add((randomTemp)<0?(randomTemp+Math.random()*40):(randomTemp));
}vectorList.add(vTemp);//讲向量加入向量组中
}
//增加偏置因子让数据更好的显示类别
for(int i=0;i Vector vTemp = new Vector<>();
for(int j=0;j double randomTemp = Math.random()*100+30;
vTemp.add((randomTemp)>100?(randomTemp-Math.random()*40):(randomTemp));
}vectorList.add(vTemp);//讲向量加入向量组中
}
return vectorList;
}
//计算向量的欧式距离
public static double calculationVectorDistance(Vector v1Vector v2 int dim) {
double distance = 0.0;
for(int i=0;i distance += Math.pow((v1.get(i)-v2.get(i))2);
}
return Math.sqrt(distance);
}
//聚类方法
public static void doCluster() {
}
//计算聚类的中心
public static Vector computeCenter(ArrayList> cluster int dim){
Vector center = new Vector<>();
for(int i=0;i double calculate = 0.0;
for(int j=0;j calculate+=cluster.get(j).get(i);
}
c
相关资源
- matlabcontrol-4.1.0java中调用matlab代码ja
- DBUtil工具类,java,mysql
- 全国交通咨询系统数据结构课设 图的
- 基于javaf808协议网关模拟器
- Java+SQLServer学生成绩管理系统代码+数
- 九九乘法表
- java经典50例题
- 基于赤字轮询的mm3队列模拟java代码
- JAVA 模拟时钟实验报告
- Java拼图游戏代码
- java2cpp java转C++
- 银行账户管理系统java程序编写
- Java拼写检查
- fpgrowth算法java源码
- Java实现圆圈旋转效果,等待、加载、
- JAVA C/S架构应用程序
- Java解析CSV文件
- 一个简易版坦克大战 供java初学者学
- 教学管理系统代码java
- 毕向东Java全套.txt
- Java 套接字(Socket)实现的简单局域网
- java 多线程 打字游戏
- 必须知道的11个java第三方类库
- 基于java数据结构链表写的猴子选大王
- Java单链表增删改查的实现
- 实验三:完整性访问控制系统设计与
- AHP算法java实现
- java socket多人聊天文字+图片+文件传输
- java程序 停车场管理系统
- 计算机图形学实验 鼠标点击画直线
评论
共有 条评论