使用scikit-learn中的K均值包进行聚类分析

ops/2025/2/7 22:19:09/

聚类是无监督学习中的一种重要技术,用于在没有标签信息的情况下对数据进行分析和组织。K均值算法是聚类中最常用的方法之一,其目标是将数据点划分为K个簇,使得每个簇内的数据点更加相似,而不同簇之间的数据点差异较大。

准备自定义数据集

首先,需要一个自定义数据集来进行聚类分析。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt# 创建自定义数据集
np.random.seed(42)
num_samples = 150# 生成特征数据
X = np.random.rand(num_samples, 2)# 将数据转换为DataFrame以便查看
data = pd.DataFrame(X, columns=['Feature1', 'Feature2'])# 可视化数据集
plt.scatter(data['Feature1'], data['Feature2'], c='gray', marker='o', edgecolor='black')
plt.title('Custom Dataset')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()

在这个数据集中,Feature1Feature2是特征。使用K均值算法对这些数据点进行聚类。

 使用K均值算法进行聚类

接下来,将使用scikit-learn库中的K均值算法对数据集进行聚类。我们需要指定簇的数量K,假设K=3。

from sklearn.cluster import KMeans# 指定簇的数量
k = 3# 初始化K均值聚类器
kmeans = KMeans(n_clusters=k, random_state=42)# 训练模型
kmeans.fit(X)# 获取聚类结果
labels = kmeans.labels_# 获取簇中心
centroids = kmeans.cluster_centers_# 将聚类结果添加到DataFrame中
data['Cluster'] = labelsprint(data.head())

可视化聚类结果

可视化聚类结果,以便更直观地了解数据点的分组情况。

# 可视化聚类结果
plt.figure(figsize=(8, 6))
plt.scatter(data['Feature1'], data['Feature2'], c=data['Cluster'], cmap='viridis', marker='o', edgecolor='black')
plt.scatter(centroids[:, 0], centroids[:, 1], c='red', marker='x', s=200, label='Centroids')
plt.title('K-Means Clustering Result')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.legend()
plt.show()
通过观察聚类结果的可视化图,我们可以看到数据点被划分为三个簇。每个簇内的数据点更加相似,而不同簇之间的数据点差异较大。K均值算法通过迭代优化簇中心的位置来实现这一目标。

http://www.ppmy.cn/ops/156556.html

相关文章

C# 添加、替换、提取、或删除Excel中的图片

在Excel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更加美观。此外,对于已有图片,你有事可能需要更新图片以确保信息的准确性,或者将Excel 中的图片单独保存,用于资料归档、备…

双系统共用一个蓝牙鼠标

前言 由于蓝牙鼠标每次只能配置一个系统,每次切换系统后都需要重新配对,很麻烦,双系统共用一个鼠标原理就是通过windows注册表中找到鼠标每次生成的mac地址以及配置,将其转移到linux上。 解决 1. 首先进入linux系统 进行蓝牙鼠…

PostgreSql 函数异常处理

BEGIN 逻辑块 EXCEPTION WHEN 错误码(如:unique_violation) or others THEN 异常逻辑块 END; 在PL/pgSQL函数中,如果没有异常捕获,函数会在发生错误时直接退出,与其相关的事物也会随之回滚。我们可以通过使…

最大矩阵的和

最大矩阵的和 真题目录: 点击去查看 E 卷 100分题型 题目描述 给定一个二维整数矩阵,要在这个矩阵中选出一个子矩阵,使得这个子矩阵内所有的数字和尽量大,我们把这个子矩阵称为和最大子矩阵,子矩阵的选取原则是原矩阵中一块相互…

python基础入门:2.3字符串高级操作

字符串高级操作 1. 字符串格式化技巧 1.1 f-string(Python 3.6) 基础用法: name "Alice" age 25 print(f"{name}今年{age}岁") # Alice今年25岁高级格式控制: pi 3.1415926 # 保留两位小数 print(f&…

Python——Unicode 编码 或 解码 工具(通用版)

目录 专栏导读1、代码背景2、库的安装3、核心代码4、完整代码GUI进阶版总结 专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求…

基于微信小程序的消防隐患在线举报系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

Qt跨屏窗口的一个Bug及解决方案

如果我们希望一个窗口覆盖用户的整个桌面,此时就要考虑用户有多个屏幕的场景(此窗口要横跨多个屏幕),由于每个屏幕的分辨率和缩放比例可能是不同的,Qt底层在为此窗口设置缩放比例(DevicePixelRatio&#xf…