【机器学习】机器学习的基本分类-无监督学习(Unsupervised Learning)
无监督学习(Unsupervised Learning)
无监督学习是一种机器学习方法,主要用于没有标签的数据集。其目标是从数据中挖掘出潜在的结构和模式。常见的无监督学习任务包括 聚类、降维、密度估计 和 异常检测。
1. 无监督学习的核心目标
1.1 聚类
将数据分成多个组,使得同一组中的数据点具有更高的相似性,而不同组之间的相似性较低。
应用场景:
- 市场细分:将用户分组,提供个性化服务。
- 图像分割:将像素划分为不同区域。
1.2 降维
通过减少特征的数量而保留尽可能多的信息,主要用于数据可视化或特征提取。
应用场景:
- 数据压缩:如主成分分析 (PCA)。
- 数据可视化:将高维数据映射到 2D 或 3D 空间。
1.3 密度估计
估计数据的概率分布,用于理解数据生成过程。
应用场景:
- 图像生成:生成新的、类似于训练数据的图像。
- 异常检测:检测数据集中低概率的异常点。
2. 主要算法
2.1 聚类算法
(1) K-Means
K-Means 是最常用的聚类算法,通过迭代优化,将数据分为 K 个簇。
核心步骤:
- 初始化 K 个簇中心。
- 分配每个点到最近的簇中心。
- 更新簇中心为当前簇内点的均值。
- 重复步骤 2 和 3,直到收敛。
优缺点:
- 优点:简单高效,适合大数据集。
- 缺点:对初始中心敏感,适用于凸形分布。
from sklearn.cluster import KMeans
import numpy as np# 生成数据
from sklearn.datasets import make_blobs
X, _ = make_blobs(n_samples=300, centers=4, random_state=42)# K-Means 聚类
kmeans = KMeans(n_clusters=4, random_state=42)
kmeans.fit(X)
labels = kmeans.labels_
(2) DBSCAN
基于密度的聚类方法,能够发现任意形状的簇,同时可以自动识别噪声点。
核心思想:
- 定义每个点的邻域(基于半径 ϵ)。
- 寻找核心点(邻域内有足够多点的点)。
- 扩展核心点形成簇。
优缺点:
- 优点:对噪声鲁棒,适合非球形数据。
- 缺点:对参数 ϵ 和最小样本数敏感。
from sklearn.cluster import DBSCAN# DBSCAN 聚类
dbscan = DBSCAN(eps=0.5, min_samples=5)
dbscan.fit(X)
labels = dbscan.labels_
2.2 降维算法
(1) 主成分分析(PCA)
通过线性变换,将数据投影到低维空间,同时尽可能保留数据的方差。
核心步骤:
- 计算数据的协方差矩阵。
- 对协方差矩阵进行特征值分解。
- 选择最大的 k 个特征值对应的特征向量。
from sklearn.decomposition import PCA# PCA 降维
pca = PCA(n_components=2)
X_reduced = pca.fit_transform(X)
(2) t-SNE
t-SNE 是一种非线性降维技术,特别适合高维数据的可视化。
核心思想:
- 在高维空间和低维空间中分别计算数据点对之间的相似性。
- 通过梯度下降优化,使高维和低维空间中的相似性尽可能一致。
from sklearn.manifold import TSNE# t-SNE 降维
tsne = TSNE(n_components=2, random_state=42)
X_embedded = tsne.fit_transform(X)
2.3 密度估计
(1) 高斯混合模型(GMM)
通过混合多个高斯分布来对数据建模。每个高斯分布对应一个簇,同时计算数据属于每个簇的概率。
核心步骤:
- 初始化每个高斯分布的参数。
- E 步:计算每个点属于每个分布的概率。
- M 步:更新高斯分布的参数。
from sklearn.mixture import GaussianMixture# GMM 聚类
gmm = GaussianMixture(n_components=4, random_state=42)
gmm.fit(X)
labels = gmm.predict(X)
(2) 核密度估计(KDE)
通过核函数(如高斯核)对数据的概率密度进行估计,适合发现数据分布中的细节。
from sklearn.neighbors import KernelDensity# KDE 密度估计
kde = KernelDensity(kernel='gaussian', bandwidth=0.5)
kde.fit(X)
3. 无监督学习的应用
3.1 聚类
- 客户分群:细分客户群体,制定针对性策略。
- 推荐系统:基于用户行为聚类推荐内容。
3.2 降维
- 数据可视化:如高维基因数据的分析。
- 特征选择:减少模型复杂度,提高训练速度。
3.3 密度估计
- 异常检测:检测异常交易或异常行为。
- 数据生成:生成新的、与训练数据相似的样本。
4. 无监督学习的挑战
- 难以评估:没有标签,难以量化结果的优劣。
- 算法敏感性:如 K-Means 对初始中心敏感,DBSCAN 对参数敏感。
- 高维数据问题:维度的增加可能导致距离度量失效(“维度灾难”)。
无监督学习方法强大而灵活,但通常需要结合特定的领域知识以更好地解释结果。如果需要更深入的分析或实践指导,可以进一步探讨!
相关文章:
【机器学习】机器学习的基本分类-无监督学习(Unsupervised Learning)
无监督学习(Unsupervised Learning) 无监督学习是一种机器学习方法,主要用于没有标签的数据集。其目标是从数据中挖掘出潜在的结构和模式。常见的无监督学习任务包括 聚类、降维、密度估计 和 异常检测。 1. 无监督学习的核心目标 1.1 聚类…...
[代码随想录09]字符串2的总结
前言 处理字符串主要是有思路,同时总结方法。 题目链接 151. 反转字符串中的单词 - 力扣(LeetCode) 55. 右旋字符串(第八期模拟笔试) 一、翻转字符串里的单词 这个题目的主要思路,代码采用从后往前遍历字…...
java注解(一):什么是注解?什么是元注解?如何自定义注解?注解的原理是什么?
目录 1、什么是注解? 2、什么是元注解 1、Target() 2、Retention() 3、Documented 4、Inherited 3、如何自定义注解以解使用 4、注解的原理 本篇文章主要是介绍注解的概念、原理,以及通过代码演示4种元注解、如何自定义注解。通过反编译的形式进…...
AD20 原理图库更新到原理图
一 点击工具,从库更新。快捷键TL 二 点击完成 三 执行变更,最后点击关闭...
.NET用C#导入Excel数据到数据库
将Excel文件中的数据导入到数据库中不仅能够提升数据处理的效率和准确性,还能极大地促进数据分析和决策制定的过程。尤其在企业级应用中,Excel作为数据输入和初步整理的工具非常普遍,但其功能对于复杂查询、大规模数据管理和跨部门的数据共享…...
小身躯大能量-供热系统通过EtherCAT转Profinet网关进行升级
在现代工业自动化领域,通信技术的进步对于提高系统效率、稳定性和可靠性起着至关重要的作用。EtherCAT(Ethernet for Control Automation Technology)作为一种实时以太网解决方案,因其高性能及成本效益高等特点,在众多…...
Android11.0系统关闭App所有通知
通过广播接收方式,根据包名关闭App所有通知。 packages/apps/Settings$ git diff diff --git a/AndroidManifest.xml b/AndroidManifest.xml index d4c54c6ed8..1ce7d4136f 100644 --- a/AndroidManifest.xmlb/AndroidManifest.xml-106,6 106,7 <uses-permissio…...
# issue 8 TCP内部原理和UDP编程
TCP 通信三大步骤: 1 三次握手建立连接; 2 开始通信,进行数据交换; 3 四次挥手断开连接; 一、TCP内部原理--三次握手 【第一次握手】套接字A∶"你好,套接字B。我这儿有数据要传给你,建立连接吧。" 【第二次…...
力扣100题--移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2: 输入: nums [0] 输出: […...
Spring 邮件发送
Spring 邮件发送 1. 主要内容(了解) 2. JavaMail 概述(了解) JavaMail,顾名思义,提供给开发者处理电⼦邮件相关的编程接⼝。JavaMail 是由 Sun 定义的⼀套收发电⼦邮件的 API,它可以⽅便地执⾏⼀…...
利用 360 安全卫士极速版关闭电脑开机自启动软件教程
在使用电脑的过程中,过多的开机自启动软件会严重拖慢电脑的开机速度,影响我们的使用体验。本教程中简鹿办公将详细介绍如何使用 360 安全卫士极速版关闭电脑开机自启动软件,让您的电脑开机更加迅速流畅。 一、打开 360 安全卫士极速版 在电…...
楼房销售系统
文末获取源码和万字论文,制作不易,感谢点赞支持。 毕 业 设 计(论 文) 题目:楼房销售系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储…...
UML箭线图的理解和实践
在软件开发的世界里,UML(统一建模语言)作为一种标准化的建模语言,扮演着举足轻重的角色。UML类图更是软件开发设计和架构过程中的核心工具,它不仅能帮助开发者明确系统中的类及其关系,还能为后续的代码实现…...
Qt入门8——Qt文件
1. Qt文件概述 文件操作是应用程序必不可少的部分。Qt作为⼀个通用开发库,提供了跨平台的文件操作能力。Qt 提供了很多关于文件的类,通过这些类能够对文件系统进行操作,如文件读写、文件信息获取、文件复制或重命名等。 2. 输入输出设备类 在…...
鸿翼受邀出席2024海峡两岸档案暨缩微学术交流会
近日,由中国档案学会、中国文献影像技术协会共同主办,中华档案暨资讯微缩管理学会参加的2024年海峡两岸档案暨缩微学术交流会在乌鲁木齐召开。鸿翼联合创始人兼CTO罗永秀受邀出席本次交流会并作主题分享。 自1992年以来,该学术交流会已连续举…...
支持win7系统的onnxruntime
在win7 X86系统上,使用了onnxruntime.dll库做AI识别,但是在win7上运行报0xc0000005的错误 经查,ONNX Runtime从v1.15.0版本开始不再支持Windows 7及其之前的操作系统,即便尝试重新编译源代码亦无法在这些老系统上运行,…...
如何利用内链策略提升网站的整体权重?
内链是谷歌SEO中常常被低估的部分,实际上,合理的内链策略不仅能帮助提升页面间的关联性,还可以增强网站的整体权重。通过正确的内链布局,用户可以更流畅地浏览你的网站,谷歌爬虫也能更快地抓取到更多页面,有…...
鸿蒙分享(二):引入zrouter路由跳转+封装
码仓库:https://gitee.com/linguanzhong/share_harmonyos 鸿蒙api:12 鸿蒙第三方库地址:OpenHarmony三方库中心仓 zrouter地址:OpenHarmony三方库中心仓 1.引入zrouter 1.打开终端界面:输入 ohpm install hzw/zrouter 2.在项目…...
【计算机网络】实验11:边界网关协议BGP
实验11 边界网关协议BGP 一、实验目的 本次实验旨在验证边界网关协议(BGP)的实际作用,并深入学习在路由器上配置和使用BGP协议的方法。通过实验,我将探索BGP在不同自治系统之间的路由选择和信息交换的功能,理解其在互…...
leetcode 1853 转换日期格式(postgresql)
需求 表: Days ----------------- | Column Name | Type | ----------------- | day | date | ----------------- day 是这个表的主键。 给定一个Days表,请你编写SQL查询语句,将Days表中的每一个日期转化为"day_name, month_name day, year"…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...
