Python 机器学习核心入门与实战进阶 Day 1 - 分类 vs 回归

✅ 今日目标

  • 理解分类(Classification)与回归(Regression)的本质区别
  • 掌握两种任务的典型使用场景
  • 学会根据任务类型选择合适的模型
  • 了解每类模型对应的评估指标

📘 一、监督学习的两大任务类型

任务类型 输出结果 典型问题 示例
分类(Classification) 离散值(类标) 哪一类? 是否及格?是否点击广告?
回归(Regression) 连续值(实数) 预测值是多少? 房价预测、成绩分数

🧪 二、任务类型示例(Python 实践)

分类任务示例:

python 复制代码
# 分类:预测学生是否及格(0 或 1)
y_class = [0, 1, 1, 0, 1, 1, 0]

回归任务示例:

python 复制代码
# 回归:预测学生具体分数(连续值)
y_reg = [59.5, 85.2, 90.1, 62.0, 74.8]

🧮 三、模型适用对比

模型 分类 回归
Logistic 回归 ✅ ❌
线性回归 ❌ ✅
决策树 ✅ ✅
随机森林 ✅ ✅
SVM ✅ ✅(需配置)
KNN ✅ ✅
XGBoost / LightGBM ✅ ✅

📊 四、评估指标对比

指标类型 分类任务 回归任务
主要指标 准确率(accuracy) 精确率 / 召回率 / F1 均方误差(MSE) 平均绝对误差(MAE) R²
可视化 混淆矩阵、ROC曲线 拟合曲线、残差图
推荐工具 classification_report() mean_squared_error() / r2_score()

💡 五、任务识别技巧

当你拿到一个数据问题时,可以问自己:

  • 目标变量是类别还是数值?
  • 是判断"是否......",还是预测"多少......"?
  • 标签值有多少种?是整数编码的类别,还是连续的数值?

🔧 六、实践建议

  1. 自构造一个小型分类与回归数据集

  2. 分别使用逻辑回归与线性回归模型进行建模

  3. 输出评估结果(准确率 / 均方误差)

  4. 可视化预测结果与真实值对比(选做)

    python 复制代码
    # 分类 vs 回归任务演示
    
    from sklearn.linear_model import LogisticRegression, LinearRegression
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import classification_report, accuracy_score, mean_squared_error, r2_score
    import numpy as np
    import matplotlib.pyplot as plt
    
    plt.rcParams['font.family'] = 'Arial Unicode MS'  # Mac 用户可用
    plt.rcParams['axes.unicode_minus'] = False
    
    # 构造数据
    np.random.seed(42)
    score_class = np.random.randint(40, 100, 100)
    is_pass = (score_class >= 60).astype(int)
    score_reg = score_class + np.random.normal(0, 5, 100)
    
    # 分类任务
    X_class = score_class.reshape(-1, 1)
    y_class = is_pass
    Xc_train, Xc_test, yc_train, yc_test = train_test_split(X_class, y_class, test_size=0.2, random_state=0)
    
    clf = LogisticRegression()
    clf.fit(Xc_train, yc_train)
    y_pred_class = clf.predict(Xc_test)
    
    print("=== 分类评估 ===")
    print("准确率:", accuracy_score(yc_test, y_pred_class))
    print(classification_report(yc_test, y_pred_class))
    
    # 回归任务
    X_reg = score_class.reshape(-1, 1)
    y_reg = score_reg
    Xr_train, Xr_test, yr_train, yr_test = train_test_split(X_reg, y_reg, test_size=0.2, random_state=0)
    
    reg = LinearRegression()
    reg.fit(Xr_train, yr_train)
    y_pred_reg = reg.predict(Xr_test)
    
    print("\n=== 回归评估 ===")
    print("MSE:", mean_squared_error(yr_test, y_pred_reg))
    print("R²:", r2_score(yr_test, y_pred_reg))
    
    # 可视化回归结果
    plt.scatter(Xr_test, yr_test, color='blue', label='真实值')
    plt.plot(Xr_test, y_pred_reg, color='red', label='预测值')
    plt.title("回归拟合示意图")
    plt.xlabel("原始成绩")
    plt.ylabel("预测成绩")
    plt.legend()
    plt.tight_layout()
    plt.show()

    运行输出:

    python 复制代码
    === 分类评估 ===
    准确率: 1.0
                  precision    recall  f1-score   support
    
               0       1.00      1.00      1.00         7
               1       1.00      1.00      1.00        13
    
        accuracy                           1.00        20
       macro avg       1.00      1.00      1.00        20
    weighted avg       1.00      1.00      1.00        20
    
    
    === 回归评估 ===
    MSE: 20.031221042762812
    R²: 0.9221734051498227

🧾 今日总结

内容 分类任务 回归任务
输出 类别标签(0/1) 连续实数值
代表模型 Logistic 回归、树 线性回归、树
核心指标 Accuracy、F1 MSE、R²
常见场景 医疗诊断、信用预测 销量预测、价格估计
相关推荐
IT_Octopus7 小时前
【零基础入门 LLM 开发 · Day 13】:LangChain 的对话记忆——Message 对象版
人工智能·python·langchain
2603_965148117 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
CCblandy8 小时前
令牌桶在 0.9 倍负载超发 19%、固定窗口边界放行 20 个:四种限流算法同构实测
后端·python·算法·性能优化·架构
硅谷秋水9 小时前
CommitFlow:面向长时程机器人操作 VLA 执行的语义承诺验证与局部修正
机器学习·计算机视觉·语言模型·机器人
Cc.Y9 小时前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python
拿本唠嗑AI研究9 小时前
本体工程实战指南:从建模到可维护的完整落地路径
java·人工智能·python·jena·ontology
Smoothcloud润云10 小时前
PyTorch推理服务模型热切换与失败回滚实战:降低版本更新中断
服务器·人工智能·pytorch·python·深度学习·gpu
jsjzsl210 小时前
递归自改进系统(RSI)的本质是自发对称破缺:智能爆炸有界—— AI研发切记盲目投入
人工智能·python·算法
2601_9548118210 小时前
机器视觉教学套件选型指南:五维技术参数对比与课程体系评估
python·数码相机
小马不起床11 小时前
零基础玩转 FastAPI_05:后端课程模块
python·fastapi