组合已实现的函数完成K-means算法

本关任务

本关综合前面四个关卡的内容来实现K-means聚类算法。

相关说明

K-means是一类非常经典的无监督机器学习算法,通常在实际应用中用于从数据集中找出不同样本的聚集模式,其基本原理就是类中样本的距离要远远小于类间样本的距离。

K-means聚类算法的流程如下: 首先从数据集x1​,x2​,x3​,…,xn​中随机选择k个样本作为簇中心C=(C1​,C2​,…,Ck​)。 然后,进入T轮迭代,在每个迭代中执行以下两个步骤。

一、对于每个样本 xi​,计算距离其最近的簇中心yˉ​i​=argmini​ dist(xi​,Cj​)

二、对于每一个簇j,重新计算其簇中心

yˉ​j​=∑i​I(yˉ​i​=j)∑i​I(yˉ​i​=j)xi​​

其含义实际上就是对于每一个簇j,计算分配在其中的样本向量的平均值。

编程任务

本关卡要求你完整如下代码块中星号圈出来的区域,实现K-means的核心算法步骤:

 
  1. # -*- coding: utf-8 -*-
  2. import numpy as np
  3. import pandas as pd
  4. from distance import euclid_distance
  5. from estimate import estimate_centers
  6. from loss import acc
  7. from near import nearest_cluster_center
  8. #随机种子对聚类的效果会有影响,为了便于测试,固定随机数种子
  9. np.random.seed(5)
  10. #读入数据集
  11. dataset = pd.read_csv('./data/iris.csv')
  12. #取得样本特征矩阵
  13. X = dataset[['150','4','setosa','versicolor']].as_matrix()
  14. y = np.array(dataset['virginica'])
  15. #读入数据
  16. n_clusters, n_iteration = input().split(',')
  17. n_clusters = int(n_clusters)#聚类中心个数
  18. n_iteration = int(n_iteration)#迭代次数
  19. #随机选择若干点作为聚类中心
  20. point_index_lst = np.arange(len(y))
  21. np.random.shuffle(point_index_lst)
  22. cluster_centers = X[point_index_lst[:n_clusters]]
  23. #开始算法流程
  24. y_estimated = np.zeros(len(y))
  25. # 请在此添加实现代码 #
  26. #********** Begin *********#
  27. #********** End ***********#
  28. print('%.3f' % acc(y_estimated, y))

代码:

# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
from distance import euclid_distance
from estimate import estimate_centers
from loss import acc
from near import nearest_cluster_center
#随机种子对聚类的效果会有影响,为了便于测试,固定随机数种子
np.random.seed(5)
#读入数据集
dataset = pd.read_csv('./data/iris.csv')
#取得样本特征矩阵
X = dataset[['150','4','setosa','versicolor']].as_matrix()
y = np.array(dataset['virginica'])
#读入数据
n_clusters, n_iteration = input().split(',')
n_clusters = int(n_clusters)#聚类中心个数
n_iteration = int(n_iteration)#迭代次数
#随机选择若干点作为聚类中心
point_index_lst = np.arange(len(y))
np.random.shuffle(point_index_lst)
cluster_centers = X[point_index_lst[:n_clusters]]
#开始算法流程
y_estimated = np.zeros(len(y))
#   请在此添加实现代码     #
#********** Begin *********#
for iter in range(n_iteration):for xx_index in range(len(X)):#计算各个点最接近的聚类中心y_estimated[xx_index] = nearest_cluster_center(X[xx_index], cluster_centers)#计算各个聚类中心cluster_centers = estimate_centers(X, y_estimated, n_clusters)
#********** End ***********#
print('%.3f' % acc(y_estimated, y))

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

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

相关文章

减调食谱攻略:美味低卡又健康

早餐主要求质,也就是求营养,更确切的说是“均衡的营养,多重的营养元素”确保每天早餐不重样就差不多了。 早餐主食:蛋羹、糖心水煮蛋,皮蛋瘦肉粥、南瓜粥、小米粥,蒸煮玉米、南瓜、芋头、红薯,…

【Linux】The server quit without updating PID file的几种解决方案

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 🤓 同时欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深…

Java使用XWPFTemplate将word填充数据,并转pdf

poi-tl poi-tl&#xff08;poi template language&#xff09;是基于Apache POI的Word模板引擎。纯Java组件&#xff0c;跨平台&#xff0c;代码短小精悍&#xff0c;通过插件机制使其具有高度扩展性。 主要处理区域有这么几个模块: 依赖 <dependency><groupId>…

树算法例子

树算法概述 树(Tree)是一种重要的数据结构,在许多算法中都有广泛的应用。 二叉树和红黑树是两种重要的数据结构,广泛应用于提供高效的数据查询和操作。下面,我将给出二叉搜索树(BST)和红黑树(RB Tree)的基本实现: 1. 二叉搜索树 (Binary Search Tree, BST) 二叉搜…

服务器硬件基础知识及运行维护指南

目录 服务器硬件基础知识 1. 中央处理器&#xff08;CPU&#xff09; 2. 内存&#xff08;RAM&#xff09; 3. 存储设备 4. 主板&#xff08;Motherboard&#xff09; 5. 电源供应器&#xff08;PSU&#xff09; 6. 网络接口卡&#xff08;NIC&#xff09; 7. 冷却系统 …

记忆++入门01

1.数字编码 2. 地点桩 1. 卧室 2.婴儿房 3.卫生间 4.次卧 5.书房 6.厨房 7.餐厅 8.客厅 9.阳台左 10.阳台右

Springboot引入redis启动报错问题的解决

在springboot项目pom文件中添加了下面依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 后面老师说spring-boot-starter-data-redis默认使用的let…

深度学习每周学习总结P10(车牌识别)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 数据链接 提取码&#xff1a;ppv1 –来自百度网盘超级会员V5的分享 目录 0. 总结1. 数据导入、查看数据分类&#xff0c;自定义transform…

2024全国高考作文题解读(Chat GPT 4.0版本)

新课标I卷 阅读下面的材料&#xff0c;根据要求写作。&#xff08;60分&#xff09; 随着互联网的普及、人工智能的应用&#xff0c;越来越多的问题能很快得到答案。那么&#xff0c;我们的问题是否会越来越少&#xff1f; 以上材料引发了你怎样的联想和思考&#xff1f;请写…

【TB作品】MSP430G2553单片机,MSP430 单片机读取 SHT30 传感器并显示数据

使用 MSP430 单片机读取 SHT30 传感器并显示数据 作品功能 本文介绍了如何使用 MSP430 单片机读取 SHT30 温湿度传感器的数据&#xff0c;并通过 OLED 屏幕显示实时的温度和湿度信息。通过此项目&#xff0c;您将学习如何配置 MSP430 的 I2C 接口、读取 SHT30 传感器的数据以…

高考志愿填报有哪些技巧和方法

一年一度高考季&#xff0c;又高考志愿填报的时侯了。高考志愿填报的时侯&#xff0c;需要考虑的因素比较多&#xff0c;有的同学觉是离家越远越好&#xff0c;要放飞自我&#xff0c;家长再也管不了我了。有的同学觉得专业比学校牌子重要&#xff0c;只要报个好专业&#xff0…

Nvidia/算能 +FPGA+AI大算力边缘计算盒子:大型机械智能预警系统

三一重工股份有限公司&#xff0c;是由三一集团创建于1994年&#xff0c;通过打破国人传统的“技术恐惧症”坚持自主创新迅速崛起。2011年7月&#xff0c;三一重工以215.84亿美元的市值荣登英国《金融时报》全球市值500强&#xff0c;是迄今唯一上榜的中国机械企业。2012年1月&…

centos7如何备份

在CentOS 7中备份数据是一个重要的任务&#xff0c;可以帮助你在数据丢失或系统故障时恢复信息。以下是一些常用的备份方法&#xff1a; 1. 使用​​rsync​​工具备份 ​​rsync​​是Linux系统中常用的备份工具&#xff0c;它可以备份和同步文件到本地目录、外部硬盘或者通…

AI和机器人引领新一轮农业革命

AI和机器人技术在农业领域的应用正在迅速发展&#xff0c;未来它们可能会实现厘米级精度的自主耕作。 精确种植&#xff1a;AI算法可以分析土壤条件、气候数据和作物生长周期&#xff0c;以决定最佳种植地点和时间。 土壤管理&#xff1a;利用传感器和机器学习&#xff0c;机器…

Android Webview 详解

一 简介 一个基于webkit引擎、展现web页面的控件 Android 4.4前&#xff1a;Android Webview在低版本 & 高版本采用了不同的webkit版本的内核Android 4.4后&#xff1a;直接使用了Chrome内核 1.1 作用 在 Android 客户端上加载h5页面在本地 与 h5页面实现交互 & …

Mybatis配置

1. 核心配置文件 mybatis-config.xml 2. 环境配置 Mybatis可以配置适应多种环境 但每个SqlSessionFactory实例只能选择一种环境 Environment <environments default"development"><environment id"development"><transactionManager type&…

为Android组件化项目搭建Maven私服

概览 文章目录 概览前言搭建 maven 私服服务器环境jdk安装配置nexus安装配置管理创建存储点、仓库 项目中使用 maven 私服上传 module 到仓库自动发布 module手动上传单个aar包 引用仓库中的 modulebuild.gradle引入远程module FAQ开发阶段有些module用远程依赖&#xff0c;有些…

20240607在ubuntu下解压缩7z的压缩包文件

20240607在ubuntu下解压缩7z的压缩包文件 2024/6/7 10:26 百度&#xff1a;ubuntu 7z解压缩 在Ubuntu中&#xff0c;可以使用7z命令来解压.7z文件。首先&#xff0c;确保你已经安装了p7zip-full包&#xff0c;如果没有安装&#xff0c;可以使用以下命令安装&#xff1a; sudo …

input输入框设置样式

input清除自带样式 input, textarea,label, button,select,img,form,table,a{-webkit-tap-highlight-color: rgba(255,255,255,0);-webkit-tap-highlight-color: transparent;margin: 0;padding: 0;border: none; } /*去除iPhone中默认的input样式*/ input, button, select, t…

pytorch 使用tensor混合:进行index操作

(Pdb) tmp torch.randn(3,5) (Pdb) indx torch.tensor([1,0]).long() (Pdb) temp(indx) *** NameError: name ‘temp’ is not defined (Pdb) tmp(indx) *** TypeError: ‘Tensor’ object is not callable (Pdb) tmp[indx] tensor([[ 0.1633, 0.9389, 1.2806, -0.2525, 0.28…