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

news/2025/2/8 22:38:36/

聚类是无监督学习中的一种重要技术,用于在没有标签信息的情况下对数据进行分析和组织。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/news/1570435.html

相关文章

Android13-系统服务大管家-ServiceManager进程-启动篇

文章目录 关注 ServiceMager 原因ServerManager需要掌握的知识资料参考ServiceManager 进程启动启动脚本涉及到的相关源码文件源码跟踪ServiceManager脚本启动位置ServiceManager关联脚本 Native层源码分析main.cpp流程打开驱动 initWithDriverinitmakeProcessState 构造方法op…

使用 Axios 进行高效的数据交互

一、前言 1. 项目背景与目标 Axios 的重要性: Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js,简化了与服务器的通信。Axios 提供了丰富的功能,如拦截器、并发请求管理、取消请求等。2. 环境搭建 开发工具准备: 推荐使用 VSCode 或 WebStorm。安装必要的…

PostgreSQL / PostGIS:创建地理要素

PostGIS详细教程可以参考官方文档:https://postgis.net/workshops/zh_Hans/postgis-intro/,并且官方文档提供了练习数据、教程、PPT版本教程。我这里参考QGIS文档中关于PostGIS的教程进行学习。 PostGIS 可以被认为是一组数据库内函数的集合&#xff0c…

php得到本周的起始日期实现签到功能

要做一个签到功能&#xff0c;在签到界面会显示本周&#xff0c;从周一到周日的七天。 上代码 <?php$stime_format date(Y-m-d 00:00:00, strtotime(monday this week));$stime strtotime($stime_format);for ($i 0; $i < 6; $i) {$ta array(timestamp > $stim…

【数据采集】基于Selenium采集豆瓣电影Top250的详细数据

基于Selenium采集豆瓣电影Top250的详细数据 Selenium官网:https://www.selenium.dev/blog/ 豆瓣电影Top250官网:https://movie.douban.com/top250 写在前面 实验目标:基于Selenium框架采集豆瓣电影Top250的详细数据。 电脑系统:Windows 使用软件:PyCharm、Navicat 技术需求…

TLS 和 SSL区别

TLS 与 SSL 的区别 TLS&#xff08;传输层安全协议&#xff09;和 SSL&#xff08;安全套接字层&#xff09;都是用于加密网络通信的协议&#xff0c;特别是在 Web 流量&#xff08;如 HTTPS&#xff09;中保护数据传输的安全。虽然它们有相似的功能和目的&#xff0c;但在协议…

Nginx部署Umi React前端项目标准配置

文章目录 概要前端Umi项目配置文件请求后端Api打包 后端项目Nginx配置配置文件 错误信息 概要 使用UmiJs开发的前端项目打包部署在Nginx&#xff0c;主要是Umi中项目的配置和Nginx的配置 前端Umi项目 基于"umijs/max": "^4.3.24", "react": &…

2.7学习总结

并查集&#xff1a; 1.查询&#xff08;采用了递归的方法&#xff09; 2.合并、 完整代码模板&#xff08;联系题目直接套模板&#xff09; 1.优化前 #include<stdio.h> #include<stdlib.h> #define MAXSIZE 100int uset[MAXSIZE];//定义一个足够长的数组 //用…