返回顶部
首页 > 资讯 > 后端开发 > Python >python怎么实现K-means算法
  • 317
分享到

python怎么实现K-means算法

2023-06-01 23:06:15 317人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容介绍了“python怎么实现K-means算法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  K-means 聚类算法  特点  

本篇内容介绍了“python怎么实现K-means算法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

  K-means 聚类算法

  特点

  对初始化敏感。初始点选择的不同,可能会产生不同的聚类结果

  最终会收敛。不管初始点如何选择,最终都会收敛

  算法思想

  选择K个点作为初始质心

  repeat

  将每个点指派到最近的质心,形成K个簇

  重新计算每个簇的质心

  until 簇不发生变化或达到最大迭代次数

  代码实现

  实验目的

  根据下列成绩单,将5名同学成绩归为A类、B类、C类。

  限制:使用Kmeans算法实现,但不直接调用sklearn第三方库的KMeans函数。

  学生姓名  小测1  小测2  小测3  期末成绩  项目答辩  成绩

  张三  12  15  13  28  24  ?

  李四  7  11  10  19  21  ?

  王五  12  14  11  27  23  ?

  赵六  6  7  4  13  20  ?

  刘七  13  14  13  27  25  ?

  实验步骤

  1. 数据准备

  将数据储存为csv文件,格式如下

  学生姓名,小测1,小测2,小测3,期末成绩,项目答辩

  张三,12,15,13,28,24

  李四,7,11,10,19,21

  王五,12,14,11,27,23

  赵六,6,7,4,13,20

  刘七,13,14,13,27,25

  在从csv文件中读取数据,并选取可用的数据(排除姓名列)

  data = pd.read_csv('grade.csv')

  new_data = data.iloc[:, 1:].values

  2. KMeans算法实现

  KMeans算法涉及两点之间距离的计算,我们提前写好一个函数:输入两个点的坐标,返回两点之间的欧氏距离

  def eucliDist(A, B):

  return math.sqrt(sum([(a - b) ** 2 for (a, b) in zip(A, B)]))

  函数k_means(c,data,max,label)实现KMeans算法:

  a. 输入:质心列表c,待聚类数据data,最大迭代次数max,标签列表label

  b. 计算data中的每个点分别到3个质心的欧式距离,得到一个矩阵metrix

  metrix = [[eucliDist(a, b) for a in data] for b in c]

  c. 比较矩阵metrix同一列的数值大小,将对应的学生划归距离较短的质心所属的类,将标签存储为列表.

  classifier = []

  for (d, e, f) in zip(metrix[0], metrix[1], metrix[2]):

  m = min(d, e, f)

  if d == m:

  classifier.append(label[0])

  elif e == m:

  classifier.append(label[1])

  else:

  classifier.append(label[2])

  d. 重新计算质心的坐标,新质心的坐标=被划归同一类点的坐标的平均值

  n1, n2 = 0, 0

  c1 = [0, 0, 0, 0, 0]

  c2 = c1

  c3 = c1

  for i in range(0, num):

  if classifier[i] == label[0]:

  c1 = [a + b for (a, b) in zip(c1, data[i])]

  n1 = n1 + 1

  elif classifier[i] == label[1]:

  c2 = [a + b for (a, b) in zip(c2, data[i])]

  n2 = n2 + 1

  else:

  c3 = [a + b for (a, b) in zip(c3, data[i])]

  c1 = [a / n1 for a in c1]

  c2 = [a / n2 for a in c2]

  c3 = [a / (num - n1 - n2) for a in c3]

  e. 重复b~d,直到质心坐标不再变化或达到最大迭代次数

  f. 返回标签列表

  完整函数如下

  def k_means(c, data, max,label):

  # a. 输入质心列表c,待聚类数据`data`,最大迭代次数max

  max = max - 1

  num = len(data)

  # b. 计算data中的每个点分到k个质心的距离,得到一个矩阵,如

  metrix = [[eucliDist(a, b) for a in data] for b in c]

  print(metrix)

  # c. 比较矩阵同一列的数值大小,将对应的学生划归距离较短的质心所属的类,将标签存储为列表

  classifier = []郑州做人流手术费用 Http://4g.zyfuke.com/

  for (d, e, f) in zip(metrix[0], metrix[1], metrix[2]):

  m = min(d, e, f)

  if d == m:

  classifier.append(label[0])

  elif e == m:

  classifier.append(label[1])

  else:

  classifier.append(label[2])

  print(classifier)

  # d. 重新计算质心的坐标,新质心的坐标=被划归同一类点的坐标的平均值

  n1, n2 = 0, 0

  c1 = [0, 0, 0, 0, 0]

  c2 = c1

  c3 = c1

  for i in range(0, num):

  if classifier[i] == label[0]:

  c1 = [a + b for (a, b) in zip(c1, data[i])]

  n1 = n1 + 1

  elif classifier[i] == label[1]:

  c2 = [a + b for (a, b) in zip(c2, data[i])]

  n2 = n2 + 1

  else:

  c3 = [a + b for (a, b) in zip(c3, data[i])]

  c1 = [a / n1 for a in c1]

  c2 = [a / n2 for a in c2]

  c3 = [a / (num - n1 - n2) for a in c3]

  print(max)

  print([c1,c2,c3])

  # e. 重复b~d,直到质心坐标不再变化,或达到最大迭代次数

  if c != [c1, c2, c3] and max > 0:

  c = [c1, c2, c3]

  print(c)

  k_means(c, data, max, label)

  return classifier

  3. 设置参数,调用函数,得到结果

  设置初始质心、标签列表、最大迭代次数

  # 选择K个点作为初始质心

  c = [[12, 15, 13, 28, 24], [ 7, 11, 10, 19, 21],[12, 14, 11, 27, 23]]

  label = ['A', 'B', 'C']

  max = 20

  调用函数,整理结果

  grade = k_means(c, new_data, max, label)

  grade = pd.Series(grade, index=data['学生姓名'])

  print(grade)

  实验结果

  初始质心为[12, 15, 13, 28, 24], [ 7, 11, 10, 19, 21],[12, 14, 11, 27, 23]时,迭代2次即收敛,结果如下

  学生姓名  小测1  小测2  小测3  期末成绩  项目答辩  成绩

  张三  12  15  13  28  24  A

  李四  7  11  10  19  21  B

  王五  12  14  11  27  23  C

  赵六  6  7  4  13  20  B

  刘七  13  14  13  27  25  A

Python怎么实现K-means算法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: python怎么实现K-means算法

本文链接: https://lsjlt.com/news/228008.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python怎么实现K-means算法
    本篇内容介绍了“python怎么实现K-means算法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  K-means 聚类算法  特点  ...
    99+
    2023-06-01
  • python实现k-means算法
    聚类属于无监督学习,K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此...
    99+
    2024-04-02
  • Python实现聚类K-means算法
    本文内容、数据参考周志华《机器学习》,代码部分为个人实现,如有错误还请指出。 K-means(K均值)算法是最简单的一种聚类算法,它期望最小化平方误差 E ...
    99+
    2023-09-20
    聚类 算法 python
  • Python实现聚类K-means算法详解
    目录手动实现sklearn库中的KMeansK-means(K均值)算法是最简单的一种聚类算法,它期望最小化平方误差 注:为避免运行时间过长,通常设置一个最大运行轮数或最小调整幅度...
    99+
    2024-04-02
  • Python如何实现聚类K-means算法
    今天小编给大家分享一下Python如何实现聚类K-means算法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。K-means...
    99+
    2023-07-02
  • python中k-means和k-means++原理及实现
    目录前言k-means原理k-means++原理k-means及k-means++代码实现k-means实现k-means++实现参考文档前言 k-means算法是无监督的聚类算法,...
    99+
    2024-04-02
  • python中实现k-means聚类算法详解
    算法优缺点: 优点:容易实现 缺点:可能收敛到局部最小值,在大规模数据集上收敛较慢 使用数据类型:数值型数据 算法思想 k-means算法实际上就是通过计算不同样本间的距离来判断他们的相近关系的,相近的...
    99+
    2022-06-04
    算法 详解 python
  • python中k-means和k-means++原理是什么及怎么实现
    这篇文章主要介绍“python中k-means和k-means++原理是什么及怎么实现”,在日常操作中,相信很多人在python中k-means和k-means++原理是什么及怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作...
    99+
    2023-06-30
  • K-means算法怎么在Python中应用
    这篇文章将为大家详细讲解有关K-means算法怎么在Python中应用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动...
    99+
    2023-06-14
  • Python 中怎么实现一个k-means 均值聚类算法
    Python 中怎么实现一个k-means 均值聚类算法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。scikti-learn 将机器学习分为4个领域,分别是分...
    99+
    2023-06-02
  • 利用Python如何实现K-means聚类算法
    目录前言算法原理 目标函数 算法流程  Python实现 总结 前言 K-Means 是一种非常简单的聚类算法(聚类算法都属于无监督学习)。给定固定数量的聚类和输入数据集,...
    99+
    2024-04-02
  • K-MEANS聚类——Python实现
    一、概述 (1)物以类聚,人以群分,聚类分析是一种重要的多变量统计方法,但记住其实它是一种数据分析方法,不能进行统计推断的。当然,聚类分析主要应用在市场细分等领域,也经常采用聚类分析技术来实现对抽样框的分层。它和分类不同,它属于无监督问题。...
    99+
    2023-09-18
    聚类 python kmeans
  • 人工智能——K-Means聚类算法及Python实现
    目录1 概述1.1 无监督学习1.2 聚类1.3 K-Mean均值算法2 K-Mean均值算法 2.1 引入2.2 针对大样本集的改进算法:Mini Batch K-Mea...
    99+
    2024-04-02
  • 如何使用Python语言实现K-Means聚类算法
    这篇文章给大家分享的是有关如何使用Python语言实现K-Means聚类算法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1 概述1.1 无监督学习      在一个典型的监督学习中...
    99+
    2023-06-26
  • Python中K-means算法的示例分析
    这篇文章主要介绍了Python中K-means算法的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、步骤说明(1)确定K值(决定数据聚为几类,K值是K-Means算...
    99+
    2023-06-15
  • 利用python实现聚类分析K-means算法的详细过程
    K-means算法介绍   K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近...
    99+
    2024-04-02
  • python利用K-Means算法实现对数据的聚类案例详解
    目的是为了检测出采集数据中的异常值。所以很明确,这种情况下的簇为2:正常数据和异常数据两大类 1、安装相应的库 import matplotlib.pyplot as plt # 用于可视化 from skle...
    99+
    2022-06-02
    python K-Means算法聚类 python K-Means算法
  • K-means聚类算法介绍与利用python实现的代码示例
    聚类 今天说K-means聚类算法,但是必须要先理解聚类和分类的区别,很多业务人员在日常分析时候不是很严谨,混为一谈,其实二者有本质的区别。 分类其实是从特定的数据中挖掘模式,作出判断的过程。比如Gmail...
    99+
    2022-06-04
    示例 算法 代码
  • 一文读懂K-Means原理与Python实现
    目录 一、K-Means原理 1.聚类简介 ①分层聚类 ②质心聚类 ③其他聚类 2.K-means的原理 3.K-means的应用场景 二、K-Means的案例实战 1.数据查看 ①数据导入及结构查看 ②查看数据描述 2.数据可视化及预处...
    99+
    2023-10-09
    kmeans 机器学习 python 人工智能 sklearn
  • K-Means聚类算法及其python实现(已附上代码至本博客)
    目录 一、算法公式讲解二、算法流程三、算法实现代码四、代码结果分析五、K-Means库函数六、K-Means算法时间复杂度 一、算法公式讲解 对于 n代表了x有n维,x上标j表示第j维的特...
    99+
    2023-10-27
    聚类 算法 kmeans
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作