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

人工智能中的监督学习和无监督学习

2a20c54b85e042bfa2440367ae4807e9.gif

欢迎来到 Papicatch的博客

目录

🍉引言

🍉监督学习

🍈基本思想

🍈具体过程

🍍数据收集

🍍数据预处理

🍍模型选择

🍍模型训练

🍍模型评估

🍍模型部署

🍉无监督学习

🍈基本思想

🍈具体过程

🍍数据收集

🍍数据预处理

🍍模型选择

🍍模型训练

🍍结果分析

🍉案例

🍈监督学习 - 房价预测(回归)

🍈监督学习 - 图像分类(分类)

🍈无监督学习 - 客户分群(聚类)

🍈无监督学习 - 降维和可视化

🍉对比监督学习和无监督学习的区别

🍈数据需求

🍈目标

🍈应用场景

🍈算法复杂度

🍈模型评估

🍉总结


2a20c54b85e042bfa2440367ae4807e9.gif

🍉引言

        人工智能(AI)中的机器学习(ML)可以根据学习方式分为几种主要类型,其中监督学习和无监督学习是两种最重要的方法。本文将介绍这两种学习方法的基本思想、具体过程,并提供四个复杂的代码实现案例来对比它们的区别。

🍉监督学习

🍈基本思想

        监督学习是一种利用已知标签的数据进行训练的机器学习方法。其目标是学习一个函数,通过该函数可以将输入映射到相应的输出。监督学习可以分为两类:回归和分类。

  • 回归:用于预测连续的数值,例如房价预测。
  • 分类:用于预测离散的类别标签,例如图像分类。

🍈具体过程

🍍数据收集

        收集带有标签的数据集,这些数据包含输入特征和对应的输出标签。

🍍数据预处理

        清洗和整理数据,处理缺失值,进行特征选择和特征工程,确保数据质量。

🍍模型选择

        选择适合问题的机器学习算法,例如线性回归、支持向量机、决策树、神经网络等。

🍍模型训练

        使用训练数据集对模型进行训练,调整模型参数以最小化预测误差。

🍍模型评估

        使用验证数据集评估模型性能,常用指标包括准确率、精确率、召回率、均方误差等。

🍍模型部署

        将训练好的模型应用到实际数据中进行预测,并持续监控模型性能,进行必要的调整和改进。

🍉无监督学习

🍈基本思想

        无监督学习是一种不使用标签数据进行训练的机器学习方法。其目标是从数据中发现潜在的模式或结构。无监督学习常见的方法有聚类和降维。

  • 聚类:将数据分成多个组,每组中的数据具有相似性,例如客户分群。
  • 降维:减少数据的维度,同时保持数据的重要特征,例如主成分分析(PCA)。

🍈具体过程

🍍数据收集

        收集未标注的数据集,这些数据只包含输入特征。

🍍数据预处理

        同样需要进行数据清洗和整理,确保数据质量。

🍍模型选择

        选择适合问题的无监督学习算法,例如K-means、层次聚类、主成分分析等。

🍍模型训练

        使用数据集对模型进行训练,以发现数据的结构或模式。

🍍结果分析

        对模型输出的结果进行分析和解释,评估模型在实际应用中的表现。

🍉案例

🍈监督学习 - 房价预测(回归)

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error# 数据加载
data = pd.read_csv('housing.csv')# 数据预处理
X = data.drop('price', axis=1)
y = data['price']# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 模型选择与训练
model = LinearRegression()
model.fit(X_train, y_train)# 模型评估
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f'Mean Squared Error: {mse}')

        在这个案例中,我们使用线性回归算法预测房价。通过将数据集分为训练集和测试集,我们训练模型并评估其性能。

🍈监督学习 - 图像分类(分类)

import tensorflow as tf
from tensorflow.keras import datasets, layers, models
from sklearn.metrics import classification_report# 数据加载
(train_images, train_labels), (test_images, test_labels) = datasets.cifar10.load_data()# 数据预处理
train_images, test_images = train_images / 255.0, test_images / 255.0# 模型选择与训练
model = models.Sequential([layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),layers.MaxPooling2D((2, 2)),layers.Conv2D(64, (3, 3), activation='relu'),layers.MaxPooling2D((2, 2)),layers.Conv2D(64, (3, 3), activation='relu'),layers.Flatten(),layers.Dense(64, activation='relu'),layers.Dense(10)
])model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=10, validation_data=(test_images, test_labels))# 模型评估
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print(f'Test accuracy: {test_acc}')

        在这个案例中,我们使用卷积神经网络(CNN)进行图像分类任务。通过对CIFAR-10数据集进行训练和测试,我们评估模型的准确性。

🍈无监督学习 - 客户分群(聚类)

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt# 数据加载
data = pd.read_csv('customer_data.csv')# 数据预处理
scaler = StandardScaler()
data_scaled = scaler.fit_transform(data)# 模型选择与训练
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(data_scaled)# 聚类结果
labels = kmeans.labels_# 结果分析
plt.scatter(data_scaled[:, 0], data_scaled[:, 1], c=labels, cmap='viridis')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('Customer Segmentation')
plt.show()

       在这个案例中,我们使用K-means聚类算法对客户数据进行分群。通过数据标准化和K-means算法,我们可以发现数据中的自然分组。

🍈无监督学习 - 降维和可视化

import pandas as pd
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt# 数据加载
data = pd.read_csv('high_dimensional_data.csv')# 数据预处理
data_cleaned = data.dropna()  # 假设需要进行缺失值处理# 模型选择与训练
pca = PCA(n_components=2)  # 将数据降到2维
principal_components = pca.fit_transform(data_cleaned)# 结果分析
plt.scatter(principal_components[:, 0], principal_components[:, 1], cmap='viridis')
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.title('PCA of High Dimensional Data')
plt.show()

🍉对比监督学习和无监督学习的区别

🍈数据需求

  • 监督学习需要带标签的数据,而无监督学习不需要标签数据。这意味着监督学习的应用更依赖于数据标注,而无监督学习可以应用于更多场景。

🍈目标

  •  监督学习的目标是预测已知输出,例如分类或回归问题。
  • 无监督学习的目标是发现数据中的潜在结构,例如聚类或降维。

🍈应用场景

  • 监督学习常用于需要明确预测的任务,例如图像分类、股票价格预测、欺诈检测等。
  • 无监督学习常用于探索性数据分析和特征提取,例如客户分群、数据降维、异常检测等。

🍈算法复杂度

  • 监督学习算法通常需要大量标注数据进行训练,数据标注成本高,但模型训练和评估的过程相对明确。
  • 无监督学习算法需要更复杂的模型和算法来从未标注数据中提取信息,尽管数据获取成本低,但结果的解释和验证可能更具挑战性。

🍈模型评估

  • 监督学习的模型评估可以使用诸如准确率、精确率、召回率、均方误差等明确指标。
  • 无监督学习的模型评估通常依赖于领域专家的解释和对数据模式的直觉理解,缺乏标准化的评估指标。

🍉总结

        本文详细介绍了人工智能(AI)中监督学习和无监督学习的基本思想、具体过程,并通过四个复杂的代码实现案例对比了它们的区别。在监督学习中,我们通过使用已标注的数据集进行模型训练,目标是预测已知输出,如回归问题中的房价预测和分类问题中的图像分类。无监督学习则不使用标签数据,目标是从数据中发现潜在的模式或结构,如聚类中的客户分群和降维中的主成分分析(PCA)。

        通过对监督学习和无监督学习的详细讲解以及实际代码实现,我们了解到这两种方法在数据需求、目标、应用场景、算法复杂度和模型评估方面的不同。监督学习需要大量标注数据进行训练,而无监督学习不需要标签数据,更适用于探索性数据分析和特征提取。监督学习的目标是预测明确的输出,而无监督学习则致力于发现数据中的隐藏结构。

        在实际应用中,根据问题的具体需求选择合适的学习方法至关重要。希望通过本文的介绍和案例展示,读者能够对监督学习和无监督学习有更深入的理解,并能在实际项目中灵活运用这两种方法解决问题。

2a20c54b85e042bfa2440367ae4807e9.gif

希望能给大家提供一些帮助!!!

相关文章:

人工智能中的监督学习和无监督学习

欢迎来到 Papicatch的博客 目录 🍉引言 🍉监督学习 🍈基本思想 🍈具体过程 🍍数据收集 🍍数据预处理 🍍模型选择 🍍模型训练 🍍模型评估 🍍模型部署…...

深度学习500问——Chapter12:网络搭建及训练(1)

文章目录 12.1 TensorFlow 12.1.1 TensorFlow 是什么 12.1.2 TensorFlow的设计理念是什么 12.1.3 TensorFlow特点有哪些 12.1.4 TensorFlow的系统架构是怎样的 12.1.5 TensorFlow编程模型是怎样的 12.1.6 如何基于TensorFlow搭建VGG16 12.1 TensorFlow 12.1.1 TensorFlow 是什…...

HuggingFace CLI 命令全面指南

文章目录 安装与认证1.1 安装 HuggingFace Hub 库使用 pip 安装使用 conda 安装验证安装 1.2 认证与登录生成访问令牌使用访问令牌登录环境变量认证验证认证 下载文件2.1 下载单个文件安装 huggingface_hub 库认证与登录下载单个文件 2.2 下载特定版本的文件下载特定版本的文件…...

FreeRTOS源码分析

目录 1、FreeRTOS目录结构 2、核心文件 3、移植时涉及的文件 4、头文件相关 4.1 头文件目录 4.2 头文件 5、内存管理 6、入口函数 7、数据类型和编程规范 7.1 数据类型 7.2 变量名 7.3 函数名 7.4 宏的名 1、FreeRTOS目录结构 使用 STM32CubeMX 创建的 FreeRTOS 工…...

python实战:将视频内容上传到社交媒体平台

在Python中,上传视频到不同的平台可能需要使用不同的API和库。以下是一些常见的平台以及如何使用Python进行上传的示例: YouTube: 使用Google提供的YouTube Data API。 首先,你需要从Google Cloud控制台获取API密钥,并安装google-…...

【深度学习】sdwebui A1111 加速方案对比,xformers vs Flash Attention 2

文章目录 资料支撑资料结论sdwebui A1111 速度对比测试sdxlxformers 用contorlnet sdxlsdpa(--opt-sdp-no-mem-attention) 用contorlnet sdxlsdpa(--opt-sdp-attention) 用contorlnet sdxl不用xformers或者sdpa ,用contorlnet sdxl不用xformers或者sdpa …...

5分钟了解单元测试

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、什么是单元测试? 单元测试是指,对软件中的最小可测试单元在与程序其…...

VSCode之C/C++插件之宏定义导致颜色变暗

这是因为该宏没有定义或者定义在makefile文件中导致无法被插件识别到,导致误判了 索性将该机制去了,显示也会好看些,如下将C_Cpp下的Dim Inactive Regions勾去了 显示效果会好很多。...

自然语言处理概述

目录 1.概述 2.背景 3.作用 4.优缺点 4.1.优点 4.2.缺点 5.应用场景 5.1.十个应用场景 5.2.文本分类 5.2.1.一般流程 5.2.2.示例 6.使用示例 7.总结 1.概述 自然语言处理(NLP)是计算机科学、人工智能和语言学的交叉领域,旨在实…...

用Rust和Pingora轻松构建超越Nginx的高效负载均衡器

目录 什么是Pingora?实现过程 初始化项目编写负载均衡器代码代码解析部署 总结 1. 什么是Pingora? Pingora 是一个高性能的 Rust 库,用于构建可负载均衡器的代理服务器,它的诞生是为了弥补 Nginx 存在的缺陷。 Pingora 提供了…...

华为云与AWS负载均衡服务深度对比:性能、成本与可用性

随着云计算的迅速发展,企业对于云服务提供商的选择变得越来越关键。在选择云服务提供商时,负载均衡服务是企业关注的重点之一。我们九河云将深入比较两大知名云服务提供商华为云和AWS的负载均衡服务,从性能、成本和可用性等方面进行对比。 AW…...

Vue65-组件之间的传值

1、收数据 2、传数据 3、批量的数据替换 若是info里面有四个数据,传过来的dataObj里面有三个数据,则info里面也只有三个数据了 解决方式: 该写法还有一个优势:传参的时候,顺序可以随意!...

Java零基础之多线程篇:线程生命周期

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…...

技术差异,应用场景;虚拟机可以当作云服务器吗

虚拟机和云服务器是现在市面上常见的两种计算资源提供方式,很多人把这两者看成可以相互转换或者替代的物品,实则不然,这两种资源提供方式有许多相似之处,但是也有不少区别,一篇文章教你识别两者的技术差异,…...

Qt Quick 教程(一)

文章目录 1.Qt Quick2.QML3.Day01 案例main.qml退出按钮,基于上面代码添加 4.使用Qt Design StudioQt Design Studio简介Qt Design Studio工具使用版本信息 1.Qt Quick Qt Quick 是一种现代的用户界面技术,将声明性用户界面设计和命令性编程逻辑分开。 …...

react钩子函数用法(useCallback、useMemo)

useMemo import { useMemo } from react; function MyComponent({ a, b }) { const memoizedValue useMemo(() > { // 进行一些昂贵的计算 return a b; }, [a, b]); // 当 a 或 b 发生变化时&#xff0c;memoizedValue 将被重新计算 return <div>{memoizedVa…...

linux配置Vnc Server给Windows连接

1. linux 安装必要vnc server和桌面组件 sudo apt -y install tightvncserversudo apt install xfce4 xfce4-goodies2. linux 配置vncserver密码 #bash vncserver参考: https://cn.linux-console.net/?p21846#google_vignette 3. 将启动桌面命令写入.vnc/xstartup # .vnc/x…...

Android中的KeyEvent详解

介绍 在Android中&#xff0c;KeyEvent 是用来表示按键事件的类&#xff0c;可根据对应的事件来处理按键输入&#xff0c;具体包含了关于按键事件的信息&#xff0c;例如按键的代码、动作&#xff08;按下或释放&#xff09;以及事件的时间戳&#xff0c;KeyEvent 对象通常在用…...

移植案例与原理 - HDF驱动框架-驱动配置(2)

1.2.7 节点复制 节点复制可以实现在节点定义时从另一个节点先复制内容&#xff0c;用于定义内容相似的节点。语法如下&#xff0c;表示在定义"node"节点时将另一个节点"source_node"的属性复制过来。 node : source_node示例如下&#xff0c;编译后bar节点…...

年终奖发放没几天,提离职领导指责我不厚道,我该怎么办?

“年终奖都发了&#xff0c;你还跳槽&#xff1f;太不厚道了吧&#xff01;” “拿完年终奖就走人&#xff0c;这不是典型的‘骑驴找马’吗&#xff1f;” 每到岁末年初&#xff0c;关于“拿到年终奖后是否应该立即辞职”的话题总会引发热议。支持者认为&#xff0c;这是个人…...

多处理系统结构

目录 统一内存访问&#xff08;UMA&#xff09;多处理器系统结构 优点 缺点 应用场景 UMA 结构的架构示例 解决方案和改进 非统一内存访问&#xff08;NUMA&#xff09;多处理系统结构 概述 NUMA的优点 NUMA的缺点 NUMA系统的工作原理 NUMA优化策略 结论 现代计算…...

创建进程的常用方式

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在Python中有多个模块可以创建进程&#xff0c;比较常用的有os.fork()函数、multiprocessing模块和Pool进程池。由于os.fork()函数只适用于Unix/Linu…...

李宏毅2023机器学习作业HW06解析和代码分享

ML2023Spring - HW6 相关信息&#xff1a; 课程主页 课程视频 Sample code HW06 视频 HW06 PDF 个人完整代码分享: GitHub | Gitee | GitCode P.S. HW06 是在 Judgeboi 上提交的&#xff0c;出于学习目的这里会自定义两个度量的函数&#xff0c;不用深究&#xff0c;遵循 Sugge…...

专业技能篇--算法

文章目录 前言经典算法思想总结一、贪心算法二、动态规划三、回溯算法四、分治算法 前言 这篇简单理解一些常见的算法。如果面试的时候问到相关的算法&#xff0c;能够应付一二。 经典算法思想总结 一、贪心算法 思想&#xff1a;贪心算法是一种在每一步选择中都采取在当前状…...

Vue中CSS动态样式绑定

Vue中CSS动态样式绑定与注意事项_vue css动态绑定-CSDN博客 在 Vue 中&#xff0c;你不能直接在 CSS 中直接绑定 data 中的数据&#xff0c;因为 CSS 不是响应式的。但是&#xff0c;有几种方法可以实现根据 Vue 实例中的数据来动态地改变样式&#xff1a; 内联样式绑定&…...

【漏洞复现】契约锁电子签章平台 add 远程命令执行漏洞(XVE-2023-23720)

0x01 产品简介 契约锁电子签章平台是上海亘岩网络科技有限公司推出的一套数字签章解决方案。契约锁为中大型组织提供“数字身份、电子签章、印章管控以及数据存证服务”于一体的数字可信基础解决方案,可无缝集成各类系统,让其具有电子化签署的能力,实现组织全程数字化办公。通…...

计算机专业是否仍是“万金油”?

身份角度一&#xff1a;一名曾经的计算机专业学生  随着高考的结束&#xff0c;我站在了人生的分岔路口&#xff0c;面临着大学专业的选择。在众多的选择中&#xff0c;计算机专业一直是我深思熟虑后的一个重要选项。然而&#xff0c;我并不清楚自己是否真的适合这个专业&…...

Spring 启动顺序

在 Spring 框架中&#xff0c;应用启动过程涉及多个步骤和组件的初始化。理解 Spring 启动顺序不仅有助于优化应用性能&#xff0c;还能帮助开发人员排查启动过程中可能出现的问题。本文将详细介绍 Spring 启动过程中的关键步骤和顺序。 1. Spring 启动过程概述 Spring 应用的…...

2024.06.19 刷题日记

41. 缺失的第一个正数 这个题目的通过率很低&#xff0c;是一道难题&#xff0c;类似于脑筋急转弯&#xff0c;确实不好想。实际上&#xff0c;对于一个长度为 N 的数组&#xff0c;其中没有出现的最小正整数只能在 [1,N1] 中。 这个结论并不好想&#xff0c;举个例子&#x…...

linux系统中,pwd获取当前路径,dirname获取上一层路径;不使用 ../获取上一层路径

在实际项目中&#xff0c;我们通常可以使用 pwd 来获取当前路径&#xff0c;但是如果需要获取上一层路径&#xff0c;有不想使用 …/ 的方式&#xff0c;可以尝试使用 dirname指令 测试shell脚本 #!/bin/bash# 获取当前路径 CURRENT_PATH$PWD echo "CURRENT_PATH$CURREN…...

网站开发的后期支持/百度seo引流怎么做

类的生命周期中的第一步&#xff0c;就是要被 JVM 加载进内存&#xff0c;类加载器就是来干这件事。一、类加载器种类系统提供了 3 种类加载器&#xff1a;1.启动类加载器(Bootstrap ClassLoader)由 C 和 C 编写&#xff0c;是在 JVM 启动后初始化的。可在这里查看到源码(OpenJ…...

广州seo推广公司/泉州百度首页优化

经常上GitHub的朋友应该都已经知道了&#xff0c;有黑客入侵了GitHub、GitLab、Bitbucket的代码存储库&#xff0c;删除了大量用户的源代码和最近提交的内容&#xff08;已备份&#xff09;&#xff0c;并留下了支付0.1比特币的赎金留言。黑客给出了10天限期&#xff0c;要求用…...

娄底建设网站的公司/四川省最新疫情情况

Firefox - 附加组件 - 扩展 - Firebug - HTML面板 - 标记的显示也会与源代码不同&#xff0c;而是按照Firefox对文档结构的解析显示的 [示例代码] <html><body><label><div>Firebug的HTML视图中&#xff0c;既使没有javascript的操作&#xff0c;标记…...

flash 可以做网站吗/万网官网域名查询

数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时&#xff0c;在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据&#xff0c;破坏数据库的一致性。 加锁是实现数据库并发控制的一个非常重要的技术。当事务…...

设备电商网站模板/易观数据app排行

用AutoCAD的时候经常会出现虚线或者点划线显示为实线的现象。本文以虚线为例&#xff0c;说明无法显示的原因&#xff0c;及解决方法。 无法显示虚线有三个原因&#xff1a;第一&#xff0c;绘制图形尺寸相对虚线每一段的线长太小&#xff0c;导致无法显示出虚实相间的实线&…...

如何加强新闻网站建设/网站开发技术

使用rosserial_python包. 报通信错误,因为原serial_node.py及SerialClient作了修改,删除了fix_pyserial_for_test项. 使用ros自带的serial_node.py及SerialClient.py,更改一下py名字以区别,import时报错 module object is not callable 原因为Python导入模块的方法有两种&a…...