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²
常见场景 医疗诊断、信用预测 销量预测、价格估计
相关推荐
chanalbert12 分钟前
Spring 6 源码深度掘金:66+核心原理与高频面试攻坚指南
python·spring·面试
张德锋25 分钟前
Pytorch实现mnist手写数字识别
机器学习
羊小猪~~1 小时前
【NLP入门系列四】评论文本分类入门案例
人工智能·自然语言处理·分类
roman_日积跬步-终至千里1 小时前
【学习线路】机器学习线路概述与内容关键点说明
人工智能·学习·机器学习
都叫我大帅哥1 小时前
向量数据库Milvus:非结构化数据的救星,AI开发者的瑞士军刀
java·python
冰糖猕猴桃2 小时前
【Python】进阶 - 数据结构与算法
开发语言·数据结构·python·算法·时间复杂度、空间复杂度·树、二叉树·堆、图
天水幼麟2 小时前
python学习笔记(深度学习)
笔记·python·学习
巴里巴气2 小时前
安装GPU版本的Pytorch
人工智能·pytorch·python
wt_cs3 小时前
银行回单ocr api集成解析-图像文字识别-文字识别技术
开发语言·python
_WndProc3 小时前
【Python】Flask网页
开发语言·python·flask