资源简介
使用纯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
相关资源
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
- [免费]java实现有障碍物的贪吃蛇游戏
评论
共有 条评论