人工智能系列(8)如何实现无监督学习聚类(使用竞争学习)?

案例:鸢尾花数据集的聚类

一.聚类简介

神经网络能够从输入数据中自动提取有意义的特征,而竞争学习规则使得单层神经网络能够根据相似度将输入样本进行聚类,每个聚类由一个输出神经元代表并作为该类别的“原型”,从而实现对输入模式的无监督分类与结构发现。

二.案例研究(Iris植物聚类)

i.问题陈述:

针对无法明确将数据集划分为三种鸢尾花类别的问题,设定目标为构建一个能够自主学习并完成聚类任务的智能无监督人工神经网络(ANN),选用竞争型神经网络(Competitive ANN)作为模型,并采用竞争学习(Competitive Learning)算法,使网络能够根据输入特征自动发现数据的内在类别结构并完成分类。

ii.数据集描述:

本实验数据集包含 150 个样本,分属 Setosa、Versicolor 和 Virginica 三种鸢尾花类别,每个样本由 4 个连续型特征描述,分别为萼片长度(4.3–7.9 cm)、萼片宽度(2.0–4.4 cm)、花瓣长度(1.0–6.9 cm)和花瓣宽度(0.1–2.5 cm),这些特征在数值范围和单位上存在差异,因此在模型训练前需进行归一化处理,以确保特征在聚类中的贡献均衡。

iii.测试理解问题:

本任务属于聚类应用,数据集规模为 150 个样本在 3 个类别上的共 450 条特征记录,每个样本包含 4 个变量(萼片长度、萼片宽度、花瓣长度、花瓣宽度),目标是将其划分为 Setosa、Versicolor 和 Virginica 三类,通过无监督聚类方法发现不同鸢尾花品种在特征空间中的分布规律与相似性结构。

三、核心概念与流程

1.数据准备

      i.数据归一化

欧几里得距离对特征数值范围非常敏感,如果某个特征的取值范围较大,就会在距离计算中占据主导地位,掩盖其他特征的作用;同时,不同特征可能存在不同的单位和量纲(如 cm、kg、秒),直接比较不公平。通过归一化,可以将所有特征转换到同一尺度(通常是 0 到 1 的比例数据),使它们在相似度计算中权重均衡,并加快模型的训练收敛速度。

      ii.数据划分(DATA PREPARATION)

在实验中,将 150 个样本随机划分为训练集和测试集,例如可分为训练集 100 个、测试集 50 个,或按 70:30、80:20 等比例进行分配,以便用于模型训练和效果评估。

2.网络结构(Iris 示例)

在该竞争学习网络中,输入层神经元数量等于特征数,即 4 个节点分别对应萼片长度、萼片宽度、花瓣长度和花瓣宽度;输出层神经元数量等于期望的聚类簇数,本例设置为 3 个神经元分别代表三种鸢尾花类别;权重矩阵的维度为 4×3,即每个输出神经元都关联一个 4 维权重向量,用于表征该类别在特征空间中的“原型”位置,并在训练过程中不断调整以贴近该簇样本的特征分布。

3.初始化

训练初期将网络权重初始化为较小的随机值(如在 [0,1] 区间或依据输入特征范围生成),并在训练过程中定期记录权重变化,例如比较初始权重、迭代 100 次后的权重以及 2000 次后的权重,以观察网络收敛过程和权重逐步贴近各类别特征分布的趋势。

4.激活与匹配(找 Winner)

使用 欧氏距离(Euclidean distance) 作为匹配准则:对每个输出单元 j计算, 选择距离最小者作为胜出神经元(BMU)。

5.权重更新

    对胜出神经元的权重按下式更新:

     

    α是学习率,控制更新幅度;Λj(p)是邻域函数;

    6.重复训练直至收敛

    由于无监督学习中没有可直接监控的标签误差,本例采用欧氏距离准则或“权重变化不再显著”作为收敛判据,即当权重向量在多次迭代后变化幅度极小即可视为收敛。

    7.簇标注(Labelling 输出神经元)

    在无监督聚类中,输出单元本身没有预设类标签,因此常用的方法是在训练完成后利用带标签的测试集进行“投票”标注,即统计每个输出单元在测试集中最常赢得的真实类别,将该单元标记为该类别,从而实现输出神经元与具体类别的对应关系。

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
    如若转载,请注明出处:http://www.pswp.cn/pingmian/92501.shtml
    繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92501.shtml

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    Windows安装mamba全流程(全网最稳定最成功)

    windows系统下安装mamba会遇到各种各样的问题。博主试了好几天,把能踩的坑都踩了,总结出了在windows下安装mamba的一套方法,已经给实验室的windows服务器都装上了。只要跟着我的流程走下来,大概率不会出问题,如果遇到其…

    Autosar Dem配置-最大存储的DTC信息个数配置-基于ETAS软件

    文章目录 前言 Autosar Dem相关配置 ETAS工具中的配置 生成文件分析 测试验证 总结 前言 诊断DTC开发中,会有故障快照和扩展数据的存储需求,但由于控制器的可用存储空间有限,所以无法存储所有DTC的信息,这时就需要限制存储的数量,本文介绍该参数在ETAS软件中的配置。 Au…

    【MySQL】EXISTS 与 NOT EXISTS 深度解析:从原理到实战的完整指南

    在复杂的业务查询中,我们常常需要判断“是否存在满足某条件的记录”或“找出不满足某些条件的记录”。这时,EXISTS 和 NOT EXISTS 子查询便成为强大的工具。它们不仅逻辑清晰、语义明确,而且在某些场景下性能远超 IN 或 JOIN。然而&#xff0…

    面对信号在时频平面打结,VNCMD分割算法深度解密

    “ 信号迷宫中的破壁者:VNCMD如何分解纠缠的时空密码?——从鲸歌到机械故障,宽带信号分解新纪元。”01—痛点直击:为什么传统方法集体失效?2017年,上海交大团队提出了一项突破性研究:变分非线性…

    CSS优先级、HTTP响应状态码

    CSS优先级 优先级:看CSS的来源、样式引入方式、选择器、源码顺序。 行内样式/内联样式:直接在HTML元素的style属性中编写CSS样式。这种方式适用于少量样式的情况,但不推荐在大规模开发中使用,因为它会使HTML文件变得冗长和难以维…

    项目一系列-第2章 Git版本控制

    第2章 Git版本控制 2.1 Git概述 Git是什么?Git是一个分布式版本控制工具,于管理开发过程中的文件。 Git有哪些作用? 远程备份:Git可以将本地代码备份到远程服务器,防止数据丢失。多人协作:Git运行多个开发者…

    Java异常:认识异常、异常的作用、自定义异常

    目录1.什么是异常?1)运行时异常2)编译时异常2.异常的作用1)Java 异常在定位 BUG 中的核心作用2)Java 异常作为方法内部特殊返回值的作用3)自定义异常1.什么是异常? Error:代表的系统级别错误(属…

    第十九天-输入捕获实验

    一、输入捕获概述1、输入捕获框图2、输入捕获工作详解①设置输入捕获滤波器可以设置滤波,滤除一些高电平脉宽不足的脉冲信号。②设置捕获极性③输入捕获映射④输入捕获分频器这里的捕获是将计数器的值存入比较寄存器中,分频次的作用是设置几个上升沿/下降…

    多线程问题,子线程同时操作全局变量,使用后需要清空吗 ?

    背景:目前有一个全局变量 ,某个方法中通过多线程,都操作这个变量,向这个全局变量中去添加元素,然后等所有子线程执行完了之后,对这个全局变量进行批量保存,然后这个全局变量还需要手动去清空吗&…

    Netty知识储备:BIO、NIO、Reactor模型

    学习Netty之前,首先先掌握这些基础知识:阻塞(Block)与非阻塞(Non-Block),同步(Synchronous)与异步(Asynchronous),Java BIO与NIO对比。…

    用生成器守住架构,用 AI 放大效率:一套可落地的 AI 编程方法论

    背景与问题 现实困境: 直接让 AI 产出整块业务代码,常常与现有架构风格、分层边界、依赖策略不一致,后续改造成本高;AI 对现实业务语境、领域规则难以精准把握;在既定模板成熟的场景下,代码生成器往往更快、更整齐。目…

    码头岸电系统如何保障供电安全?安科瑞绝缘监测及故障定位方案解析

    当岸电电网是TN-S系统时,船体未接专用接地线且船舶电网未与岸电零线接通,船舶电网发生单相接地故障时,人站在岸上触及船体会有触电危险,零线上可能出现高电压,单相接地电流大。当船体接专用接地线且船舶电网接入岸电零…

    ESP32_u8g2移植

    前言 U8g2 是一个用于嵌入式设备的单色图形库。U8g2支持单色OLED和LCD,并支持如SSD1306 SSD1315等多种类型的OLED驱动,几乎市面上常见都支持。 U8g2源码 download:https://github.com/olikraus/u8g21:环境 ESP32 S3(ESP32-S3-Dev…

    MCP实现:.Net实现MCP服务端 + Ollama ,MCP服务端工具调用

    本文使用.Net编写MCP服务端 Ollama ,实现简单MCP调用,代码仅实现基本演示功能。 文章目录一、Ollama如何安装使用二、创建.Net8项目,开发MCP服务端三、开发MCP客户端,并对接Ollama一、Ollama如何安装使用 请移步:htt…

    Docker的安装使用以及常见的网络问题

    一、什么是DockerDocker是一种容器化技术,用于快速打包、分发和运行程序。他的核心思想是"一次构建,到处运行",通过将应用及其依赖的环境打包到一个轻量级、可移植的容器中,实现跨平台一致运行。二、Docker的安装1.Cent…

    C++入门学习

    1.命名空间的介绍首先我们看到如下的代码&#xff0c;在C语言中&#xff1a;#include <stdio.h> #include <stdlib.h> int rand 10; // C语言没办法解决类似这样的命名冲突问题&#xff0c;所以C提出了namespace来解决 int main() {printf("%d\n", rand…

    解决python错误:playwright._impl._errors.TimeoutError: Timeout 30000ms exceeded.

    from playwright.sync_api import sync_playwrightwith sync_playwright() as p:browser = p.chromium.launch(headless=False)page = browser.new_page() page.goto(url)page.wait_for_load_state(networkidle) 在Python环境中运行以上代码后报错: page.wait_for_load_…

    爬虫逆向之雷池waf

    本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的。否则由此产生的一切后果均与作者无关&#xff01; 雷池waf概念 雷池 WAF&#xff08;SafeLine&#xff09;是长亭科技开源的一款 Web 应用防火墙&#xff0c;部署在网站前面&#xff0c;把所有进来的 HTTP/…

    23种设计模式解析--行为型

    行为型模式&#xff08;协作的艺术&#xff09; 观察者模式 观察者模式详解 模式定义 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为设计模式&#xff0c;用于建立对象间一对多的依赖关系。当一个对象&#xff08;Subject&#xff09;状态变化时&#xff0c;所…

    Linux系统之lua 详解

    命令简介 lua 是 Lua 语言的解释器&#xff0c;用于加载和执行 Lua 程序&#xff08;包括文本源码和预编译的二进制文件&#xff09;。它支持两种运行模式&#xff1a;批处理模式&#xff08;执行指定脚本文件&#xff09;和交互式模式&#xff08;逐行读取并执行输入的命令&am…