新手福音:快马AI带你三步上手YAML、Properties等主流配置文件
2026/6/6 17:47:07
学习目标:理解机器学习的本质,掌握监督/无监督学习的区别,理解训练集/测试集的重要性
预计时间:20分钟
前置知识:Python基础,Numpy基础
机器学习本质 → 学习方式分类 → 核心术语(训练/测试/过拟合)生活类比:
- 传统编程就像是照菜谱做菜。你告诉电脑每一步怎么切、怎么炒(规则),给它食材(数据),它给你做出一道菜(结果)。
- 机器学习就像是教徒弟做菜。你给徒弟尝100道好吃的菜(数据+结果),让他自己去琢磨其中的规律(模型),最后他学会了做菜(规则)。
核心区别:
规则+数据= 输出答案数据+答案= 输出规则(这个规则就是模型)当规则太复杂,人类无法显式写出代码时。
机器学习主要分为三种学习方式,我们可以用学生的学习方式来类比。
类比:老师在课堂上讲题,每道题都给出了标准答案。学生通过练习这些带答案的题目来学习,考试时做新题。
类比:老师给了一堆古文,但没给翻译和注释,让学生自己去发现其中的规律(比如哪些字经常一起出现,文章的风格分类)。
类比:训练狗狗。做对了给骨头(奖励),做错了打屁股(惩罚)。狗狗通过不断尝试,学会了怎么做能得到最多的骨头。
生活类比:
- 训练集 (Training Set)=课本例题。平时上课用来学习知识的。
- 验证集 (Validation Set)=模拟考试。学完一章后用来调整学习方法,看看自己掌握得怎么样的。
- 测试集 (Test Set)=高考。最后一次真正的考核,考完才知道最终水平,且不能再改了。
黄金法则:千万不能让模型在训练的时候看到测试集的数据!(否则就是作弊,平时满分,高考挂科)。
在Scikit-learn中,我们通常使用train_test_split。
importnumpyasnpfromsklearn.model_selectionimporttrain_test_split# 1. 模拟生成 100 条数据# X 是特征 (比如:学习时长, 刷题量)# y 是标签 (比如:考试分数)X=np.random.rand(100,2)y=np.random.rand(100)# 2. 切分数据集# test_size=0.2 表示 20% 的数据用来考试(测试集),80% 用来学习(训练集)# random_state=42 是为了保证每次切分的结果一样 (42是程序员的宇宙终极答案)X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=42)print(f"原始数据量:{len(X)}")print(f"训练集数据量:{len(X_train)}(用于学习)")print(f"测试集数据量:{len(X_test)}(用于评估)")这是机器学习中最头疼的两个问题。
生活类比:
- 欠拟合 (Underfitting)=学渣。书没看懂,例题做不对,考试也挂科。模型太简单,抓不住数据的规律。
- 过拟合 (Overfitting)=书呆子/死记硬背。把课本上的例题连标点符号都背下来了(在训练集上表现完美),但是稍微变一下题目就不会了(在测试集上表现很差)。泛化能力弱。
- 刚刚好 (Good Fit)=学霸。理解了原理,举一反三。
图解:
欠拟合 刚刚好 过拟合 (直线拟合曲线) (曲线拟合曲线) (乱七八糟的折线) 📉 📈 📊 太简单 完美 太复杂我们追求的是:低偏差 + 低方差。但这很难,通常需要权衡。