Lazy loaded image
[机器学习]小白0基础必看
字数 5111阅读时长 13 分钟
2026-1-20
2026-1-20
type
status
date
slug
summary
tags
category
icon
password
文件和媒体

机器学习入门教程——从零开始

🎯 教程说明

本教程专为零基础的初学者设计。我们将从最基础的概念开始,逐步深入到实践应用。学完本教程后,你将能够理解机器学习的核心原理,并独立完成简单的机器学习项目。

📚 第一章:什么是机器学习

1.1 通俗理解机器学习

想象你在教一个小孩认识水果。你不会给他一本关于"苹果的

机器学习完整入门教程 - 从零开始

🎯 教程说明

本教程专为完全没有机器学习基础的初学者设计。我们将从最基础的概念开始,逐步深入到实践应用。学完本教程后,你将能够理解机器学习的核心原理,并能独立完成简单的机器学习项目。

📚 第一章:什么是机器学习

1.1 通俗理解机器学习

想象你在教一个小孩认识水果。你不会给他一本关于"苹果的定义"的书,而是会拿出许多苹果,告诉他"这是苹果"。看过足够多的苹果后,小孩就能自己识别出新的苹果了。
机器学习就是这样一个过程:我们不是明确告诉计算机规则,而是给它大量的数据(例子),让它自己总结出规律。

1.2 机器学习的正式定义

机器学习是一种让计算机通过经验自动改进性能的技术。更具体地说,一个程序被认为能从经验E中学习,解决任务T,达到性能度量P,当且仅当,有了经验E后,经过P评判,程序在处理T时的性能有所提升。

1.3 为什么需要机器学习

传统编程的局限性体现在很多场景:
传统编程方式: 程序员编写明确的规则 → 计算机执行规则 → 得到结果
机器学习方式: 提供大量数据和答案 → 计算机自己学习规律 → 对新数据做出预测
机器学习特别适合以下场景:规则太复杂难以手工编写(如图像识别、语音识别),规则会随时间变化(如股票预测、推荐系统),需要个性化定制(如个性化推荐)。

1.4 机器学习的应用实例

机器学习已经深入我们的日常生活:你刷抖音时看到的推荐视频,Gmail自动分类垃圾邮件,手机上的人脸解锁,淘宝根据你的浏览历史推荐商品,Siri或小爱同学的语音识别,自动驾驶汽车,以及医疗影像辅助诊断。

📊 第二章:机器学习的分类

2.1 监督学习(Supervised Learning)

监督学习就像有老师指导的学习。我们给模型提供输入数据和对应的正确答案(标签),让模型学习它们之间的关系。
分类问题(Classification)示例: 给定一封邮件的内容,判断它是垃圾邮件还是正常邮件。给定一张照片,识别照片中是猫还是狗。给定病人的检查报告,判断是否患有某种疾病。
回归问题(Regression)示例: 根据房屋面积、位置等信息预测房价。根据历史数据预测明天的温度。根据广告投入预测销售额。

2.2 无监督学习(Unsupervised Learning)

无监督学习就像自学,没有标准答案,模型需要自己发现数据中的模式和结构。
聚类(Clustering): 将相似的数据自动分组。例如,将购物网站的用户按购买行为分成不同群体,将新闻文章按主题自动分类,以及市场细分。
降维(Dimensionality Reduction): 保留数据的主要特征,去除冗余信息。例如数据可视化和数据压缩。

2.3 强化学习(Reinforcement Learning)

强化学习就像训练宠物,通过奖励和惩罚来引导行为。代理(Agent)在环境中采取行动,根据行动的结果获得奖励或惩罚,学习如何最大化长期奖励。
应用示例: 游戏AI(如AlphaGo),机器人控制,以及自动驾驶。

🔧 第三章:开始之前的准备

3.1 需要的数学基础

虽然机器学习涉及数学,但作为初学者,你只需要了解基本概念。
线性代数基础: 向量和矩阵的概念,矩阵乘法的基本操作。
概率统计基础: 平均值、中位数、标准差,概率的基本概念,以及正态分布。
微积分基础(可选): 导数的概念,理解"梯度下降"时会用到。
不要被数学吓倒!现代机器学习框架已经帮我们处理了大部分数学计算。

3.2 编程语言选择

Python是机器学习的首选语言,原因包括:简单易学,语法接近自然语言,丰富的机器学习库(Scikit-learn、TensorFlow、PyTorch),活跃的社区支持。

3.3 环境搭建

方案一:在线环境(推荐新手)
使用Google Colab,完全免费,无需安装任何软件,提供免费GPU,可以直接在浏览器中运行。访问 colab.research.google.com,需要Google账号即可使用。
方案二:本地环境
安装步骤:下载并安装Anaconda(Python数据科学平台),打开Anaconda Navigator,启动Jupyter Notebook,就可以开始编程了。

3.4 必备的Python库


🎓 第四章:第一个机器学习项目

4.1 项目目标

我们预测鸢尾花的种类。这是机器学习的"Hello World"项目,使用花瓣和花萼的尺寸来预测鸢尾花属于哪个品种。

4.2 数据集介绍

鸢尾花数据集包含150个样本,3个品种(Setosa、Versicolor、Virginica),每个样本有4个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度)。

4.3 完整代码实现

4.4 代码详解

让我们逐步理解每个步骤。
数据加载: iris.data包含所有特征(花瓣、花萼尺寸),iris.target包含标签(0、1、2代表三个品种)。
数据探索: 使用head()查看前几行数据,使用describe()获取统计信息(平均值、标准差等),通过散点图可视化不同品种的分布。
数据分割: train_test_split将数据分成训练集和测试集。训练集用于让模型学习,测试集用于评估模型性能。test_size=0.2表示20%的数据作为测试集,random_state=42确保每次运行结果一致。
特征缩放: 不同特征的数值范围可能差异很大,标准化使所有特征都在相似的范围内,有助于模型更好地学习。fit_transform在训练集上学习缩放参数并应用,transform使用相同参数缩放测试集。
模型训练: K近邻算法的原理是找到与新样本最接近的K个训练样本,根据这K个样本的标签投票决定新样本的类别。n_neighbors=3表示考虑最近的3个邻居。
模型评估: 准确率表示预测正确的样本占总样本的比例。分类报告提供精确率、召回率、F1分数等详细指标。

📈 第五章:机器学习的核心概念

5.1 特征(Features)

特征是用来描述数据的属性。在鸢尾花例子中,花瓣长度、花瓣宽度就是特征。
特征工程: 特征选择是选择对预测最有用的特征,特征创建是从现有特征创建新特征(如将"年"和"月"合并为"年龄"),特征转换则是对特征进行数学变换(如取对数、标准化)。

5.2 标签(Labels)

标签是我们想要预测的目标。在监督学习中,训练数据包含标签,测试时我们预测未知数据的标签。分类问题的标签是离散的类别,回归问题的标签是连续的数值。

5.3 训练集、验证集、测试集

训练集(Training Set): 用于训练模型,让模型学习数据中的模式,通常占总数据的60-80%。
验证集(Validation Set): 用于调整模型参数(超参数),帮助选择最佳模型,通常占总数据的10-20%。
测试集(Test Set): 用于最终评估模型性能,模型从未"见过"这些数据,通常占总数据的10-20%。
为什么需要分割: 如果用同一份数据训练和测试,模型可能"记住"数据而不是"理解"规律,这叫过拟合。使用独立的测试集可以真实评估模型的泛化能力。

5.4 过拟合与欠拟合

欠拟合(Underfitting): 模型太简单,无法捕捉数据的规律。训练集和测试集准确率都很低。就像用直线拟合曲线数据。
过拟合(Overfitting): 模型太复杂,记住了训练数据的细节和噪声。训练集准确率很高,但测试集准确率很低。就像死记硬背考试题,遇到新题就不会了。
理想状态: 模型恰到好处,既能捕捉数据规律,又不会过度拟合细节。
解决方法: 对于欠拟合,可以使用更复杂的模型,增加特征,训练更长时间。对于过拟合,可以收集更多数据,使用正则化,减少特征数量,使用交叉验证。

5.5 评估指标

分类问题的指标:
准确率(Accuracy)= 正确预测数 / 总预测数。这是最直观的指标,但在类别不平衡时会有误导。
精确率(Precision)= 真正例 / (真正例 + 假正例)。在预测为正的样本中,真正为正的比例。
召回率(Recall)= 真正例 / (真正例 + 假负例)。在真正为正的样本中,被正确预测的比例。
F1分数 = 2 × (精确率 × 召回率) / (精确率 + 召回率)。精确率和召回率的调和平均数。
回归问题的指标:
均方误差(MSE)= 平均((预测值 - 真实值)²)。
均方根误差(RMSE)= √MSE。
平均绝对误差(MAE)= 平均(|预测值 - 真实值|)。
R²分数,范围0-1,越接近1表示模型越好。

🤖 第六章:常用机器学习算法

6.1 线性回归(Linear Regression)

原理: 寻找一条直线(或超平面)最好地拟合数据点。
适用场景: 预测连续数值,特征和目标之间有线性关系。
示例代码:

6.2 逻辑回归(Logistic Regression)

原理: 虽然名字有"回归",但它是分类算法。使用sigmoid函数将线性输出转换为0-1之间的概率。
适用场景: 二分类问题,需要概率输出。
示例代码:

6.3 决策树(Decision Tree)

原理: 通过一系列问题(if-else规则)将数据分类,就像一个流程图。
优点: 易于理解和解释,可以处理非线性关系,不需要特征缩放。
缺点: 容易过拟合。
示例代码:

6.4 随机森林(Random Forest)

原理: 集成多个决策树,通过投票或平均来做出最终决策。"三个臭皮匠顶个诸葛亮"的思想。
优点: 准确率高,不容易过拟合,可以处理大量特征。
示例代码:

6.5 K近邻(K-Nearest Neighbors)

原理: "物以类聚",找到最相似的K个样本,根据它们的标签投票决定新样本的类别。
优点: 简单直观,无需训练过程,可用于分类和回归。
缺点: 预测速度慢(需要计算与所有训练样本的距离),对特征缩放敏感。
示例代码:

6.6 支持向量机(Support Vector Machine, SVM)

原理: 寻找一个最优的超平面来分隔不同类别的数据,使得分类边界最大化。
优点: 在高维空间表现良好,对于小样本数据效果好,可以使用核函数处理非线性问题。
示例代码:

🔍 第七章:模型选择与优化

7.1 交叉验证(Cross-Validation)

为什么需要交叉验证: 单次数据分割可能导致评估结果不稳定。交叉验证通过多次分割和评估,得到更可靠的性能估计。
K折交叉验证: 将数据分成K份,每次用K-1份训练,1份测试,重复K次,最后平均K次的结果。
示例代码:

7.2 超参数调优

什么是超参数: 超参数是在训练前设定的参数,不是通过学习得到的。例如K近邻的K值,决策树的最大深度,随机森林的树的数量。
网格搜索(Grid Search): 尝试所有可能的参数组合,找到最佳组合。
示例代码:
随机搜索(Random Search): 随机尝试参数组合,适合参数空间很大的情况。

7.3 特征工程

特征缩放:
处理类别特征:
特征选择:

上一篇
云盘资源
下一篇
自制摸鱼浏览器