无监督学习——K均值聚类的Python实现

本文介绍了无监督学习中的K均值聚类算法,详细阐述了算法流程,并通过鸢尾花数据集展示了其实现过程。同时,文章利用手肘法确定K值,分析了不同K值对聚类效果的影响,最后给出了一个企业聚类的应用案例。
摘要由CSDN通过智能技术生成

目录

概要

一、K均值算法

二、K值的选取:手肘法

三、用聚类实现鸢尾花数据分类

四、应用案例

1. 读取数据

2. 绘制手肘图

3. 找到最佳K值

4. 分类结果可视化


机器学习类型和算法的分类

无监督学习的数据集中没有输出标签y,常用的无监督学习算法有聚类和降维。

概要

聚类人有归纳和总结的能力,机器也有。聚类就是让机器把数据集中的样本按照特征的性质分组,这个过程中没有标签的存在。

聚类和监督学习中的分类问题有些类似,其主要区别在于:传统分类问题也就是说,在对猫狗图像分类之前,我们心里面已经对猫、狗图像形成了概念。这些概念指导着我们为训练集设定好标签。机器首先是学习概念,然后才能够做分类、做判断。分类的结果,还要接受标签,也就是已有概念的检验。

而聚类不同,虽然本质上也是“分类”,但是“譬如,漫天繁星,彼此之间并没有关联,也 没有星座的概念,当人们看到它们,是先根据星星在广袤苍穹中的位置将其一组一组地“聚集"起来,然后才逐渐形成星座的概念。人们说,这一-组星星是“大熊座",那一组星星是“北斗七星”。这个先根据特征进行分组,之后再概念化的过程就是聚类。聚类算法有好几

好的,针对您的问题,我来为您解答。 首先,初始化一个4维向量可以使用Python的列表(list)来实现。例如,以下代码演示了如何创建一个包含4个0的向量: ``` vector = [0, 0, 0, 0] ``` 接下来,让我们来看一下如何使用K均值聚类算法实现对数据的聚类K均值聚类是一种常用的无监督学习算法,它通过将数据分成K个不同的簇来实现聚类。 以下是使用Python实现K均值聚类的示例代码: ```python import numpy as np # 定义K均值聚类算法 def kmeans(X, k, max_iters=100): # 随机初始化质心 centroids = X[np.random.choice(range(len(X)), k)] for i in range(max_iters): # 计算每个样本到质心的距离 distances = np.sqrt(((X - centroids[:, np.newaxis]) ** 2).sum(axis=2)) # 找到距离每个样本最近的质心 closest_centroids = np.argmin(distances, axis=0) # 重新计算质心 for j in range(k): centroids[j] = X[closest_centroids == j].mean(axis=0) return centroids, closest_centroids # 测试K均值聚类算法 X = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]) k = 2 centroids, closest_centroids = kmeans(X, k) print("质心:", centroids) print("每个样本所属的簇:", closest_centroids) ``` 在上述代码中,我们使用了NumPy库来进行数据处理和计算。首先,我们随机初始化了K个质心,然后循环执行以下步骤: 1. 计算每个样本到质心的距离。 2. 找到距离每个样本最近的质心。 3. 重新计算质心。 重复上述步骤,直到算法收敛或达到最大迭代次数。 最后,我们输出了计算出的质心和每个样本所属的簇。 希望上述代码能帮到您,如有疑问请随时提出。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dr.Petrichor

作者逐个题目分析的噢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值