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

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

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

print(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.kler.cn/a/531690.html

相关文章:

  • 【C语言篇】“三子棋”
  • Vue指令v-html
  • Leetcode—1427. 字符串的左右移【简单】Plus
  • AI技术在SEO关键词优化中的应用策略与前景展望
  • 排序算法--桶排序
  • FLTK - FLTK1.4.1 - demo - bitmap
  • 【最长上升子序列Ⅱ——树状数组,二分+DP,纯DP】
  • [论文学习]Adaptively Perturbed Mirror Descent for Learning in Games
  • PyTorch生态系统中的连续深度学习:使用Torchdyn实现连续时间神经网络
  • FPGA|IP核PLL调用测试:建立工程
  • 【前端知识】常用CSS样式举例
  • Android开发工作经历整理
  • Vuex状态管理
  • 【漫话机器学习系列】078.如何选择隐藏单元激活函数(How To Choose Hidden Unit Activation Functions)
  • MySQL与Python交互-08
  • Java | CompletableFuture详解
  • 网站快速收录:如何优化网站音频内容?
  • bypass hcaptcha、hcaptcha逆向
  • 基于深度学习的视觉检测小项目(十七) 用户管理后台的编程
  • 如何确认Linux嵌入式系统的触摸屏对应的是哪个设备文件(/dev/input/event1)?如何查看系统中所有的输入设备?输入设备的设备文件有什么特点?
  • Linux进阶——例行性工作
  • PDFBox 替代方案(以及何时考虑更换)
  • 测试工程师的DS使用指南
  • 栈(5题)
  • 并行计算、分布式计算与云计算:概念剖析与对比研究(表格对比)
  • 【hot100】刷题记录(12)-回文链表