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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习基础】详解Pytorch搭建CNN卷积神经网络LeNet-5实现手写数字识别

目录 写在开头 一、CNN的原理 1. 概述 2. 卷积层 内参数(卷积核本身) 外参数(填充和步幅) 输入与输出的尺寸关系 3. 多通道问题 多通道输入 多通道输出 4. 池化层 平均汇聚 最大值汇聚 二、手写数字识别 1. 任务…

[C++][数据结构][图][下][最短路径]详细讲解

目录 1.最短路径1.单源最短路径 -- Dijkstra算法2.单源最短路径 -- Bellman-Ford算法3.多源最短路径 -- Floyd-Warshall算法原理 1.最短路径 最短路径问题:从在带权有向图G中的某一顶点出发,找出一条通往另一顶点的最短路径,最短也就是沿路径…

spark学习总结

系列文章目录 第1天总结:spark基础学习 1- Spark基本介绍(了解)2- Spark入门案例(掌握)3- 常见面试题(掌握) 文章目录 系列文章目录前言一、Spark基本介绍1、Spark是什么1.1 定义1.2 Spark与M…

valgrind工具的交叉编译及使用

一 概述 valgrind是一款非常好用的工具,用于检测内存泄漏等,这里讲述如何将其交叉编译到arm开发板及如何使用 【C/C 集成内存调试、内存泄漏检测和性能分析的工具 Valgrind 】Linux 下 Valgrind 工具的全面使用指南 - 知乎 (zhihu.com) valgrind: fai…

60.指针数组和数组指针

一.指针数组 指针数组是一个数组&#xff0c;在指针数组中存放的是指针变量。 定义一个指针数组p int *p[5]; 内存模型如下&#xff1a; 指针数组的初始化 #include <stdio.h>int main(void) {int a1;int b2;int c3;int i;int *p[3] {&a,&b,&c};for(i0…

Unbounded CKKS for Bits NTT with Composite Modulus

参考文献&#xff1a; [CHKKS18] Cheon J H, Han K, Kim A, et al. Bootstrapping for approximate homomorphic encryption[C]//Advances in Cryptology–EUROCRYPT 2018: 37th Annual International Conference on the Theory and Applications of Cryptographic Techniques…

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

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

RabbitMQ实践——交换器(Exchange)和绑定(Banding)

大纲 direct型交换器默认交换器命名交换器 fanout型交换器topic型交换器headers型交换器 RabbitMQ在概念上由三部分组成&#xff1a; 交换器&#xff08;Exchange&#xff09;&#xff1a;负责接收消息发布者发布消息的结构&#xff0c;同时它会根据“绑定关系”&#xff08;Ba…

52【场景作图】空间感

参考 场景绘制&#xff0c;画面空间感如何拉开&#xff1f;分分钟就能学会的场景优化思路更新啦&#xff01;_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1pa411J7Ps/?spm_id_from333.337.search-card.all.click&vd_source20db0c4e2d303527ed13c4b9cdf698ec 1 …

生活实用口语柯桥成人外语培训机构“客服”用英文怎么说?

● 01. “客服”英语怎么说&#xff1f; ● 我们都知道“客服”就是“客户服务”&#xff0c; 所以Customer Service就是#15857575376客服的意思。 但是这里的“客服”指代的不是客服人员&#xff0c; 而是一种Service服务。 如果你想要表达客服人员可以加上具体的职位&a…

Java宝藏实验资源库(1)文件

一、实验目的 掌握文件、目录管理以及文件操作的基本方法。掌握输入输出流的基本概念和流处理类的基本结构。掌握使用文件流进行文件输入输出的基本方法。 二、实验内容、过程及结果 1.显示指定目录下的每一级文件夹中的.java文件 运行代码如下 &#xff1a; import java.io.…

[C++][数据结构][图][中][图的遍历][最小生成树]详细讲解

目录 1.图的遍历1.广度优先遍历2.深度优先遍历 2.最小生成树1.Kruskal算法2.Prim算法 1.图的遍历 给定一个图G和其中任意一个顶点 v 0 v_0 v0​&#xff0c;从 v 0 v_0 v0​出发&#xff0c;沿着图中各边访问图中的所有顶点&#xff0c;且每个顶 点仅被遍历一次 “遍历”&…

# [0619] Task01 绪论、马尔可夫过程、动态规划

easy-rl PDF版本 笔记整理 P1 - P2 joyrl 比对 补充 P1 - P3 相关 代码 整理 最新版PDF下载 地址&#xff1a;https://github.com/datawhalechina/easy-rl/releases 国内地址(推荐国内读者使用)&#xff1a; 链接: https://pan.baidu.com/s/1isqQnpVRWbb3yh83Vs0kbw 提取码: us…

lib9-03 配置基于时间的 ACL

实验&#xff1a;配置基于时间的 ACL 1、实验目的 通过本实验可以掌握定义 time-range 的方法基于时间 ACL 的配置和调试方法 2、实验拓扑 实验拓扑如下图所示。本实验要求只允许主机 PC1 在周一到周五每天的 8&#xff1a;00-17&#xff1a;00 访问路由器 R3 的Telnet 服务…

Python的三种方式显示图片

from PIL import Image import numpy as np im Image.open("img.png") #方法一&#xff1a;使用PIL库显示图片 a np.array(im) imImage.fromarray(a) im.show() import matplotlib.pyplot as plt #方法二&#xff1a;使用matplotlib库显示图片 plt.imshow(a) plt.s…

Covalent实现对1000亿笔链上交易解析,支持AI长期数据可用性

在区块链与人工智能&#xff08;AI&#xff09;交汇处&#xff0c;讨论往往集中于去中心化推理和去中心化训练等方面。然而&#xff0c;这一数据的关键组成部分却一直未得到足够的重视。一个主要问题是&#xff1a;我们如何保护 AI 模型中的数据不受偏见和操纵的影响&#xff1…

linux环境编程基础学习

Shell编程&#xff1a; 相对的chmod -x xx.sh可以移除权限 想获取变量的值要掏点dollar&#xff08;&#xff04;&#xff09; 多位的话要加个花括号 运算&#xff1a;expr 运算时左右两边必须要加空格 *号多个含义必须加转义符 双引号可以加反单&#xff0c;但是发过来就不行 …

企业微信,机器人定时提醒

场景&#xff1a; 每天定时发送文字&#xff0c;提醒群成员事情&#xff0c;可以用机器人代替 人工提醒。 1&#xff09;在企业微信&#xff0c;创建机器人 2&#xff09;在腾讯轻联&#xff0c;创建流程&#xff0c;选择定时任务&#xff0c;执行操作&#xff08;企业微信机…

秋招突击——6/19——新作{括号生成、合并K个排序链表}

文章目录 引言新作括号生成个人实现实现时遇到的问题实现代码 参考思路实现代码 合并K个有序链表个人实现实现代码 参考实现实现代码 总结 引言 今天把第二篇论文投了&#xff0c;后续有审稿意见再说&#xff0c;然后在进行修改的。后续的生活要步入正轨了&#xff0c;每天刷题…

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 工…