无涯教程-聚类算法 - K-Means

K-均值聚类算法计算质心并进行迭代,直到找到最佳质心为止,它假定群集的数目是已知的,它也称为扁平聚类算法。通过算法从数据中识别出的簇数以K均值中的" K"表示。

在该算法中,将数据点分配给群集,以使数据点和质心之间的平方距离之和最小。应当理解,簇内的较少变化将导致相同簇内的更多相似数据点。

K均值算法

无涯教程可以通过以下步骤来了解K-Means聚类算法的工作原理-

第1步   - 首先,需要指定需要由该算法生成的簇数K。

第2步   - 接下来,随机选择K个数据点并将每个数据点分配给一个群集,简单来说,就是根据数据点的数量对数据进行分类。

第3步   - 现在,它将计算聚类质心。

第4步   - 接下来,继续迭代以下步骤,直到找到最佳质心为止,这是将数据点分配给不再变化的群集的情况

  •       4.1 - 首先,将计算数据点和形心之间的平方距离之和。

  •       4.2 - 现在,必须将每个数据点分配给比其他群集(质心)更近的群集。

  •       4.3 - 最后,通过获取聚类的所有数据点的平均值来计算聚类的质心。

K均值遵循期望最大化方法来解决此问题,期望步骤用于将数据点分配给最近的群集,而最大化步骤用于计算每个群集的质心。

使用K-means算法时,需要注意以下事项-

  • 在使用包含K-Means的聚类算法时,建议对数据进行标准化,因为此类算法使用基于距离的测量来确定数据点之间的相似性。

  • 由于K-Means的迭代性质和质心的随机初始化,K-Means可能停留在局部最优中,而可能不会收敛于全局最优。因此建议使用不同的质心初始化。

代码实现

以下两个实施K-Means聚类算法的示例将帮助无涯教程更好地理解-

K-Means示例1

这是了解k均值如何工作的简单示例。在此示例中,将首先生成包含4个不同Blob的2D数据集,然后将应用k-means算法查看输出。

首先,将从导入必要的包开始-

%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
import numpy as np
from sklearn.cluster import KMeans

以下代码将生成2D,其中包含四个Blob-

from sklearn.datasets.samples_generator import make_blobs
X, y_true=make_blobs(n_samples=400, centers=4, cluster_std=0.60, random_state=0)

接下来,以下代码将帮助可视化数据集-

plt.scatter(X[:, 0], X[:, 1], s=20);
plt.show()
K-Mean 用Python实现

接下来,使KMeans为对象,并提供聚类数量,训练模型并按以下方式进行预测-

kmeans=KMeans(n_clusters=4)
kmeans.fit(X)
y_kmeans=kmeans.predict(X)

现在,借助以下代码,可以绘制和可视化由k-means Python估计器选择的群集中心-

from sklearn.datasets.samples_generator import make_blobs
X, y_true=make_blobs(n_samples=400, centers=4, cluster_std=0.60, random_state=0)

接下来,以下代码将帮助可视化数据集-

plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=20, cmap=summer)
centers=kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c=blue, s=100, alpha=0.9);
plt.show()
K-Means Python Estimator

K-Means示例2

让无涯教程转到另一个示例,在该示例中,将对简单数字数据集应用K均值聚类, K-means将尝试在不使用原始标签信息的情况下识别相似的数字。

首先,将从导入必要的包开始-

%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
import numpy as np
from sklearn.cluster import KMeans

接下来,从sklearn加载数字数据集并使其成为对象。还可以在此数据集中找到行数和列数,如下所示:

from sklearn.datasets import load_digits
digits=load_digits()
digits.data.shape
(1797, 64)

上面的输出显示此数据集包含1797个具有64个特征的样本。

可以像上面的示例1一样执行聚类-

kmeans=KMeans(n_clusters=10, random_state=0)
clusters=kmeans.fit_predict(digits.data)
kmeans.cluster_centers_.shape
(10, 64)

上面的输出显示K-means创建了具有64个特征的10个聚类。

fig, ax=plt.subplots(2, 5, figsize=(8, 3))
centers=kmeans.cluster_centers_.reshape(10, 8, 8)
for axi, center in zip(ax.flat, centers):
axi.set(xticks=[], yticks=[])
axi.imshow(center, interpolation=nearest, cmap=plt.cm.binary)

作为输出,将获得以下图像,该图像显示了通过k均值学习的聚类中心。

Simple Digits Dataset

以下代码行将学习到的集群标签与在其中找到的真实标签匹配:

from scipy.stats import mode
labels = np.zeros_like(clusters)
for i in range(10):
   mask = (clusters == i)
   labels[mask] = mode(digits.target[mask])[0]

接下来,无涯教程可以检查准确性,如下所示:

from sklearn.metrics import accuracy_score
accuracy_score(digits.target, labels)
0.7935447968836951

上面的输出显示精度约为80%。

聚类算法 - K-Means - 无涯教程网无涯教程网提供K-均值聚类算法计算质心并进行迭代,直到找到最佳质心为止,它假定群集的数目是已知的...https://www.learnfk.com/python-machine-learning/machine-learning-with-python-clustering-algorithms-k-means.html

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

五、Kafka消费者

目录 5.1 Kafka的消费方式5.2 Kafka 消费者工作流程1、总体流程2、消费者组原理3、消费者组初始化流程4、消费者组详细消费流程 5.3 消费者API1 独立消费者案例(订阅主题)2 独立消费者案例(订阅分区)3 消费者组案例 5.4 生产经验—…

Anolis 8.6 下 Redis 7.2.0 集群搭建和配置

Redis 7.2.0 搭建和集群配置 一.Redis 下载与单机部署1.Redis 下载2.虚拟机配置3.Redis 单机源码安装和测试4.Java 单机连接测试1.Pom 依赖2.配置文件3.启动类4.配置类5.单元测试6.测试结果 二.Redis 集群部署1.主从1.从节点配置2.Java 测试 2.哨兵1.哨兵节点配置2.复制一个哨兵…

eslint

什么是eslint ESLint 是一个根据方案识别并报告 ECMAScript/JavaScript 代码问题的工具,其目的是使代码风格更加一致并避免错误。 安装eslint npm init eslint/config执行后会有很多选项,按照自己的需求去选择就好,运行成功后会生成 .esli…

linux创建进程

linux创建进程 准备工作 准备工作 在Ubuntu64系统上 1、安装GCC和Make工具 编译器GCC:把C源码转为二进制程序 Make:自动编译多源文件项目 sudo apt-get update #更新存储库 sudo apt-get install build-essential #安装build-essential包 gcc --versio…

前端 js实现 选中数据 动态 添加在表格中

如下图展示,表格上方有属性内容,下拉选中后,根据选中的内容,添加在下方的表格中。 实现方式,(要和后端约定,因为这些动态添加的字段都是后端返回的,后端自己会做处理&#xff0c…

〔019〕Stable Diffusion 之 单图中绘制多人分区域写提示词 篇

✨ 目录 🎈 下载区域绘制插件🎈 区域绘制使用🎈 参数讲解和基础使用🎈 Lora 自组🎈 Lora 自组的使用🎈 分区扩散🎈 分区域提示 🎈 下载区域绘制插件 在绘制图片时,经常绘…

【数据结构】带头双向循环链表---C语言版(单链表我们分手吧,不要再找我玩了!!!)

文章目录 🐸一、前言🐸二、链表的分类🍄1. 单向或者双向链表🍄2. 带头或者不带头链表🍄3. 循环或者非循环🍄4. 最常用链表 🐸三、带头双向循环链表详解🍎创建带头双向循环链表⭕接口…

只考一门数据结构,计算机学硕复录比1:1的山东双非学校考情分析

青岛理工大学 考研难度(☆) 内容:23考情概况(拟录取和复试分析)、院校概况、23专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文1420字,预计阅读:3分钟 2023考情概况 青岛理工…

CI/CD 持续集成 持续交付

CI(Continuous integration)持续集成 参考:https://www.jianshu.com/p/2132949ff84a 持续集成是指多名开发者在开发不同功能代码的过程当中,可以频繁的将代码行合并到一起并切相互不影响工作。 持续集成的目的,是让…

ATF(TF-A)安全通告 TFV-2 (CVE-2017-7564)

安全之安全(security)博客目录导读 ATF(TF-A)安全通告汇总 目录 一、ATF(TF-A)安全通告 TFV-2 (CVE-2017-7564) 二、 CVE-2017-7564 一、ATF(TF-A)安全通告 TFV-2 (CVE-2017-7564) Title 启用安全自托管侵入式调试接口,可允许非安全世界引发安全世界panic CV…

SpringCloud学习笔记(十二)_Zipkin全链路监控

Zipkin是SpringCloud官方推荐的一款分布式链路监控的组件,使用它我们可以得知每一个请求所经过的节点以及耗时等信息,并且它对代码无任何侵入,我们先来看一下Zipkin给我们提供的UI界面都是提供了哪些信息。 如何使用Zipkin 虽然在SpringBoot…

C语言练习题解析:挑战与突破,开启编程新篇章!(2)

💓博客主页:江池俊的博客⏩收录专栏:C语言刷题专栏👉专栏推荐:✅C语言初阶之路 ✅C语言进阶之路💻代码仓库:江池俊的代码仓库🎉欢迎大家点赞👍评论📝收藏⭐ 文…

phpstorm动态调试

首先在phpstudy搭建好网站,在管理拓展开启xdebug拓展 查看php.ini配置已经更改 需要增添修改一下设置 [Xdebug] zend_extensionD:/phpstudy_pro/Extensions/php/php5.6.9nts/ext/php_xdebug.dll xdebug.collect_params1 xdebug.collect_return1 xdebug.auto_trace…

【大数据】Doris:基于 MPP 架构的高性能实时分析型数据库

Doris:基于 MPP 架构的高性能实时分析型数据库 1.Doris 介绍 Apache Doris 是一个基于 MPP(Massively Parallel Processing,大规模并行处理)架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知&#xff…

IP协议分片重组问题

分片是什么&&为什么会有分片 IP数据报分片的主要目的是为了防止IP数据报文长度超过下一跳链路MTU(最大传输单元)。 数据链路层之MTU 数据链路层中有一个东西叫做MTU(最大传输单元),它的作用主要是控制上层给的数据报不要太大&#…

C语言网络编程:实现自己的高性能网络框架

一般生产环境中最耗时的其实是业务逻辑处理。所以,是不是可以将处理业务逻辑的代码给拆出来丢到线程池中去执行。 比如像下面这样: ​我们事先创建好一堆worker线程,主线程accepter拿到一个连接上来的套接字,就从线程池中取出一个…

Docker harbor 私有仓库的部署和管理

目录 一、什么是Harbor 二、Harbor的特性 三、Harbor的构成 四、部署配置Docker Harbor 1. 首先需要安装 Docker-Compose 服务 2.部署 Harbor 服务 3.使用harbor仓库 (1)项目管理 (2)用户管理 一、什么是Harbor Harbor …

2023高教社杯数学建模思路 - 复盘:校园消费行为分析

文章目录 0 赛题思路1 赛题背景2 分析目标3 数据说明4 数据预处理5 数据分析5.1 食堂就餐行为分析5.2 学生消费行为分析 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 赛题背景 校园一卡通是集…

使用rem + sass + 媒体查询 进行横竖屏适配移动端项目

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、 媒体查询(Media Query)1.简单了解2.简单例子3. 语法(1)媒体类型(mediatype )&#xff0…

【USRP】调制解调系列3:2FSK、4FSK、8FSK,基于labview的实现

2FSK、4FSK、8FSK FSK(Frequency-shift keying)是信息传输中使用得较早的一种调制方式,它的主要优点是: 实现起来较容易,抗噪声与抗衰减的性能较好。在中低速数据传输中得到了广泛的应用。最常见的是用两个频率承载二进制1和0的双频FSK系统。 FSK 信号…