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

news2024/11/17 15:35:50

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

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

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

相关文章

Linux page migration源码分析

目录 概述 __unmap_and_move函数 step1: Lock the page to be migrated step2: Insure that writeback is complete. step3: Lock the new page that we want to move to. step4: All the page table references to the page are converted to migration entries. st…

Python学习笔记:正则表达式、逻辑运算符、lamda、二叉树遍历规则、类的判断

1.正则表达式如何写? 序号实例说明1.匹配任何字符(除换行符以外)2\d等效于[0-9],匹配数字3\D等效于[^0-9],匹配非数字4\s等效于[\t\r\n\f],匹配空格字符5\S等效于[^\t\r\n\f],匹配非空格字符6\w等效于[A-Za-z0-9]&…

推荐系统峰会:图与推荐系统

文章目录 图机器学习在京东视频召回中的应用提纲背景图召回架构图业务特色图召回总结 图算法在蚂蚁集团营销推荐场景的应用目录背景基金推荐长尾推荐 图模型在百度推荐系统的实践与思考目录图背景介绍常用算法Feed流图模型演进历程 GNN跨域推荐在微信业务上的应用目录GNN跨域遇…

Linux操作系统--常用指令(文件权限操作类)

(1).文件属性 Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。 为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在Linux中我们可以使用ll或者ls -l命令来显示一个文件的属性以及文件所属的用…

【Git】在idea中多分支开发如何——合并分支、处理冲突

博主简介:22级计算机科学与技术本科生一枚🌸博主主页:是瑶瑶子啦每日一言🌼: “人间总有一两风,填我十万八千梦” 目录 一、背景二、具体操作 一、背景 我当前开发的分支——hfy我想将subject分支的最新代码拉取&…

最新Nmap入门技术

点击星标,即时接收最新推文 本文选自《web安全攻防渗透测试实战指南(第2版)》 点击图片五折购书 Nmap详解 Nmap(Network Mapper,网络映射器)是一款开放源代码的网络探测和安全审核工具。它被设计用来快速扫…

如何卸载mysql?windows版

查看电脑是否安装过mysql: cmd输入:mysql -V 卸载第一步: 停止Mysql服务:winR 打开运行,输入 services.msc 点击"确定"调出系统服务。 这个进程名为安装MySQL的进程名,是可以更改的,默认为MySQL80 打开控制…

独家采访WizardLM团队,详解WizardCoder/Math超越GPT4/ChatGPT的RLEIF算法

最新消息! 在Meta AI发布Code Llama后仅两天的时间,WizardLM 团队基于该模型及其最新的对齐算法训练的WizardCoder-Python 34B V1.0在权威代码生成评测榜单HumanEval上即达到了惊人的 73.2% pass1分值,同时超越了Claude-2(71.2%&…

python-下载数据-制作全球地震散点图:JSON格式

查看JSON数据 import json# 探索数据的结构 filename eq_data_1_day_m1.geojson with open(filename) as f:all_eq_data json.load(f)readable_file readable_eq_data.json with open(readable_file, w) as f:json.dump(all_eq_data, f, indent4)json.load() 将数据转换为P…

ExpressLRS开源之接收机固件编译烧录步骤

ExpressLRS开源之接收机固件编译烧录步骤 1. 源由2. 编译步骤2.1 推荐源代码指定方案2.2 方法一:ELRS Configurator步骤一:下载ELRS Configurator工具步骤二:安装ELRS Configurator工具步骤三:使用ELRS Configurator工具进行配置步…

快速启动 - 一键启动您的目标应用

《快速启动》- 快速管理,便捷控制 作为一款管理类应用,《快速启动》拥有简洁且实用的分类功能。它能将你的应用归类,让你轻松找到所需。无论是工具类、娱乐类还是社交类应用,《快速启动》都能让你的手机变得井井有条。 与普通管理…

学霸有特权

导读 同时保有两种截然相反的观念还能正常行事,这是第一流智慧的标志 -- 菲茨杰拉德 周末愉快。 1. 有一次在西湖公园门口等着接娃,凑上来一位并不面善的大汉,低声问我:兄弟你有没兴趣了解下"我主"。 我:可以…

LeetCode--HOT100题(43)

目录 题目描述:98. 验证二叉搜索树(中等)题目接口解题思路代码 PS: 题目描述:98. 验证二叉搜索树(中等) 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定…

软件测评单位需要哪些资质?

软件测评资质 在进行软件测试或其他项目检测需要选择软件测评公司时,我们常常会把该公司有无资质认证考虑进去。那么软件测评公司在为企业出软件测试报告过程中,需要有什么资质才是合法合规的? 软件测评公司需要什么资质? 国内第…

用 PHP 和 JavaScript 显示地球卫星照片

向日葵 8 号气象卫星是日本宇宙航空研究开发机构设计制造的向日葵系列卫星之一,重约 3500 公斤,设计寿命 15 年以上。该卫星于 2014 年 10 月 7 日由 H2A 火箭搭载发射成功,主要用于监测暴雨云团、台风动向以及持续喷发活动的火山等防灾领域。…

基于微信小程序中小学生练字书法家校联合系统

对于一些学生和书法爱好者来说,需要时时刻刻了解,自己及自己所喜欢的书法的相关信息,书法作业的相关事宜,学生作业的相关信息,比如查询教学进度、书法作业等这样才能更好的推动我国的书法事业发展,为此今后有必要对书法…

【硬件设计】硬件学习笔记一--元器件的介绍与选型

硬件学习笔记一--元器件的选型 一、电阻1.1 电阻的分类1.2 电阻的选型 二、电容2.1 陶瓷电容2.2 钽电容2.3 铝电解电容2.4 电容选型 三、电感3.1 定义与介绍3.2 电感的分类3.3 电感的参数 四、磁珠4.1 磁珠的介绍4.2 磁珠的参数 五、二极管5.1 定义5.2 稳压管5.3 肖特基二极管5…

心法利器[97] | 判断问题是否真的需要大模型来解决

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。 2022年新一版的文章合集已经发布,累计已经60w字了,获取方式看这里&…

微服务系统面经之二: 以秒杀系统为例

16 微服务与集群部署 16.1 一个微服务一般会采用集群部署吗? 对于一个微服务是否采用集群部署,这完全取决于具体的业务需求和系统规模。如果一个微服务的访问压力较大,或者需要提供高可用性,那么采用集群部署是一种常见的策略。…

社区供稿 | FaceChain 开源项目原理解析

一、背景说明 各类 AI 写真软件由于其精准的个人形象精美的生成效果引爆了朋友圈传播,证件照满足了用户刚需,古装照等风格照满足了用户“美照”的需求。 FaceChain 是一个可以用来打造个人数字形象的深度学习模型工具。用户仅需要提供最低三张照片即可获…