当前位置: 首页 > news >正文

Sklearn 机器学习 数据聚类 用Numpy自己实现聚类

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖

在这里插入图片描述

本博客的精华专栏:
【自动化测试】 【测试经验】 【人工智能】 【Python】


在这里插入图片描述

Sklearn 机器学习数据聚类:用 Numpy 自己实现聚类

在机器学习的世界中,聚类(Clustering) 是一种非常重要的无监督学习方法。虽然 Scikit-learn 为我们提供了功能强大的聚类算法,如 KMeansDBSCAN 等,但理解其底层原理,并用 NumPy 亲手实现一次,可以帮助我们对聚类的本质有更深刻的认识。

本篇博文将带你逐步用 NumPy 实现一个简化版的 K-Means 聚类算法,并通过可视化展示聚类效果。


🧩 一、什么是聚类(Clustering)?

聚类是一种无监督学习方法,其目标是将样本自动划分成若干个“簇”(Cluster),使得:

  • 同一簇中的样本尽可能相似
  • 不同簇之间的样本尽可能不同

常见的聚类算法包括:

  • K-Means(最常用)
  • DBSCAN(密度聚类)
  • 层次聚类(Hierarchical Clustering)

🔁 二、K-Means 聚类的基本流程

K-Means 的核心思想是:

  1. 随机选择 K 个点作为初始聚类中心(centroids)
  2. 将每个样本分配给最近的聚类中心
  3. 更新每个簇的中心为簇中所有样本的均值
  4. 重复步骤 2 和 3,直到中心不再发生变化或达到最大迭代次数

🛠 实践中的几个优化点:

  • 随机种子控制:为了确保结果可复现,应设置随机种子(如 np.random.seed(42)

  • 空簇处理:如果某个簇没有任何样本分配,可以:

    • 从样本中随机选一个点作为新中心
    • 或复用上一轮的中心不变

🧮 三、使用 NumPy 实现简化版 K-Means

我们将用 NumPy 实现一个简洁的 K-Means,并通过可视化查看效果。

数据准备

使用 make_blobs 生成二维聚类数据:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs# 设置随机种子,保证可复现
np.random.seed(42)# 生成 300 个样本,3 个中心点
X, y_true = make_blobs(n_samples=300, centers=3, cluster_std=0.6, random_state=0)# 原始数据可视化
plt.scatter(X[:, 0
http://www.dtcms.com/a/311513.html

相关文章:

  • 【C++】类和对象(2)
  • 使用keil点亮stc8核心板的灯
  • 逻辑回归 银行贷款资格判断案列优化 交叉验证,调整阈值,下采样与过采样方法
  • MQTT 入门教程:MQTT工具调式
  • 堆----2.前 K 个高频元素
  • VirtualBox 的 HOST 键(主机键)是 右Ctrl 键(即键盘右侧的 Ctrl 键)笔记250802
  • 学习笔记:无锁队列的原理以及c++实现
  • Linux 高级 I/O 系统调用详解
  • Vue 响应式基础全解析2
  • Node.js中path模块的使用指南
  • InfluxDB 与 Node.js 框架:Express 集成方案(二)
  • 如何在`<link type=“icon“ href=`的`href`中写SVG并使用path标签? 笔记250802
  • 嵌入式 C 语言入门:递归与变量作用域学习笔记 —— 从概念到内存特性
  • 深入 Go 底层原理(十三):interface 的内部表示与动态派发
  • Javaweb————Apache Tomcat服务器介绍及Windows,Linux,MAC三种系统搭建Apache Tomcat
  • 技术文章:覆铜板的阻燃性
  • UniappDay07
  • 【AI】AIService(基本使用与指令定制)
  • cv快速input
  • 【云计算】云主机的亲和性策略(三):云主机 宿主机
  • Springboot原理和Maven高级
  • 操作系统:远程过程调用( Remote Procedure Call,RPC)
  • MQTT 入门教程:三步从 Docker 部署到 Java 客户端实现
  • Linux基础学习笔记二
  • MySQL PostgreSQL JDBC URL 配置允许批量操作
  • C语言输入安全10大边界漏洞解析与防御
  • 基于LSTM模型与加权链路预测的动态热门商品成长性分析
  • SpringBoot相关注解
  • 项目管理平台是什么?概念、定义、作用、主流厂商解读
  • docker:将python开发的大模型应用,打成docker容器