零基础入门机器学习 -- 第一章什么是机器学习?

1.1 机器学习的定义

机器学习(Machine Learning, ML)是让计算机从数据中学习,然后在没有明确编程的情况下进行预测或决策的技术。

  • 传统编程:程序员写出明确的规则,例如“如果温度低于 0℃,显示‘结冰’”。
  • 机器学习:计算机分析历史天气数据,自行找出“低温 → 可能结冰”的规律,然后对新数据进行预测。

机器学习的核心思想是:数据 + 算法 = 经验 + 预测能力


1.2 机器学习 vs 传统编程

特点 传统编程 机器学习
规则 人工手写规则 计算机从数据中学习规则
适用范围 规则清晰、可枚举的任务 规则复杂,难以手写的任务
例子 计算器、Excel 公式 语音识别、推荐系统

示例:垃圾邮件分类

传统编程
def is_spam(email):
    if "中奖" in email or "免费" in email:
        return True
    return False

优点:逻辑清晰
缺点:如果骗子用“免 费”代替“免费”就无法识别。

机器学习
  • 机器学习不需要手写规则,而是分析大量垃圾邮件,学习出哪些词出现时,邮件是垃圾邮件的概率高(如“中奖”、“特价”)。
  • 新邮件进来后,模型根据学习到的规律自动判断。

1.3 机器学习的日常应用

1.3.1 推荐系统

  • 应用:Netflix、YouTube、淘宝、抖音。
  • 示例:你在淘宝上搜索“耳机”,几小时后,你的微博、知乎上可能会看到耳机广告。

1.3.2 语音助手

  • 应用:Siri、Google Assistant、天猫精灵。
  • 示例:Siri 识别你说的“明天下午三点提醒我开会”,并自动添加到日程。

1.3.3 人脸识别

  • 应用:手机解锁、考勤打卡、安防监控。
  • 示例:iPhone Face ID 通过分析你的五官特征,识别是不是你本人。

1.4 机器学习的分类

1.4.1 监督学习(Supervised Learning)

  • 概念:给定带标签的数据,模型学习“输入 → 输出”的映射关系。
  • 示例:猫狗分类
    • 输入:猫或狗的图片
    • 输出:标签(“猫” 或 “狗”)
  • 现实应用
    • 银行贷款审批(根据用户信用评分预测是否批准)
    • 医疗诊断(根据病人数据预测是否患病)
示例:用 Python 训练一个简单的监督学习模型
from sklearn.tree import DecisionTreeClassifier

# 训练数据:身高、体重 → 猜测是男是女
X = [[170, 65], [160, 50], [180, 80], [150, 45]]  # 特征
y = ['男', '女', '男', '女']  # 标签

# 创建决策树分类器
model = DecisionTreeClassifier()
model.fit(X, y)  # 训练模型

# 预测一个新的数据
prediction = model.predict([[175, 70]])
print("预测结果:", prediction[0])  # 可能输出:'男'

示例输出

预测结果: 男

说明

  • DecisionTreeClassifier 是决策树分类器,用于分类任务。
  • fit(X, y) 让模型学习身高体重和性别的关系。
  • predict([[175, 70]]) 预测一个新人的性别。

1.4.2 无监督学习(Unsupervised Learning)

  • 概念:数据没有标签,模型自己寻找数据的结构或模式。
  • 示例:新闻分类
    • 输入:大量新闻文章
    • 过程:算法自动发现哪些新闻内容相似,归类到一起
  • 现实应用
    • 客户群体划分(电商分析不同类型的顾客)
    • 异常检测(信用卡诈骗识别)
示例:用 Python 进行新闻聚类
from sklearn.cluster import KMeans
import numpy as np

# 假设我们有 6 篇新闻,它们的特征向量如下
X = np.array([[1, 2], [2, 3], [3, 2], [8, 9], [9, 8], [10, 10]])

# 创建 KMeans 聚类模型,分为 2 组
model = KMeans(n_clusters=2, random_state=42)
model.fit(X)

# 输出每篇新闻属于哪个类别
print("分类结果:", model.labels_)

示例输出:

分类结果: [0 0 0 1 1 1]

说明

  • KMeans(n_clusters=2) 创建 2 组聚类
  • fit(X) 训练模型,自动分类新闻
  • model.labels_ 输出每个新闻属于哪个类别

1.4.3 强化学习(Reinforcement Learning)

  • 概念:通过试错学习策略,在环境中获得最优回报。
  • 示例:游戏 AI
    • 输入:游戏环境(如《围棋》棋盘)
    • 过程:AI 试探不同走法,尝试击败对手
    • 输出:最优策略
  • 现实应用
    • AlphaGo(打败人类围棋冠军)
    • 自动驾驶(学习如何转弯、刹车)
示例:Q-Learning 玩井字棋
# 这里不写代码,强化学习代码较复杂,我们后续章节再详细介绍
print("强化学习示例后续章节介绍")

1.5 实践案例

案例 1:用 Python 画出“机器学习决策流程图”

import matplotlib.pyplot as plt
import networkx as nx

# 解决中文显示问题
plt.rcParams["font.sans-serif"] = ["SimHei"]  # Windows 和 Mac 可能需要不同字体
plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题

# 创建有向图
G = nx.DiGraph()

# 添加节点(机器学习分类)
nodes = [
    ("数据", "监督学习"),
    ("数据", "无监督学习"),
    ("数据", "强化学习"),
    ("监督学习", "分类"),
    ("监督学习", "回归"),
    ("无监督学习", "异常检测"),
    ("无监督学习", "聚类"),
    ("无监督学习", "降维"),
    ("强化学习", "策略学习"),
    ("强化学习", "价值学习"),
]

# 添加边
G.add_edges_from(nodes)

# 设置节点布局
pos = {
    "数据": (3, 4),
    "监督学习": (1, 3),
    "无监督学习": (3, 3),
    "强化学习": (5, 3),
    "分类": (0, 2),
    "回归": (1, 2),
    "异常检测": (2, 2),
    "聚类": (3, 2),
    "降维": (4, 2),
    "策略学习": (5, 2),
    "价值学习": (6, 2),
}

# 画图
plt.figure(figsize=(8, 5))
nx.draw(G, pos, with_labels=True, node_size=3000, node_color="lightblue", edge_color="gray", font_size=10, font_family="SimHei")
plt.title("机器学习决策流程图", fontsize=12)
plt.show()

示例输出:
零基础入门机器学习 -- 第一章什么是机器学习?_第1张图片

说明

  • networkx 用于画流程图
  • 结果是一个机器学习分类树

案例 2:让读者猜测身边的机器学习应用

练习题
  1. 你打开淘宝,为什么推荐的商品和你最近看的商品有关?
  2. 你收到垃圾邮件,如何判断它是不是垃圾邮件?
  3. 你的手机解锁时,Face ID 识别的是你的五官还是衣服?
  4. 你玩游戏时,为什么 AI 变得越来越强?
讲解
  • 淘宝使用推荐系统(监督学习)
  • 垃圾邮件过滤器用文本分类(监督学习)
  • Face ID 用深度学习(监督学习)
  • 游戏 AI 通过强化学习变强

总结

✅ 机器学习通过数据学习规律,代替人工编写规则
监督学习 适用于有标签数据,无监督学习 适用于无标签数据,强化学习 适用于试错优化
✅ 机器学习广泛应用于推荐系统、人脸识别、自动驾驶等领域

接下来,我们进入 “机器学习的基本流程”

你可能感兴趣的:(#,机器学习,机器学习,人工智能,python)