【Python 机器学习专栏】K-means 聚类算法在 Python 中的实现

简介: 【4月更文挑战第30天】K-means 是一种常见的聚类算法,用于将数据集划分为 K 个簇。其基本流程包括初始化簇中心、分配数据点、更新簇中心并重复此过程直到收敛。在 Python 中实现 K-means 包括数据准备、定义距离函数、初始化、迭代和输出结果。虽然算法简单高效,但它需要预先设定 K 值,且对初始点选择敏感,可能陷入局部最优。广泛应用在市场分析、图像分割等场景。理解原理与实现对应用聚类分析至关重要。

在机器学习领域,聚类分析是一种重要的探索性数据分析方法。K-means 聚类算法是其中一种常用的聚类算法,它简单高效,在许多实际应用中都有广泛的应用。本文将详细介绍 K-means 聚类算法的原理,并展示如何在 Python 中实现该算法。

一、K-means 聚类算法的原理

K-means 聚类算法的基本思想是将数据集划分为 K 个簇,使得每个数据点都属于距离其最近的簇中心。其主要步骤如下:

  1. 初始化:随机选择 K 个数据点作为初始簇中心。
  2. 分配数据点:计算每个数据点到各个簇中心的距离,将数据点分配到距离最近的簇中心所在的簇。
  3. 更新簇中心:根据分配到各个簇的数据点,重新计算簇中心的位置。
  4. 重复步骤 2 和 3:直到簇中心的位置不再发生明显变化或达到预设的迭代次数。

二、K-means 聚类算法的实现步骤

  1. 数据准备:加载数据集并进行必要的预处理。
  2. 定义距离函数:通常使用欧几里得距离来计算数据点之间的距离。
  3. 初始化簇中心:随机选择 K 个数据点作为初始簇中心。
  4. 迭代过程:重复执行分配数据点和更新簇中心的步骤,直到满足停止条件。
  5. 输出结果:得到最终的聚类结果和簇中心。

三、在 Python 中实现 K-means 聚类算法

以下是一个简单的 K-means 聚类算法的 Python 实现示例:

import numpy as np
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# 生成模拟数据集
X, y = make_blobs(n_samples=500, centers=3, cluster_std=0.6, random_state=0)

# 定义 K-means 聚类算法
def kmeans_clustering(X, K):
    # 初始化簇中心
    centroids = X[np.random.choice(X.shape[0], K, replace=False), :]

    while True:
        # 分配数据点到簇
        distances = np.sqrt(((X - centroids[:, np.newaxis]) ** 2).sum(axis=2))
        labels = np.argmin(distances, axis=0)

        # 更新簇中心
        new_centroids = np.array([X[labels == i].mean(axis=0) for i in range(K)])

        # 检查簇中心是否变化
        if np.allclose(centroids, new_centroids):
            break

        centroids = new_centroids

    return labels, centroids

# 执行 K-means 聚类
K = 3
labels, centroids = kmeans_clustering(X, K)

# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='rainbow')
plt.scatter(centroids[:, 0], centroids[:, 1], marker='x', s=200, c='black')
plt.show()

四、K-means 聚类算法的优缺点

  1. 优点:简单易懂,计算效率高,对大规模数据集也能较好地处理。
  2. 缺点:需要事先指定簇的数量 K,对初始簇中心敏感,可能会陷入局部最优解。

五、应用场景

K-means 聚类算法广泛应用于市场细分、客户分类、图像分割等领域。通过对数据的聚类分析,可以发现数据中的潜在模式和结构。

六、总结

K-means 聚类算法是一种经典的聚类算法,在 Python 中有多种实现方式。理解其原理和实现过程对于应用聚类分析解决实际问题具有重要意义。在实际应用中,需要根据数据特点和需求选择合适的聚类算法,并结合其他方法进行进一步的分析和处理。

希望本文能为你提供关于 K-means 聚类算法在 Python 中实现的全面认识,助力你在机器学习的探索中取得更好的成果。

相关文章
|
2天前
|
机器学习/深度学习 数据采集 数据挖掘
深入Scikit-learn:掌握Python最强大的机器学习库
【7月更文第18天】在当今数据驱动的世界中,机器学习已成为解锁数据潜力的关键。Python凭借其简洁的语法和丰富的库生态,成为数据科学家和机器学习工程师的首选语言。而在Python的众多机器学习库中,Scikit-learn以其全面、高效、易用的特点,被誉为机器学习领域的“瑞士军刀”。本文旨在深入探讨Scikit-learn的核心概念、实用功能,并通过实战代码示例,带你领略其强大之处。
29 12
|
5天前
|
机器学习/深度学习 算法 数据挖掘
基于改进K-means的网络数据聚类算法matlab仿真
**摘要:** K-means聚类算法分析,利用MATLAB2022a进行实现。算法基于最小化误差平方和,优点在于简单快速,适合大数据集,但易受初始值影响。文中探讨了该依赖性并通过实验展示了随机初始值对结果的敏感性。针对传统算法的局限,提出改进版解决孤点影响和K值选择问题。代码中遍历不同K值,计算距离代价,寻找最优聚类数。最终应用改进后的K-means进行聚类分析。
|
11天前
|
机器学习/深度学习 监控 算法
Python数据分析与机器学习在金融风控中的应用
Python数据分析与机器学习在金融风控中的应用
39 12
|
12天前
|
机器学习/深度学习 运维 算法
「AIGC算法」K-means聚类模型
**K-means聚类模型概览:** - 是无监督学习算法,用于数据集自动分组。 - 算法步骤:初始化质心,分配数据点,更新质心,迭代直至收敛。 - 关键点包括K的选择、初始化方法、收敛性和性能度量。 - 优点是简单快速,适合大样本,但对初始点敏感,需预设K值,且仅适于球形簇。 - 应用场景包括图像分割、市场分析、异常检测等。 - 示例展示了使用scikit-learn对Iris数据集和自定义CSV数据进行聚类。
18 0
「AIGC算法」K-means聚类模型
|
10天前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类模型算法
K-means聚类模型算法
|
11天前
|
数据采集 算法 搜索推荐
Python基于RFM模型和K-Means聚类算法进行航空公司客户价值分析
Python基于RFM模型和K-Means聚类算法进行航空公司客户价值分析
|
23天前
|
数据采集 机器学习/深度学习 算法
机器学习方法之决策树算法
决策树算法是一种常用的机器学习方法,可以应用于分类和回归任务。通过递归地将数据集划分为更小的子集,从而形成一棵树状的结构模型。每个内部节点代表一个特征的判断,每个分支代表这个特征的某个取值或范围,每个叶节点则表示预测结果。
101 1
|
3天前
|
机器学习/深度学习 算法 算法框架/工具
模型训练实战:选择合适的优化算法
【7月更文第17天】在模型训练这场智慧与计算力的较量中,优化算法就像是一位精明的向导,引领着我们穿越复杂的损失函数地形,寻找那最低点的“宝藏”——最优解。今天,我们就来一场模型训练的实战之旅,探讨两位明星级的优化算法:梯度下降和Adam,看看它们在不同战场上的英姿。
25 5
|
27天前
|
机器学习/深度学习 人工智能 算法
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
昆虫识别系统,使用Python作为主要开发语言。通过TensorFlow搭建ResNet50卷积神经网络算法(CNN)模型。通过对10种常见的昆虫图片数据集('蜜蜂', '甲虫', '蝴蝶', '蝉', '蜻蜓', '蚱蜢', '蛾', '蝎子', '蜗牛', '蜘蛛')进行训练,得到一个识别精度较高的H5格式模型文件,然后使用Django搭建Web网页端可视化操作界面,实现用户上传一张昆虫图片识别其名称。
177 7
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理