首页 > 编程语言 >使用 KMeans 聚类算法 对鸢尾花数据集进行无监督学习的简单示例

使用 KMeans 聚类算法 对鸢尾花数据集进行无监督学习的简单示例

时间:2024-09-21 23:48:44浏览次数:9  
标签:plt 示例 数据 KMeans 聚类 鸢尾花 PCA data

代码功能

主要功能:
加载数据集:
代码使用 load_iris() 函数加载了鸢尾花数据集(Iris dataset)。这个数据集包含 150 条样本,每条样本有 4 个特征,对应于 3 种不同的鸢尾花。
KMeans 聚类:
使用 KMeans 聚类算法将样本数据分为 3 个聚类(即3类),尝试发现数据中的自然分组,而不使用标签。
KMeans 将根据数据特征进行迭代计算,最终找到每个类的聚类中心,并为每个数据点分配一个类标签。
PCA 降维:
由于数据集有 4 个特征,不便于可视化,代码使用 PCA(主成分分析)将数据降维至 2 维。这样我们可以在二维平面上更直观地展示聚类结果。
可视化:
使用 Matplotlib 库绘制聚类结果。代码将每个数据点根据其聚类标签着色,并用红色标记聚类中心的位置。
主要步骤:
KMeans 聚类:根据数据的分布,寻找数据的三个聚类中心。
降维可视化:将数据从高维降到二维,便于展示。
绘制图形:用不同颜色表示不同类的数据点,红色圆圈代表聚类中心。
在这里插入图片描述

代码

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA

# 加载鸢尾花数据集
iris = load_iris()
data = iris.data

# 创建KMeans模型,设定聚类为3类(对应于鸢尾花的3个品种),并显式设置n_init参数
kmeans = KMeans(n_clusters=3, n_init=10, random_state=42)

# 训练模型并进行聚类
kmeans.fit(data)

# 获取聚类结果
labels = kmeans.labels_
centers = kmeans.cluster_centers_

# 使用PCA将数据降维至2维进行可视化
pca = PCA(n_components=2)
data_2d = pca.fit_transform(data)

# 绘制聚类结果
plt.scatter(data_2d[:, 0], data_2d[:, 1], c=labels, cmap='viridis', label="Data points")
plt.scatter(pca.transform(centers)[:, 0], pca.transform(centers)[:, 1], s=300, c='red', label="Cluster centers")
plt.title('KMeans Clustering on Iris Dataset')
plt.xlabel('PCA Component 1')
plt.ylabel('PCA Component 2')
plt.legend()
plt.show()

标签:plt,示例,数据,KMeans,聚类,鸢尾花,PCA,data
From: https://blog.csdn.net/C7211BA/article/details/142417150

相关文章

  • 第二百四十一节 JPA教程 - JPA一对一主键连接列示例、JPA一对一映射级联示例
    JPA教程-JPA一对一主键连接列示例例子下面的代码来自Person.java。packagecn.w3cschool.common;importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.GenerationType;importjavax.persistence.Id;importjavax.pe......
  • Typescript 中的泛型是什么 - 为什么使用它们,它们如何与代码示例一起使用
    介绍什么是泛型?typescript中的泛型提供了一种创建可以使用多种类型而不是单一类型的组件的方法。它们允许您定义针对不同数据类型灵活且可重用的函数、类或接口,同时保持强大的类型安全性。本质上,泛型使您能够编写能够适应不同类型的代码,而不会失去typescript类型系统的优......
  • SOLID 原则使用一些有趣的类比与车辆示例
    solid是计算机编程中五个良好原则(规则)的缩写。solid允许程序员编写更易于理解和稍后更改的代码。solid通常与使用面向对象设计的系统一起使用。让我们使用车辆示例来解释solid原理。想象一下,我们正在设计一个系统来管理不同类型的车辆,例如汽车和电动汽车,以提供运输服务。......
  • React 与 React (RC):主要区别和迁移技巧与示例
    react是用于构建用户界面的流行javascript库,随着每个新版本的发布而不断发展。在这篇博文中,我们将探讨react18和即将推出的react19(目前处于候选发布阶段)之间的主要区别,提供新功能示例,并为使用react和vite的开发人员提供迁移技巧。目录简介react19的当前状态与......
  • <<编码>> 第 16 章 存储器组织(1)--比特锁存器 示例电路
    1比特锁存器info::操作说明鼠标单击逻辑输入切换0|1状态就是前面的电平触发的D型锁存器.写入(Write)就是时钟信号primary::在线交互操作链接https://cc.xiaogd.net/?startCircuitLink=https://book.xiaogd.net/code-hlchs-examples/assets/circuit/code-hlc......
  • 英飞凌 PSoC6 评估板 CAPSENSE 触摸滑条应用示例
    PSoC™62withCAPSENSE™evaluationkit开发板(以下简称PSoC6RTT开发板)是英飞凌(Infineon)联合RT-Thread发布一款面向物联网开发者的32位双核MCU开发套件,其默认内置RT-Thread物联网操作系统。本文主要介绍CAPSENSE™技术原理,并通过RT-ThreadStudio快速开......
  • 元学习的简单示例
    代码功能模型结构:SimpleModel是一个简单的两层全连接神经网络。元学习过程:在maml_train函数中,每个任务由支持集和查询集组成。模型先在支持集上进行训练,然后在查询集上进行评估,更新元模型参数。任务生成:通过create_task_data函数生成随机任务数据,用于模拟不同的学习任务......
  • Javascript 中的展开和休息运算符及其示例
    剩余和扩展运算符是javascript中强大的功能,允许您更有效地处理数组、对象和函数参数。它们都使用相同的语法(...),但用途不同。休息操作员(...)剩余运算符用于将所有剩余元素收集到数组中。它通常用在函数参数中来处理可变数量的参数。休息运算符示例:functionsum(......
  • CompletableFuture使用示例
    CompletableFuture是Java8中引入的一个功能强大的类,它实现了Future和CompletionStage两个接口,主要用于异步编程。通过它,开发者可以以一种非阻塞的方式编写异步代码,从而提高程序的响应速度和资源利用率。异步执行:CompletableFuture支持在后台线程中异步执行计算或操作,避免阻塞主线......
  • JavaScript For 循环示例
    标准for循环for(leti=0;i<h2>for...of循环(遍历数组)</h2><preclass="brush:php;toolbar:false">constfruits=['apple','banana','orange'];for(constfruitoffruits){console.log(fruit);登录后复制......