k-means 聚类算法与Python实现代码

下面是详细讲解“k-means聚类算法与Python实现代码”的完整攻略。

k-means聚类算法

k-means聚类算法是一种常用的无监督学算法,用于将点分成k个簇。该算法的核心思想是最小化数据点与簇中心之间的距离来最佳簇中,从而将数据点分成k个簇。

下面是k-means聚类算法的Python实现代码:

import numpy np

def kmeans(X, k, max_iter=100):
    n, m = X.shape
    centers = X[np.random.choice(n, k, replace=False)]
    for i in range(max_iter):
 clusters = [[] for _ in range(k)]
        for x in X:
            distances = np.linalg.norm(x - centers, axis=1)
            cluster = np.argmin(distances)
            clusters[cluster].append(x)
        new_centers = np.array([np.mean(cluster, axis=0) for cluster in clusters])
        if np.allclose(centers, new_centers):
            break
        centers = new_centers
    return centers, clusters

上述代码中,首先导入了numpy库,用于进行数值计算。

然后,定义了一个kmeans函数,函数接受一个数据矩阵X、簇的数量k和最大迭代次数max_iter,返回簇中心和簇的列表。

接着,初始化变量n和m,分别表示数据矩阵X的行数和列数。

然后,随机选择k个数据点作为初始簇中心。

接着,使用循环迭代max_iter次,将数据点分配到最近的簇中心,并计算新的簇中心。

然后,如果新的簇中与旧的簇中心非常接近,则退出循环。

最后,返回簇中心和簇的列表。

示例

下面是一个使用k-means聚类算法将数据点分成两个簇的Python示例:

import matplotlib.pyplot as

X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]])
k = 2

centers, clusters = kmeans(X, k)

for i, cluster in enumerate(clusters):
    cluster = np.array(cluster)
    plt.scatter(cluster[:, 0], cluster[:, 1], label=f'Cluster {i+1}')
plt.scatter(centers[:, 0], centers[:, 1], marker='x', color='black', label='Centers')
plt.legend()
plt.show()

上述代码中,首先导入了matplotlib库,用于绘制图形。

然后,定义了一个数据矩阵X和簇的数量k。

接着,调用kmeans函数将数据点分成k个簇,并返回中心和簇的列表。

然后,使用for循环遍历簇的列表,使用scatter函数绘制每个簇的数据点。

接着,使用scatter函数绘制簇中心。

最后,使用legend函数显示图例,使用show函数显示图形。

下面是一个使用k-means聚类算法将数据点分成三个簇的Python例:

import matplotlib.pyplot as plt

X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]])
k = 3

centers, clusters = kmeans(X, k)

for i, cluster in enumerate(clusters):
    cluster = np.array(cluster)
    plt.scatter(cluster[:, 0], cluster[:, 1], label=f'Cluster {i+1}')
plt.scatter(centers[:, 0], centers[:, 1], marker='x', color='black', label='Centers')
plt.legend()
plt.show()

上述代码中,首先导入了matplotlib库,用于绘制图形。

然后,定义了一个数据矩阵X和簇的数量k。

接着,调用kmeans函数将数据点分成k个,并返回簇中心和簇的列表。

然后,使用for循环遍历簇的列表,使用scatter函数绘制每个簇的数据点。

接着,使用scatter函数绘制簇中心。

最后,使用legend函数显示图例,使用show函数显示图形。

总结

k-means聚类法是一种常用的无监督学习算法,用于将数据点分成k个簇。Python中可以使用numpy库中的linalg.norm函数计算数据点与簇中心之间的距离,使用numpy库中的mean函数计算新的簇中心。在实现过程中,需要随机选择k个数据点作为初始簇中心,使用for循环迭代max_iter,将数据点分配到最近的簇中心,并计算新的簇中心。最后,使用matplotlib库绘制数据点和簇中心的点图。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:k-means 聚类算法与Python实现代码 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • Python中矩阵创建和矩阵运算方法

    Python中矩阵的创建和矩阵运算方法是很重要的基础知识。本文将为你详细介绍Python中如何创建矩阵和进行矩阵运算。 创建矩阵 从列表中创建矩阵 我们可以使用Python内置的 list 类型来创建矩阵。下面是一个创建 $2 \times 2$ 的矩阵的示例代码: matrix = [[1, 2], [3, 4]] 上面代码中,我们定义了一个名为 matr…

    python 2023年6月3日
    00
  • python标准库OS模块函数列表与实例全解

    下面就为大家介绍一下“Python标准库OS模块函数列表与实例全解”的攻略。 1. OS模块简介 OS模块是Python语言中的一个标准库,它提供了许多与操作系统交互的函数。使用OS模块可以实现操作文件和目录、进程管理、网络通信等功能。本攻略主要介绍OS模块的函数列表和实例。 2. OS模块函数列表 2.1 文件和目录操作 os.chdir(path):改变…

    python 2023年5月30日
    00
  • python实现微信小程序用户登录、模板推送

    Python实现微信小程序用户登录、模板推送攻略 微信小程序是一种新型的应用程序,目前已经有越来越多的开发者开始使用它。本文将会介绍如何使用Python实现微信小程序用户登录和模板推送,并提供两个示例以便更好地理解。 用户登录 微信小程序的用户登录是通过微信登录接口API实现的,我们需要在自己的小程序中获取到用户的openid并将其存储在自己的服务器上。 我…

    python 2023年5月23日
    00
  • python 从list中随机取值的方法

    在Python中,我们可以使用random模块中的choice()函数来从列表中随机取值。choice()函数接受一个列表作为参数,并返回该列表中的一个随机素。下面是使用choice()函数列表中随机取值的示例: import random my_list = [1, 2, 3, 4, 5] # 从列表随机取值 random_value = random.c…

    python 2023年5月12日
    00
  • Python操作Mysql实例代码教程在线版(查询手册)

    下面我来详细讲解一下如何使用Python操作Mysql实例的代码教程在线版。 1. 环境准备 在进行Python操作Mysql实例之前,需要先确保以下环境准备好: 安装Python和pip工具 安装Mysql驱动库 安装Mysql驱动库的命令如下: pip install pymysql 2. 连接到Mysql数据库 在Python中连接到Mysql数据库的…

    python 2023年5月18日
    00
  • 对python中的try、except、finally 执行顺序详解

    对Python中的try、except、finally 执行顺序详解 在Python中,try、except和finally是我们常用的异常处理方式,有一个清晰的执行顺序很重要。在这篇攻略中,我们将详细探讨这些关键字的执行顺序,以便更有效地处理异常。 try、except和finally 先回顾一下这些关键字的含义和用途: try:执行可能会抛出异常的代码块…

    python 2023年5月13日
    00
  • python操作Excel神器openpyxl看这一篇就够了

    下面是关于如何使用openpyxl进行操作Excel的教程。 简介 openpyxl是一个用于读取和编写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它在Python中提供了一种简单,有效的方法来操作Excel文件,而无需使用Microsoft Excel软件。 安装 安装openpyxl库可以使用pip命令: pip i…

    python 2023年5月13日
    00
  • python文档字符串(函数使用说明)使用详解

    下面是详细的攻略: Python文档字符串(函数使用说明)使用详解 在Python中,文档字符串(docstring)是一种特殊的注释,用于描述函数、类、模块等的使用说明。文档字符串通常放在函数、类、模块的开头,用三个双引号或三个单引号括起来。本文将介绍Python文档字符串的使用方法,并提供两个示例说明。 Python文档字符串的格式 Python文档字符…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部