Day 4:机器学习初探——从监督学习到无监督学习

145 阅读3分钟

摘要

本文系统讲解机器学习的核心范式:

  1. 监督学习:用标注数据训练模型(如房价预测)
  2. 无监督学习:发现数据隐藏模式(如客户分群)
  3. 半监督学习:混合标注与未标注数据
  4. 强化学习:通过奖惩机制优化决策
    配套实战:用Scikit-learn完成鸢尾花分类与顾客聚类分析

目录

  1. 机器学习四大范式对比
  2. 监督学习全解析
    • 分类 vs 回归
    • 损失函数与评估指标
  3. 无监督学习核心方法
    • 聚类(K-Means/DBSCAN)
    • 降维(PCA/t-SNE)
  4. 实战:双任务对比实验
    • 任务1:监督学习分类鸢尾花
    • 任务2:无监督学习聚类顾客数据
  5. 模型选择避坑指南

1. 机器学习四大范式对比

对比表格

类型输入数据典型算法应用场景
监督学习带标签的数据随机森林/SVM垃圾邮件识别
无监督学习无标签数据K-Means/PCA市场细分
半监督学习部分标注数据Label Propagation医学影像分析
强化学习环境状态+奖励Q-Learning游戏AI/机器人控制

💡 关键区别

  • 监督学习需要"标准答案",无监督学习探索"数据本身的结构"

2. 监督学习全解析

(1)分类 vs 回归

流程图

输入数据 → 特征工程 → 选择模型(分类/回归) → 训练 → 评估 → 部署

典型算法对比

# 分类模型(输出离散值)
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier()

# 回归模型(输出连续值)
from sklearn.linear_model import LinearRegression
reg = LinearRegression()

(2)评估指标

核心指标表

任务类型指标公式/说明
分类准确率(TP+TN)/(TP+TN+FP+FN)
分类F1-score2*(Precision*Recall)/(Precision+Recall)
回归MAEΣ预测值-真实值/n
回归解释方差比例(0~1)

3. 无监督学习核心方法

(1)K-Means聚类

算法步骤

  1. 随机选择K个中心点
  2. 将每个点分配到最近的中心
  3. 重新计算中心点位置
  4. 重复2-3步直到收敛

可视化表格

迭代次数中心点坐标样本分布
1[(1,2), (4,5)]Cluster1: 30个样本
10(收敛)[(1.2,2.1), (4.3,4.8)]Cluster1: 28个样本

(2)PCA降维

Python实现

from sklearn.decomposition import PCA
pca = PCA(n_components=2)  # 降至2维
X_reduced = pca.fit_transform(X)

4. 实战:双任务对比实验

任务1:监督学习分类鸢尾花

完整代码

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:无监督学习聚类顾客数据

关键步骤

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:忽略数据标准化
正确做法

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[降维]

各位老板,需要补充哪个算法的详细推导过程?或者希望增加其他实战案例?