【深度学习与大模型基础】第13章-什么是机器学习
1. 什么是机器学习?
想象你在教一个小朋友认猫:
-
传统编程:你写一本《猫的100条特征手册》(比如有胡须、尖耳朵),让计算机对照检查。
-
机器学习:你直接给计算机看1000张猫和狗的图片,让它自己总结猫长什么样。
👉 核心:计算机从数据中自己找规律,而不是靠人硬编码规则。
2. 算法的“学习方式”分类
(1) 监督学习(有参考答案)
-
场景:像老师批改作业,数据带“正确答案”(标签)。
-
例子:预测考试成绩
-
输入:学习时间、游戏时间、睡眠时间
-
输出:考试分数(标签)
-
-
典型算法:线性回归(预测分数)、决策树(判断是否及格)
-
(2) 无监督学习(自己找规律)
-
场景:像让计算机自己整理杂乱的书桌,数据没有标签。
-
例子:超市顾客分组
-
输入:购买记录(没有预设类别)
-
输出:自动发现“宝妈群”“游戏宅群”等
-
-
典型算法:K-means聚类(分群)、PCA(降维,类似“删掉冗余信息”)
-
(3) 强化学习(试错拿奖励)
-
场景:像训练小狗,做对了给零食,做错了不鼓励。
-
例子:AI玩贪吃蛇
-
行为:左转/右转
-
奖励:吃到苹果+1分,撞墙-1分
-
目标:学会高分策略
-
-
3. 算法举例:用“挑西瓜”理解
假设我们要选一个甜西瓜:
-
决策树:
-
问题1:纹路深吗?深→继续问,浅→不甜
-
问题2:敲声闷吗?闷→甜,脆→不甜
(像一连串的“如果...就...”问题)
-
-
神经网络:
-
模仿人脑,同时考虑纹路、颜色、重量、产地…
-
可能发现“纹深+蒂部凹陷”的组合最甜(自动学复杂规律)
-
-
K近邻(KNN):
-
看看隔壁老王买的5个相似西瓜,如果4个甜,就猜这个也甜
(“近朱者赤”算法)
-
4. 为什么需要这么多算法?
-
数据不同:
-
有标签?用监督学习。
-
只有模糊数据?用无监督学习。
-
-
问题复杂度:
-
简单规律(比如房价和面积线性相关)→ 线性回归
-
复杂规律(比如人脸识别)→ 深度神经网络
-
5. 机器学习 vs 背公式?
-
不是死记硬背:模型要在新数据上表现好(比如学了猫的特征后,能认出网红猫“橘座”)。
-
避免“学傻了”:如果只给计算机看黑猫,它可能以为所有猫都是黑色的——这叫过拟合(考试满分但实际应用崩盘)。
6.python演示简单的机器学习
pip install numpy matplotlib scikit-learn
import numpy as np
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression# 设置随机种子(保证每次运行数据一致)
np.random.seed(42)# 生成数据:面积在30~100㎡,价格加入随机噪声
areas = np.random.randint(30, 100, 20)
prices = 1.5 * areas + 30 + np.random.normal(0, 10, len(areas))# 打印前5条数据for a, p in zip(areas[:5], prices[:5]):print(f"{a:6} | {p:.1f}")# 将数据转为二维数组(sklearn要求)
X = areas.reshape(-1, 1) # 输入特征(面积)
y = prices # 输出标签(价格)# 创建模型并训练
model = LinearRegression()
model.fit(X, y)# 打印学到的参数
print(f"模型公式:价格 = {model.coef_[0]:.2f} * 面积 + {model.intercept_:.2f}")# 绘制原始数据点
plt.scatter(areas, prices, color='blue', label='真实数据')# 绘制预测直线
predicted_prices = model.predict(X)
plt.plot(areas, predicted_prices, color='red', linewidth=2, label='预测模型')# 添加标注
plt.xlabel("房屋面积(㎡)")
plt.ylabel("价格(万元)")
plt.title("房屋价格预测(线性回归)")
plt.legend()
plt.grid(True)# 显示图形
plt.show()