写在前面
欢迎回到我们的Python学习系列!在之前的旅程中,我们掌握了Python的基础语法,并学会了使用NumPy处理数据、利用Matplotlib将数据转化为直观的图表。这些技能就像学会了辨认食材和使用厨具,是做出美味佳肴的前提。
现在,我们将推开一扇新的大门,探索一个充满智能与自动化的领域——机器学习(Machine Learning, ML)。
本章的目标是为你构建一个坚实、清晰的机器学习认知框架。我们不会立即深入复杂的算法代码,而是先厘清基本概念:
通过本章的学习,你将能够理解机器学习项目的整体脉络,为后续动手使用 scikit-learn 等工具库打下坚实的基础。
记住:好的开始是成功的一半,让我们从建立正确的“世界观”开始。
在上一篇文章的结尾,我们布置了一个实践作业,要求使用Matplotlib对一份模拟的“月度产品销量与用户评分”数据创建可视化报告。现在,我们来揭晓答案。
import matplotlib.pyplot as plt
import numpy as np
# 模拟数据:12个月的数据
months = np.arange(1, 13) # 1月到12月
sales = np.array([120, 135, 148, 165, 190, 210, 205, 198, 185, 170, 155, 140]) # 销量(单位:千)
ratings = np.array([4.2, 4.3, 4.5, 4.6, 4.7, 4.8, 4.75, 4.7, 4.6, 4.5, 4.4, 4.3]) # 平均评分
# 1. 创建画布和子图(1行2列)
fig, axs = plt.subplots(1, 2, figsize=(14, 5)) # figsize控制整个画布的宽度和高度
# 2. 绘制左子图:月度销量折线图
axs[0].plot(months, sales, marker='o', color='steelblue', linewidth=2, label='月度销量')
axs[0].set_title('2023年度产品月度销量趋势', fontsize=14, fontweight='bold')
axs[0].set_xlabel('月份', fontsize=12)
axs[0].set_ylabel('销量(千)', fontsize=12)
axs[0].grid(True, linestyle='--', alpha=0.7) # 添加网格线
axs[0].legend()
axs[0].set_xticks(months) # 设置x轴刻度为1-12月
# 3. 绘制右子图:月度评分柱状图
bars = axs[1].bar(months, ratings, color='lightcoral', edgecolor='darkred')
axs[1].set_title('2023年度产品月度平均用户评分', fontsize=14, fontweight='bold')
axs[1].set_xlabel('月份', fontsize=12)
axs[1].set_ylabel('平均评分', fontsize=12)
axs[1].grid(True, axis='y', linestyle='--', alpha=0.7) # 仅添加y轴网格
axs[1].set_xticks(months)
# 在柱子上方添加评分数值
for bar, rating inzip(bars, ratings):
height = bar.get_height()
axs[1].text(bar.get_x() + bar.get_width()/2., height + 0.02,
f'{rating:.2f}', ha='center', va='bottom', fontsize=9)
# 4. 优化整体布局
plt.tight_layout() # 自动调整子图参数,使它们适应画布区域,避免标签重叠
plt.show()
执行上述代码后,将生成一张包含左右两个子图的清晰图表:
整个图表布局紧凑,标题、标签、网格线齐全,达到了直观展示数据关联与趋势的作业目标。
掌握了数据可视化,我们的数据已经“会说话”了。接下来,我们要让计算机从这些数据中“学习”规律并做出预测或决策,这就是机器学习的魅力。
首先,让我们理清几个常被混用的概念:
人工智能(Artificial Intelligence, AI)
机器学习(Machine Learning, ML)
深度学习(Deep Learning, DL)
简单关系:AI ⊃ ML ⊃ DL。深度学习是机器学习的一种,而机器学习是实现人工智能的重要方式。
理解机器学习,可以从它与传统编程的区别入手:
| 传统编程(基于规则) | 规则 | 结果 | |
| 机器学习(基于模型) | 数据 | 模型(新规则) |
举例对比:
核心区别:机器学习的关键在于,规则(模型)是由机器从数据中自动归纳的,尤其适用于规则复杂、难以手动定义的场景(如人脸识别、股票预测)。
要进入ML领域,需要熟悉它的基本词汇:
根据学习方式的不同,机器学习主要分为以下几类:
有监督学习(Supervised Learning)
无监督学习(Unsupervised Learning)
半监督学习(Semi-supervised Learning)
强化学习(Reinforcement Learning)
一个典型的机器学习项目遵循一个相对标准的工作流:
特征工程被许多从业者认为是机器学习项目中最耗时、也最具创造性的部分。
是什么?
就像厨师烹饪前要对食材进行洗、切、腌制等处理一样,特征工程是对数据进行清洗、转换、组合、创造新特征的过程。
为什么重要?
数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限。 好的特征能够显著提升模型性能,甚至比选择更复杂的算法更有效。
简单例子:
在训练模型时,我们常会遇到两个核心问题:
| 过拟合(Overfitting) | 好比死记硬背了所有习题答案,却不会解新题。 | ||
| 欠拟合(Underfitting) | 好比连课本上的基本例题都没掌握。 |
核心目标:在拟合数据规律和保持泛化能力之间取得平衡。
为了检验你对上述概念的理解,请尝试回答以下问题。
请注意:本次作业仅基于本文介绍的机器学习概念,无需编写任何代码。
某电商平台希望建立一个系统,能够根据用户的浏览历史、购买记录、人口统计信息等,自动将用户归类到不同的“客户价值群体”(如“高价值活跃用户”、“潜在流失用户”、“价格敏感型用户”),以便进行精准营销。
问题类型判断
特征与标签识别
数据集划分
现象诊断
请思考后写下你的答案。这将帮助你巩固本章的核心概念。
| 领域关系 | 人工智能(AI) | |
| 机器学习(ML) | ||
| 深度学习(DL) | ||
| 核心术语 | 样本(Sample) | |
| 特征(Feature) | ||
| 标签(Label) | ||
| 训练集(Training Set) | ||
| 测试集(Test Set) | ||
| 评估指标(Evaluation Metric) | ||
| 学习类型 | 有监督学习 | |
| 无监督学习 | ||
| 半监督学习 | ||
| 强化学习 | ||
| 关键流程 | 特征工程 | |
| 常见问题 | 过拟合(Overfitting) |
请在微信客户端打开