查看全课大纲(第 91 / 101 节)
  1. 1.数据分析基本概念
  2. 2.学习数据分析的一般路线
  3. 3.数据分析的流程
  4. 4.数据类型
  5. 5.环境部署(1)
  6. 6.环境部署(2)
  7. 7.课程介绍
  8. 8.TXT文件操作
  9. 9.JSON文件操作
  10. 10.CSV文件操作
  11. 11.Excel文件操作
  12. 12.数据库及SQL常用语法
  13. 13.数据库基本操作
  14. 14.数据库多表连接
  15. 15.实战:欧洲职业足球数据库分析
  16. 16.爬虫简介
  17. 17.URL管理模块
  18. 18.网页下载模块
  19. 19.网页解析模块(1)
  20. 20.网页解析模块(2)
  21. 21.Scrapy简介
  22. 22.Scrapy使用步骤(1)
  23. 23.Scrapy使用步骤(2)
  24. 24.Scrapy使用步骤(3)
  25. 25.Scrapy使用步骤(4)
  26. 26.实战:获取国内城市空气质量指数数据
  27. 27.NumPy和SciPy介绍
  28. 28.多维数组
  29. 29.多维数组操作
  30. 30.NumPy的常用方法
  31. 31.向量化介绍
  32. 32.向量化及通用函数
  33. 33.实战:2016美国大选分析
  34. 34.数据结构-Series
  35. 35.数据结构-DataFrame
  36. 36.数据结构-Index
  37. 37.Series的索引操作
  38. 38.DataFrame的索引操作
  39. 39.索引操作总结
  40. 40.运算与对齐
  41. 41.函数应用操作(1) -- map
  42. 42.函数应用操作 (2) -- apply applymap
  43. 43.文件读写操作
  44. 44.排序操作
  45. 45.数据清洗--处理缺失数据
  46. 46.数据清洗--处理重复数据
  47. 47.数据清洗--替换数据
  48. 48.常用统计方法(1) -- describe quantile
  49. 49.常用统计方法(2) -- sum mean median count
  50. 50.常用统计方法(3) -- max min idxmax idxmin
  51. 51.常用统计方法(4) -- mad var std cumsum
  52. 52.实战:全球食品数据分析
  53. 53.层级索引
  54. 54.分组与聚合介绍
  55. 55.分组操作(1) -- GroupBy对象及常用聚合操作
  56. 56.分组操作(2) -- 自定义分组及聚合操作
  57. 57.透视表介绍
  58. 58.透视表操作
  59. 59.数据规整(1) -- 数据合并concat
  60. 60.数据规整(2) -- 数据连接merge
  61. 61.数据重构(3) -- 数据重构stack unstack
  62. 62.实战:互联网电影资料库分析
  63. 63.探索性数据分析EDA介绍
  64. 64.EDA的目的
  65. 65.EDA常用工具
  66. 66.Matplotlib绘图基本介绍
  67. 67.Matplotlib画布
  68. 68.散点图和柱状图的绘制
  69. 69.直方图的绘制
  70. 70.矩阵绘图
  71. 71.子图的使用
  72. 72.Matplotlib颜色、标记、线型
  73. 73.Matplotlib坐标刻度、标签、图例、标题
  74. 74.Seaborn介绍
  75. 75.数据集分布可视化(1) -- 单变量分布、双变量分布
  76. 76.数据集分布可视化(2) -- 变量关系可视化
  77. 77.类别数据可视化 -- 类别散布图、类别内数据分布、类别内统计图
  78. 78.交互式数据可视化工具Bokeh介绍
  79. 79.Bokeh绘制散点图、柱状图、盒子图、弦图
  80. 80.Bokeh绘制常用图形元素
  81. 81.3D绘图 -- mplot3d
  82. 82.3D曲线可视化
  83. 83.3D散点图可视化
  84. 84.3D柱状图可视化
  85. 85.Pandas绘图
  86. 86.实战:Lending Club借贷数据探索性分析及可视化
  87. 87.机器学习介绍及应用场景
  88. 88.机器学习建模介绍 (1) -- 分类
  89. 89.机器学习建模介绍 (2) -- 回归
  90. 90.机器学习建模介绍 (3) -- 聚类
  91. 91.机器学习分类
  92. 92.机器学习工具scikit-learn
  93. 93.使用scikit-learn的流程
  94. 94.数据集准备及划分
  95. 95.模型选择
  96. 96.数据预处理及特征工程
  97. 97.过拟合与欠拟合
  98. 98.模型调参介绍
  99. 99.模型调参方法
  100. 100.模型测试及评价
  101. 101.实战:通过移动设备行为数据预测性别和年龄

机器学习分类

约 5 分钟

📺 正在播放小象学院官方高清录播(支持倍速与清晰度调节)

机器学习分类:监督学习与无监督学习

小象实战讲义 · Python数据分析实战

在上一节中,我们按照任务类型将机器学习分为分类、回归和聚类。本节我们将从另一个重要维度——数据本身出发,学习如何根据样本是否包含标签来对机器学习进行分类。理解这一分类方式是选择正确算法、构建有效模型的基础。

💡 核心导读

  • 分类新维度:从“任务分类”转向“数据分类”,理解两种分类体系的互补关系。
  • 监督学习:训练数据包含明确标签(如“是鸭子/不是鸭子”),模型学习从特征到标签的映射关系。
  • 无监督学习:训练数据只有特征、没有标签,模型自主发现数据中的内在结构和模式。
  • 典型场景:分类/回归问题属于监督学习,聚类问题属于无监督学习。
  • 实践意义:根据手头数据的“标签完整性”选择合适的学习范式。

两种分类体系的区别与联系

在机器学习入门阶段,我们常常会遇到两种不同的“分类”说法,这可能会让初学者感到困惑。让我们先理清这两种分类体系的区别:

按任务分类(上一节内容):

  • 分类问题:预测离散的类别标签(如“是/否”、“A/B/C”)
  • 回归问题:预测连续的数值(如房价、温度)
  • 聚类问题:将相似数据点分组,不预测具体标签

按样本分类(本节重点):

  • 监督学习:训练样本包含对应的“标签”
  • 无监督学习:训练样本不包含“标签”

这两种分类体系是正交的、互补的。任务分类告诉我们“要解决什么问题”,而样本分类告诉我们“有什么样的数据可用”。在实际项目中,我们通常需要同时考虑这两个维度来选择合适的方法。

监督学习:有标签的数据训练

监督学习的核心特点是:训练数据中每个样本都包含特征和对应的标签。模型的任务是学习从特征到标签的映射关系,以便对新的、未见过的数据做出准确预测。

监督学习的基本流程

# 示例:监督学习数据构造(鸭子识别问题)
import pandas as pd

# 构造一个有标签的数据集
# 特征:是否有羽毛、是否有长脖子、是否会游泳
# 标签:是否为鸭子(1表示是,0表示不是)
data_supervised = {
    '有羽毛': [1, 1, 0, 0, 1, 0],
    '有长脖子': [1, 1, 0, 0, 1, 0],
    '会游泳': [1, 1, 0, 1, 1, 0],
    '是否为鸭子': [1, 1, 0, 0, 1, 0]  # 这是标签列
}

df_supervised = pd.DataFrame(data_supervised)
print("监督学习训练数据(含标签):")
print(df_supervised)
print(f"\n数据类型:{type(df_supervised).__name__}")
监督学习训练数据(含标签):
   有羽毛  有长脖子  会游泳  是否为鸭子
0    1     1    1      1
1    1     1    1      1
2    0     0    0      0
3    0     0    1      0
4    1     1    1      1
5    0     0    0      0

数据类型:DataFrame

监督学习的两种主要任务

监督学习根据标签的类型,又可以细分为两类:

  1. 分类问题:标签是离散的类别

    • 二分类:如垃圾邮件识别(是/否)、疾病诊断(阳性/阴性)
    • 多分类:如手写数字识别(0-9)、图像分类(猫/狗/鸟)
  2. 回归问题:标签是连续的数值

    • 如房价预测、销售额预测、温度预测
# 示例:分类与回归问题的数据对比
import numpy as np

# 分类问题数据示例(离散标签)
classification_data = {
    '特征1': [1.2, 2.3, 3.1, 4.5, 5.0],
    '特征2': [0.5, 1.2, 2.1, 3.0, 3.5],
    '类别标签': ['A', 'B', 'A', 'C', 'B']  # 离散值
}

# 回归问题数据示例(连续标签)
regression_data = {
    '特征1': [1.2, 2.3, 3.1, 4.5, 5.0],
    '特征2': [0.5, 1.2, 2.1, 3.0, 3.5],
    '数值标签': [10.5, 22.3, 31.8, 45.2, 50.1]  # 连续值
}

print("分类问题标签类型示例:", classification_data['类别标签'])
print("回归问题标签类型示例:", regression_data['数值标签'])
分类问题标签类型示例: ['A', 'B', 'A', 'C', 'B']
回归问题标签类型示例: [10.5, 22.3, 31.8, 45.2, 50.1]

监督学习的应用场景

监督学习广泛应用于各种需要预测的领域:

  • 图像识别:给定图片,判断内容(如是否为鸭子)
  • 自然语言处理:文本分类、情感分析
  • 医疗诊断:根据症状和检查结果预测疾病
  • 金融风控:根据用户信息预测违约风险

无监督学习:无标签的数据探索

无监督学习的核心特点是:训练数据只有特征,没有标签。模型的任务是自主发现数据中的内在结构、模式或关系,而不是学习预测特定的标签。

无监督学习的基本流程

# 示例:无监督学习数据构造(动物特征聚类)
import pandas as pd

# 构造一个无标签的数据集,只有特征
data_unsupervised = {
    '有羽毛': [1, 1, 0, 0, 1, 0],
    '有长脖子': [1, 1, 0, 0, 1, 0],
    '会游泳': [1, 1, 0, 1, 1, 0],
    # 注意:这里没有“是否为鸭子”的标签列
}

df_unsupervised = pd.DataFrame(data_unsupervised)
print("无监督学习训练数据(无标签):")
print(df_unsupervised)
print(f"\n数据形状:{df_unsupervised.shape}")
print(f"列名:{list(df_unsupervised.columns)}")
无监督学习训练数据(无标签):
   有羽毛  有长脖子  会游泳
0    1     1    1
1    1     1    1
2    0     0    0
3    0     0    1
4    1     1    1
5    0     0    0

数据形状:(6, 3)
列名:['有羽毛', '有长脖子', '会游泳']

无监督学习的主要任务

无监督学习最常见的任务是聚类分析,但还包括其他类型:

  1. 聚类分析:将相似的数据点分组

    • 如客户分群、文档主题发现、图像分割
  2. 降维:减少数据特征的数量,同时保留重要信息

    • 如主成分分析(PCA)、t-SNE
  3. 关联规则学习:发现数据项之间的有趣关系

    • 如购物篮分析(啤酒和尿布)
  4. 异常检测:识别与大多数数据显著不同的数据点

聚类分析示例

在视频中提到的鸭子、兔子、刺猬的例子中,无监督学习算法会:

  1. 分析所有图片的特征(颜色、形状、纹理等)
  2. 计算图片之间的相似度
  3. 将相似的图片自动分组
  4. 最终可能发现三组:鸭子组、兔子组、刺猬组

这个过程完全不需要人工标注“这是鸭子”、“这是兔子”,算法通过数据自身的特征就能发现这些自然分组。

# 示例:聚类结果的简单表示
# 假设经过无监督学习后,数据被分为3类
clustering_result = {
    '数据点': ['图片1', '图片2', '图片3', '图片4', '图片5', '图片6'],
    '聚类标签': [0, 0, 1, 2, 0, 1]  # 算法自动分配的聚类编号
}

print("聚类分析结果:")
for i in range(len(clustering_result['数据点'])):
    point = clustering_result['数据点'][i]
    cluster = clustering_result['聚类标签'][i]
    print(f"{point} → 属于第{cluster}类")
聚类分析结果:
图片1 → 属于第0类
图片2 → 属于第0类
图片3 → 属于第1类
图片4 → 属于第2类
图片5 → 属于第0类
图片6 → 属于第1类

监督学习 vs 无监督学习:对比总结

为了更清晰地理解两者的区别,我们通过一个对比表格来总结:

+------------------+----------------------+----------------------+
| 对比维度         | 监督学习             | 无监督学习           |
+------------------+----------------------+----------------------+
| 训练数据         | 特征 + 标签          | 只有特征             |
| 学习目标         | 学习特征到标签的映射 | 发现数据内在结构     |
| 主要任务         | 分类、回归           | 聚类、降维、关联分析 |
| 需要人工标注     | 是                   | 否                   |
| 结果评估         | 有明确标准(准确率) | 较主观,依赖业务解释 |
| 典型算法         | 决策树、SVM、逻辑回归| K-Means、PCA、DBSCAN |
| 应用场景         | 预测、识别           | 探索、分组、压缩     |
+------------------+----------------------+----------------------+

实际项目中的选择策略

在实际数据分析项目中,选择监督学习还是无监督学习,主要取决于:

  1. 数据可用性:是否有高质量的标注数据?
  2. 业务目标:是要预测具体结果,还是探索数据模式?
  3. 资源限制:标注数据需要时间和成本,是否值得投入?

很多时候,两者可以结合使用。例如:

  • 先用无监督学习对客户进行分群
  • 再对每个客户群分别建立监督学习模型进行预测

📝 动手练一练

  1. 概念辨析:假设你有一批电商用户的行为数据(浏览记录、购买记录、停留时间等),但没有用户的性别、年龄等人口统计信息。现在需要将这些用户分成不同的群体以便进行精准营销。这种情况下,应该选择监督学习还是无监督学习?为什么?
👉 点击查看参考答案

应该选择无监督学习。

原因分析:

  • 数据特点:只有用户行为特征(浏览记录、购买记录等),没有明确的标签(如用户属于哪个群体)
  • 业务目标:是探索性地将用户分组,而不是预测某个已知的标签
  • 适合算法:聚类分析(如K-Means)可以基于用户行为的相似性自动发现用户群体
  • 后续工作:聚类完成后,可以分析每个群体的特征,然后制定针对性的营销策略

这种场景下,我们不知道用户应该分成几类,也不知道每类的具体特征,需要通过数据本身来发现这些信息,这正是无监督学习的用武之地。

  1. 数据构造练习:请构造一个适合监督学习的小型数据集,要求包含:

    • 至少3个特征列
    • 1个二分类标签列(0/1)
    • 总共5个样本

    用Python代码创建这个DataFrame并打印出来。

👉 点击查看参考答案
import pandas as pd

# 构造监督学习数据集示例:学生考试通过预测
# 特征:学习时长(小时)、练习题目数、课前预习(1是/0否)
# 标签:是否通过考试(1通过/0未通过)
student_data = {
    '学习时长': [20, 15, 30, 10, 25],
    '练习题目数': [50, 30, 80, 20, 70],
    '课前预习': [1, 0, 1, 0, 1],
    '通过考试': [1, 0, 1, 0, 1]  # 二分类标签
}

df_students = pd.DataFrame(student_data)
print("学生考试通过预测数据集:")
print(df_students)
print(f"\n数据集形状:{df_students.shape}")
学生考试通过预测数据集:
   学习时长  练习题目数  课前预习  通过考试
0    20     50     1     1
1    15     30     0     0
2    30     80     1     1
3    10     20     0     0
4    25     70     1     1

数据集形状:(5, 4)

这个数据集包含了3个特征和1个二分类标签,符合监督学习的要求。可以用于训练一个分类模型来预测学生是否能通过考试。

本章小结

本节我们学习了机器学习的另一种重要分类方式——根据样本是否包含标签,将机器学习分为监督学习和无监督学习。这是选择合适算法、构建有效模型的关键决策点。

核心要点回顾

  • 监督学习:使用有标签的数据进行训练,学习特征到标签的映射关系,主要用于预测任务(分类和回归)。
  • 无监督学习:使用无标签的数据进行训练,自主发现数据的内在结构和模式,主要用于探索任务(聚类、降维等)。
  • 两种分类体系:任务分类(分类/回归/聚类)和样本分类(监督/无监督)是正交的、互补的视角。
  • 实际应用:分类和回归问题属于监督学习,聚类问题属于无监督学习。

📋 行动清单

  • 回顾自己手头的数据分析项目,明确数据是否包含标签,判断适合监督学习还是无监督学习
  • 尝试用Python构造一个小型的监督学习数据集和无监督学习数据集,体会两者的区别
  • 思考一个实际业务问题,分别从监督学习和无监督学习的角度设计解决方案

理解监督学习与无监督学习的区别,是迈向实际机器学习应用的重要一步。在接下来的课程中,我们将深入scikit-learn库,学习如何具体实现这些学习算法。

—— 小象教研组

配套资料 · 直接下载

课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。

  • 本节课件:机器学习分类
    PDF · 312KB
    下载
  • 全套课件打包(第1-5章)
    ZIP · 12.8MB
    下载
  • 全套课件打包(第6-8章)
    ZIP · 15MB
    下载
  • 实战数据集:AppleStore 应用商城分析
    ZIP · 329KB
    下载
  • 实战数据集:女性服装电商分析
    ZIP · 2.8MB
    下载
  • Python 数据分析环境搭建指南
    PDF · 2MB
    下载
  • Scrapy 安装教程
    PDF · 12.7MB
    下载
  • 附加实战项目:AppleStore 应用商城数据分析
    ZIP · 0.3MB · ipynb + CSV 数据
    下载
  • 附加实战项目:银行电话营销数据分析
    ZIP · 0.4MB · ipynb + CSV 数据
    下载
  • 附加实战项目:女性服装电商评论数据分析
    ZIP · 2.7MB · ipynb + CSV 数据
    下载
  • 附加实战项目:美国化学学会杂志数据分析
    ZIP · 34.2MB · ipynb + SQLite 数据库
    下载