机器学习 (ML) 是一种强大的工具,使计算机能够从数据中学习并进行预测或决策。但并非所有机器学习都是相同的——存在不同类型的学习,每种学习都适用于特定任务。两种最常见的类型是监督学习和无监督学习。在本文中,我们将探讨它们之间的区别,提供现实世界的例子,并逐步介绍代码片段,以帮助您了解它们的工作原理。
监督学习是什么?
监督学习是一种机器学习,其中算法从标记数据中学习。换句话说,您提供给模型的数据包括输入特征和正确的输出(标签)。目标是让模型学习输入和输出之间的关系,以便它可以对新的、未见的数据做出准确的预测。
监督学习的现实世界例子
电子邮件垃圾邮件检测:
- 输入:电子邮件的文本。
- 输出:指示电子邮件是“垃圾邮件”还是“非垃圾邮件”的标签。
- 模型学习根据标记的示例对电子邮件进行分类。
房屋价格预测:
- 输入:房屋的特征(例如,平方英尺、卧室数量、位置)。
- 输出:房屋的价格。
- 模型学习根据历史数据预测价格。
医疗诊断:
- 输入:患者数据(例如,症状、化验结果)。
- 输出:诊断(例如,“健康”或“糖尿病”)。
- 模型学习根据标记的医疗记录进行诊断。
无监督学习是什么?
无监督学习是一种机器学习,其中算法从未标记的数据中学习。与监督学习不同,没有提供正确的输出。相反,模型尝试自己找到数据中的模式、结构或关系。
无监督学习的现实世界例子
客户细分:
- 输入:客户数据(例如,年龄、购买历史、位置)。
- 输出:相似客户的群体(例如,“高频购买者”、“预算购物者”)。
- 模型识别具有相似行为的客户集群。
异常检测:
- 输入:网络流量数据。
- 输出:识别可能表明网络攻击的异常模式。
- 模型检测数据中的异常值或异常。
市场篮子分析:
- 输入:杂货店的交易数据。
- 输出:经常一起购买的产品组(例如,“面包和黄油”)。
- 模型识别产品之间的关联。
监督学习和无监督学习的主要区别
**方面** | **监督学习** | **无监督学习** |
---|---|---|
**数据** | 标记的(提供输入和输出) | 未标记的(仅提供输入) |
**目标** | 预测结果或对数据进行分类 | 发现数据中的模式或结构 |
**示例** | 分类、回归 | 聚类、降维 |
**复杂性** | 更容易评估(已知输出) | 更难评估(没有基本事实) |
**用例** | 垃圾邮件检测、价格预测 | 客户细分、异常检测 |
代码示例
让我们深入研究一些代码,看看监督学习和无监督学习在实践中的工作方式。我们将使用 Python 和流行的 Scikit-learn 库。
监督学习示例:预测房屋价格
我们将使用简单的线性回归模型根据平方英尺等特征预测房屋价格。
# 导入库 import numpy as np 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 = { 'SquareFootage': [1400, 1600, 1700, 1875, 1100, 1550, 2350, 2450, 1425, 1700], 'Price': [245000, 312000, 279000, 308000, 199000, 219000, 405000, 324000, 319000, 255000] } df = pd.DataFrame(data) # 特征 (X) 和标签 (y) X = df[['SquareFootage']] y = df['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"均方误差:{mse:.2f}")
无监督学习示例:客户细分
我们将使用 K 均值聚类算法根据客户的年龄和消费习惯对客户进行分组。
# 导入库 import numpy as np import pandas as pd from sklearn.cluster import KMeans import matplotlib.pyplot as plt # 创建样本数据集 data = { 'Age': [25, 34, 22, 45, 32, 38, 41, 29, 35, 27], 'SpendingScore': [30, 85, 20, 90, 50, 75, 80, 40, 60, 55] } df = pd.DataFrame(data) # 特征 (X) X = df[['Age', 'SpendingScore']] # 训练 K 均值聚类模型 kmeans = KMeans(n_clusters=3, random_state=42) df['Cluster'] = kmeans.fit_predict(X) # 可视化集群 plt.scatter(df['Age'], df['SpendingScore'], c=df['Cluster'], cmap='viridis') plt.xlabel('年龄') plt.ylabel('消费评分') plt.title('客户细分') plt.show()
何时使用监督学习与无监督学习
何时使用监督学习:
- 您有标记的数据。
- 您想预测结果或对数据进行分类。
- 示例:预测销售额、对图像进行分类、检测欺诈。
何时使用无监督学习:
- 您有未标记的数据。
- 您想发现隐藏的模式或结构。
- 示例:对客户进行分组、减少数据维度、查找异常。
结论
监督学习和无监督学习是机器学习中的两种基本方法,每种方法都有其自身的优势和用例。监督学习非常适合在您有标记数据时进行预测,而无监督学习在您想探索和发现未标记数据中的模式时非常出色。
通过理解差异并练习现实世界的例子(例如本文中的例子),您将掌握这些基本的机器学习技术。如果您有任何疑问或想分享您自己的经验,请随时在下方留言。
以上是监督与无监督的学习的详细内容。更多信息请关注PHP中文网其他相关文章!

2小时内可以学会Python的基本编程概念和技能。1.学习变量和数据类型,2.掌握控制流(条件语句和循环),3.理解函数的定义和使用,4.通过简单示例和代码片段快速上手Python编程。

Python在web开发、数据科学、机器学习、自动化和脚本编写等领域有广泛应用。1)在web开发中,Django和Flask框架简化了开发过程。2)数据科学和机器学习领域,NumPy、Pandas、Scikit-learn和TensorFlow库提供了强大支持。3)自动化和脚本编写方面,Python适用于自动化测试和系统管理等任务。

两小时内可以学到Python的基础知识。1.学习变量和数据类型,2.掌握控制结构如if语句和循环,3.了解函数的定义和使用。这些将帮助你开始编写简单的Python程序。

如何在10小时内教计算机小白编程基础?如果你只有10个小时来教计算机小白一些编程知识,你会选择教些什么�...

使用FiddlerEverywhere进行中间人读取时如何避免被检测到当你使用FiddlerEverywhere...

Python3.6环境下加载Pickle文件报错:ModuleNotFoundError:Nomodulenamed...

如何解决jieba分词在景区评论分析中的问题?当我们在进行景区评论分析时,往往会使用jieba分词工具来处理文�...

如何使用正则表达式匹配到第一个闭合标签就停止?在处理HTML或其他标记语言时,常常需要使用正则表达式来�...


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

记事本++7.3.1
好用且免费的代码编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。