基于欧式距离的聚类算法的Kmeans作业

news2024/11/20 23:19:29

访问【WRITE-BUG数字空间】_[内附完整源码和文档]

基于欧式距离的聚类算法,其认为两个目标的距离越近,相似度越大。 该实验产生的点为二维空间中的点。

环境配置
java环境,使用原生的Java UI组件JPanel和JFrame

算法原理
基于欧式距离的聚类算法,其认为两个目标的距离越近,相似度越大。

该实验产生的点为二维空间中的点。

欧式距离
n维空间中的两个点X,Y

d i s t ( X , Y ) = ∑ i = 1 n ( x i − y i ) 2 dist(X, Y) = \sqrt{\sum_{i = 1}^{n} (x_{i} - y_{i})^{2}} dist(X,Y)=i=1n(xiyi)2

算法过程
选择k,聚类的数量。
选择k个点作为聚类中心。
对每个样本点计算到k个聚类中心的距离,采用的是欧氏距离,将其分类到距离最近的类别中。
根据每个类别,计算被分类在该类别中的所有点的中心。
如果计算出来的中心和聚类中心相同,则退出循环,否则以新的计算出来的中心为每个聚类的聚类中心,不断重复3 - 4步。
核心代码
设定K
/Step按钮的监听器/
jButton2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {

    painting.assign();

    painting.updateCentroids();


    /*算法终止的话让按钮变灰并提示算法结束*/
    if (painting.stop(num++)) {
        jButton2.setText("End");
        jButton2.setEnabled(false);
    }


    painting.repaint();
}

});
计算欧式距离
/欧式距离/
double Euc(Point p1, Point p2) {
double distance = 0.0;

for (int i = 0; i < Dimension; ++i)
    distance += (p1.x[i] - p2.x[i]) * (p1.x[i] - p2.x[i]);
return Math.sqrt(distance);

}
更新中心点
/更新中心点/
void updateCentroid(int clusterNum) {
//将newCluster数组的那个中心点置空
for (int i = 0; i < Dimension; ++i)
newCluster[clusterNum].x[i] = 0;

int clusterSize = 0;

for (int i = 0; i < Nodes; ++i)
    if (p[i].cluster == clusterNum) {
        //这个簇中有多少点
        clusterSize++;
        for (int j = 0; j < Dimension; ++j)
            newCluster[clusterNum].x[j] += p[i].x[j];
    }


if (clusterSize == 0)
    return;

for (int i = 0; i < Dimension; ++i)
    newCluster[clusterNum].x[i] /= (double) clusterSize;

}
计算每个点的分类
/分配数据点到哪个簇/
void assignPoint(int x) {
double minDistance = 99999999;
int nodeClassify = 1;
for (int i = 0; i < K; ++i) {
//计算欧式距离
double newDistance = Euc(p[x], newCluster[i]);
if (newDistance < minDistance) {
minDistance = newDistance;
nodeClassify = i;
}
}
p[x].cluster = nodeClassify;
}
判断终止条件
/判断算法是否终止/
Boolean stop(int currentTime) {
//超过迭代次数
if (currentTime > range) {
int num = 1;
System.out.println(“超过迭代次数”);
for (Point i : oldCluster) {
System.out.println(“中心点” + num + “坐标:(” + i.x[0] + “,” + i.x[1] + “)”);
num++;
}
return true;
}
/如果每一个中心点都与上一次的中心点相同,则算法终止,否则更新oldCentroid/
for (int i = 0; i < K; ++i)
if (!samePoint(oldCluster[i], newCluster[i])) {
for (int j = 0; j < K; ++j)
copy(oldCluster[j], newCluster[j]);
return false;
}
int num = 1;
System.out.println(“迭代完成”);
for (Point i : oldCluster) {
System.out.println(“中心点” + num + “坐标:(” + i.x[0] + “,” + i.x[1] + “)”);
num++;
}
return true;
}在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/540956.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

问卷调查类型全面解析

调查问卷是从人们那里收集反馈和意见的强大工具。通过提出结构化问题&#xff0c;研究人员、组织和企业可以获得大量有关如何改进产品或服务、解决问题或做出明智决策的信息。但在设计调查问卷之前&#xff0c;必须首先了解不同的类型以及何时使用它们。 1、结构化问卷 结构化…

秀场、卖场、生态场,长沙为何连展会也与众不同?

文 | 智能相对论 作者 | 易不二 第三届长沙国际工程机械展览会已经完美落下帷幕。 依托长沙作为“工程机械之都”的硬核产业实力&#xff0c;又经过了多年耕耘&#xff0c;长沙国际工程机械展已经达到了跻身全球一流展会的水平。 4天的展期里&#xff0c;全球1502家企业参展…

【产品经理】产品体验报告准备

假如你已经决定为一个app写一份产品体验报告了&#xff0c;那么&#xff0c;我想说的是&#xff0c;不要急着动笔&#xff01; 下面就进入正题&#xff0c;在写产品体验报告之前&#xff0c;我会先去做哪些准备工作&#xff1a; &#xff08;1&#xff09;下载、把玩并熟悉app…

15-03 软件安全

系统安全 系统安全威胁 病毒蠕虫特洛伊木马Rootkit后门僵尸网络零日攻击Webshell 操作系统防御 杀毒软件&#xff1a;兵来将挡&#xff0c;水来土掩升级补丁&#xff1a;防止零日攻击限制&#xff1a;用户、网络、端口、程序、安全基准、不可变基础架构 杀毒软件检测机制 …

【猿人学WEB题目专解】猿人学第18题

&#x1f308;据说&#xff0c;看我文章时 关注、点赞、收藏 的 帅哥美女们 心情都会不自觉的好起来。 前言&#xff1a; &#x1f9e1;作者简介&#xff1a;大家好我是 user_from_future &#xff0c;意思是 “ 来自未来的用户 ” &#xff0c;寓意着未来的自己一定很棒~ ✨个…

财报解读 | 护肤业务乘风破浪,逸仙电商手握增长“王牌”

五年新战略计划进入第二年&#xff0c;逸仙电商能否如愿“一步、两步、三步”向前走&#xff1f; 5月16日&#xff0c;逸仙电商发布了2023年第一季度财报。财报显示&#xff0c;逸仙电商Q1实现营收8.91亿元&#xff0c;超出了此前指引上限&#xff1b;实现净利润5070万元&…

从0构建神经网络(1)从感知机到神经网络

一、前言 深度学习中有许多框架&#xff0c;包括Tensorflow、PyTorch、Keras等&#xff0c;框架中实现了各种网络&#xff0c;并且可以自动求导&#xff0c;因此构建一个完整的网络只需要十几行代码。因为框架高度封装&#xff0c;因此我们无法知道底层的原理。为了更好地理解…

【PCIE体系结构十一】部分物理层发送接收逻辑细节

&#x1f449;个人主页&#xff1a;highman110 &#x1f449;作者简介&#xff1a;一名硬件工程师&#xff0c;持续学习&#xff0c;不断记录&#xff0c;保持思考&#xff0c;输出干货内容 参考书籍&#xff1a;《PCI.EXPRESS系统体系结构标准教材 Mindshare》 目录 物理层…

我麻了,那些年,为了进阿里背过的面试题......

前言 入职阿里相信是很多软件测试人的梦想&#xff0c;我一个阿里的朋友跟我聊天时说&#xff0c;他为了入职阿里背了好多面试题。我开始还不以为然&#xff0c;当他发给我看了之后&#xff0c;我麻了&#xff01; 不废话&#xff0c;分享给你们&#xff0c;希望对你们有帮助&…

中小型局域网

配置思路&#xff1a; 1、LSW1-LSW2做链路聚合并放通所有vlan,并做VRRP实现冗余备份 #链路聚合 [Huawei]sys LSW1 [LSW1]VLAN batch 20 30 40 60 70 80 [LSW1]DHCP enable [LSW1]ospf router-id 1.1.1.1 [LSW1-ospf-1]area 0 [LSW1]int Eth-Trunk 1 …

第3章 处理机调度与死锁

3.1 作业管理 3.1.1 作业的概念及分类 1&#xff0e;作业的概念 作业是用户在一 次事务处理过程中要求计算机系统所做工作的集合。 从系统的角度讲&#xff0c;作业是一个比较广泛的概念&#xff0c;它由程序、数据和作业说明书组成。 2&#xff0e;作业的分类 依据计…

redis集群+哨兵配置实操宝典

本地安装redis 配置集群和哨兵 1、下载安装redis #wget http://download.redis.io/releases/redis-5.0.12.tar.gz #下载安装包 #yum -y install gcc #安装依赖包 #tar -zxvf redis-5.0.12.tar.gz #cd redis-5.0.12 #make 2、主备配置 我们采用一主两备的结构 主机 192.168.3.…

AITM - 多任务模型之顺序依赖性建模(美团)

文章目录 1、动机与挑战&#xff08;信用卡业务广告&#xff09;2、信用卡用户整体架构&#xff1a;3、模型结构3.1、核心部分 Modeling the Sequential Dependence among Audience Multi-step Conversions with Multi-task Learning in Targeted Display Advertising 论文发表…

【Linux的基本指令】

目录 01.ls指令02.pwd指令03.cd指令04.touch指令05.mkdir指令06.rmdir指令 && rm 指令07.*通配符08.man指令09.cp指令10.mv指令11.cat指令13.more指令14.less指令15.head指令16.tail指令17.date指令18.Cal指令19.find指令20.grep指令21.zip/unzip指令22.tar指令23.bc指…

OpenCL编程指南-5.1工作项函数-整数函数-公共函数

工作项函数 应用程序使用clEnqueueNDRangeKernel和 clEnqueueTask API将OpenCL中的数据并行和任务并行内核排队。对于一个数据并行内核&#xff08;使用clEnqueueNDRangeKernel排队等待执行)&#xff0c;应用程序会指定全局工作大小&#xff0c;即可以并行执行这个内核的工作项…

PSP - AlphaFold2 中单链 MSA 特征的源码简读

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/130752004 AlphaFold2 是基于深度学习的方法,可以根据氨基酸序列,预测蛋白质的三维结构。在 2020 年的 CASP14 竞赛中,展示了惊人的准确性,达到了原子级别…

python读取linux系统的cpu以及内存占用

直接贴代码 import subprocessdef get_system_stats():# 通过 shell 命令获取 CPU 使用率和内存使用率cpu_command "top -bn1 | grep %Cpu(s) | awk {print $2}"memory_command "free | grep Mem | awk {print $3/$2 * 100.0}"# 执行命令并获取输出结果…

鸿蒙Hi3861学习十六-Huawei LiteOS-M(Socket服务端)

一、简介 具体概念可以参考上一章内容&#xff1a;鸿蒙Hi3861学习十五-Huawei LiteOS-M&#xff08;Socket客户端&#xff09;_t_guest的博客-CSDN博客 WIFI学习一&#xff08;socket介绍&#xff09;_wifi socket_t_guest的博客-CSDN博客 二、API介绍 bind 函数功能&#xff1…

pdf怎么转换成jpg图片?转换方式说明

将PDF转换为JPG图片是一种常见的文件格式转换操作&#xff0c;通常用于在不同设备上查看和共享PDF文档。但是&#xff0c;大多数情况下&#xff0c;将PDF转换为JPG图片可能并不总是可行或有效的。在本文中&#xff0c;我们将讨论为什么不能将PDF转换为JPG图片&#xff0c;以及如…

了解设备健康报表的关键指标与分析方法

在现代工业领域中&#xff0c;设备健康报表是一项关键工具&#xff0c;通过收集和分析设备的运行数据&#xff0c;它提供了关于设备状态和性能的重要指标。设备健康报表对于企业的设备管理和维护决策至关重要。本文将介绍设备健康报表的关键指标&#xff0c;并提供解读和分析方…