摘要
本文系统讲解机器学习的核心范式:
- 监督学习:用标注数据训练模型(如房价预测)
- 无监督学习:发现数据隐藏模式(如客户分群)
- 半监督学习:混合标注与未标注数据
- 强化学习 :通过奖惩机制优化决策
配套实战:用Scikit-learn完成鸢尾花分类与顾客聚类分析
目录
- 机器学习四大范式对比
- 监督学习全解析
- 分类 vs 回归
- 损失函数与评估指标
- 无监督学习核心方法
- 聚类(K-Means/DBSCAN)
- 降维(PCA/t-SNE)
- 实战:双任务对比实验
- 任务1:监督学习分类鸢尾花
- 任务2:无监督学习聚类顾客数据
- 模型选择避坑指南
1. 机器学习四大范式对比
对比表格:
类型 | 输入数据 | 典型算法 | 应用场景 |
---|---|---|---|
监督学习 | 带标签的数据 | 随机森林/SVM | 垃圾邮件识别 |
无监督学习 | 无标签数据 | K-Means/PCA | 市场细分 |
半监督学习 | 部分标注数据 | Label Propagation | 医学影像分析 |
强化学习 | 环境状态+奖励 | Q-Learning | 游戏AI/机器人控制 |
💡 关键区别:
- 监督学习需要"标准答案",无监督学习探索"数据本身的结构"
2. 监督学习全解析
(1)分类 vs 回归
流程图:
输入数据 → 特征工程 → 选择模型(分类/回归) → 训练 → 评估 → 部署
典型算法对比:
python
# 分类模型(输出离散值)
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier()
# 回归模型(输出连续值)
from sklearn.linear_model import LinearRegression
reg = LinearRegression()
(2)评估指标
核心指标表:
| 任务类型 | 指标 | 公式/说明 |
|----------|----------|-------------------------------------------|---------|----|
| 分类 | 准确率 | (TP+TN)/(TP+TN+FP+FN) |
| 分类 | F1-score | 2*(Precision*Recall)/(Precision+Recall) |
| 回归 | MAE | Σ | 预测值-真实值 | /n |
| 回归 | R² | 解释方差比例(0~1) |
3. 无监督学习核心方法
(1)K-Means聚类
算法步骤:
- 随机选择K个中心点
- 将每个点分配到最近的中心
- 重新计算中心点位置
- 重复2-3步直到收敛
可视化表格:
迭代次数 | 中心点坐标 | 样本分布 |
---|---|---|
1 | [(1,2), (4,5)] | Cluster1: 30个样本 |
10(收敛) | [(1.2,2.1), (4.3,4.8)] | Cluster1: 28个样本 |
(2)PCA降维
Python实现:
python
from sklearn.decomposition import PCA
pca = PCA(n_components=2) # 降至2维
X_reduced = pca.fit_transform(X)
4. 实战:双任务对比实验
任务1:监督学习分类鸢尾花
完整代码:
python
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载数据
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2)
# 训练模型
from sklearn.svm import SVC
model = SVC(kernel='rbf')
model.fit(X_train, y_train)
# 评估
print("测试集准确率:", model.score(X_test, y_test))
任务2:无监督学习聚类顾客数据
关键步骤:
python
import pandas as pd
from sklearn.cluster import KMeans
# 生成模拟数据
data = pd.DataFrame({
'年龄': np.random.randint(18,70,100),
'月消费额': np.random.normal(3000, 500, 100)
})
# 聚类分析
kmeans = KMeans(n_clusters=3)
data['cluster'] = kmeans.fit_predict(data)
# 可视化
import seaborn as sns
sns.scatterplot(data=data, x='年龄', y='月消费额', hue='cluster')
🔥 动手任务:修改n_clusters参数,观察聚类结果变化并截图分享!
5. 模型选择避坑指南
❌ 错误1 :用分类算法解决回归问题
✅ 解决方案:检查目标变量是否连续
❌ 错误2 :忽略数据标准化
✅ 正确做法:
python
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
下一篇预告
Day 5:实战!用Scikit-learn完成你的第一个分类模型
"从数据清洗到模型部署,手把手教你打造能用的AI系统!"
知识图谱总结
graph LR
A[机器学习] --> B[监督学习]
A --> C[无监督学习]
B --> D[分类]
B --> E[回归]
C --> F[聚类]
C --> G[降维]
各位老板,需要补充哪个算法的详细推导过程?或者希望增加其他实战案例?