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²
常见场景 医疗诊断、信用预测 销量预测、价格估计
相关推荐
蛋仔聊测试13 分钟前
Playwright 中route 方法模拟测试数据(Mocking)详解
前端·python·测试
今天没有盐25 分钟前
Pandas缺失值处理完全指南:从基础操作到高级技巧
python·pycharm·编程语言
程序员小远35 分钟前
快速定位bug,编写测试用例
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·bug
B站_计算机毕业设计之家41 分钟前
大数据YOLOv8无人机目标检测跟踪识别系统 深度学习 PySide界面设计 大数据 ✅
大数据·python·深度学习·信息可视化·数据挖掘·数据分析·flask
老歌老听老掉牙1 小时前
解决 PyQt5 中 sipPyTypeDict() 弃用警告的完整指南
python·qt
武陵悭臾1 小时前
Python应用开发学习: Pygame 中实现数字水平靠右对齐和垂直靠底对齐
python·学习·程序人生·游戏·个人开发·学习方法·pygame
兜有米啦1 小时前
python练习题3
开发语言·python
油泼辣子多加2 小时前
【实战】自然语言处理--长文本分类(3)HAN算法
算法·自然语言处理·分类
你才是向阳花2 小时前
如何用Python实现飞机大战小游戏
开发语言·python·pygame
草莓熊Lotso2 小时前
C++ 方向 Web 自动化测试实战:以博客系统为例,从用例到报告全流程解析
前端·网络·c++·人工智能·后端·python·功能测试