主题
机器学习入门
机器学习(Machine Learning)是 AI 的核心分支,让计算机从数据中学习规律,而不需要手工编写规则。
什么是机器学习
传统编程 vs 机器学习:
传统编程:
程序员写规则 → 输入数据 → 输出结果
例:if 温度 > 30: 判断为"热"
机器学习:
输入数据 + 正确答案 → 算法学习 → 得到规则
例:给 1000 条天气数据,让算法自己学会判断"热"的规则机器学习的分类
1. 监督学习(Supervised Learning)
有"标准答案"的学习:
输入:邮件内容
输出:垃圾邮件 / 正常邮件(已知标签)
目标:学会预测新邮件常见任务:
- 分类(Classification):预测类别(垃圾邮件?)
- 回归(Regression):预测数值(房价多少?)
2. 无监督学习(Unsupervised Learning)
没有"标准答案",让算法自己发现规律:
输入:用户行为数据
输出:??(让算法找)
目标:发现用户分群(聚类)常见任务:
- 聚类(Clustering):把相似的数据分组
- 降维(Dimensionality Reduction):压缩数据
3. 强化学习(Reinforcement Learning)
通过"试错+奖励"学习:
Agent 在环境中行动 → 获得奖励/惩罚 → 调整策略
例:AlphaGo 下棋,赢了 +1,输了 -1机器学习的基本流程
1. 收集数据
↓
2. 数据清洗(处理缺失值、异常值)
↓
3. 特征工程(提取有用的特征)
↓
4. 选择算法
↓
5. 训练模型
↓
6. 评估模型(准确率、召回率...)
↓
7. 调参优化
↓
8. 部署使用常见算法
分类算法
| 算法 | 特点 | 适用场景 |
|---|---|---|
| 逻辑回归 | 简单,可解释 | 二分类 |
| 决策树 | 可解释,易过拟合 | 小规模数据 |
| 随机森林 | 准确率高 | 通用 |
| SVM | 高维数据好 | 小样本 |
| XGBoost | 竞赛常用 | 结构化数据 |
回归算法
| 算法 | 特点 |
|---|---|
| 线性回归 | 简单,可解释 |
| 岭回归 / Lasso | 防止过拟合 |
| 多项式回归 | 非线性关系 |
用 Scikit-learn 写一个简单的分类器
python
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# 1. 加载数据
iris = load_iris()
X, y = iris.data, iris.target
# 2. 拆分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 3. 训练模型
model = RandomForestClassifier()
model.fit(X_train, y_train)
# 4. 预测
y_pred = model.predict(X_test)
# 5. 评估
print(f"准确率: {accuracy_score(y_test, y_pred)}")过拟合与欠拟合
欠拟合(Underfitting):
模型太简单,学不会规律
解决:增加模型复杂度、增加特征
过拟合(Overfitting):
模型"背下了"训练数据,泛化能力差
解决:更多数据、正则化、交叉验证评估指标
分类问题
准确率(Accuracy):预测正确的比例
精确率(Precision):预测为正的样本中,真正为正的比例
召回率(Recall):真正为正的样本中,被预测为正的比例
F1 Score:精确率和召回率的调和平均回归问题
MAE(平均绝对误差)
MSE(均方误差)
RMSE(均方根误差)
R²(决定系数)