✅ 今日目标

  • 回顾整个本周数据分析 & 建模流程
  • 学会训练第二种模型:决策树(Decision Tree)
  • 掌握多模型对比评估的方法与实践
  • 输出综合对比报告:准确率、精确率、召回率、F1 等指标
  • 为后续模型调优与扩展打下基础

🪜 一、本周流程快速回顾

步骤内容
第1天高级数据操作(索引、透视、变形)
第2天缺失值和异常值处理
第3天多表合并与连接
第4天特征工程(编码、归一化、时间)
第5天数据集拆分(训练集 / 测试集)
第6天逻辑回归模型构建与评估
第7天🤖 多模型对比评估(今天)

🌲 二、训练决策树分类器

from sklearn.tree import DecisionTreeClassifiertree = DecisionTreeClassifier(random_state=42)
tree.fit(X_train, y_train)
y_pred_tree = tree.predict(X_test)

⚖️ 三、模型对比评估

from sklearn.metrics import classification_reportprint("📋 Logistic 回归:")
print(classification_report(y_test, y_pred_log))print("📋 决策树模型:")
print(classification_report(y_test, y_pred_tree))

📊 可视化对比(可选)

import matplotlib.pyplot as pltmodels = ["Logistic", "DecisionTree"]
accuracies = [accuracy_score(y_test, y_pred_log),accuracy_score(y_test, y_pred_tree),
]plt.bar(models, accuracies, color=["skyblue", "lightgreen"])
plt.title("模型准确率对比")
plt.ylabel("Accuracy")
plt.show()

🧪 今日练习建议(脚本名:compare_models.py

  1. 读取本周生成的训练 / 测试数据

  2. 同时训练逻辑回归与决策树模型

  3. 输出各自的评估指标(Accuracy、Precision、Recall、F1)

  4. (可选)将结果写入一个 CSV 或图表可视化

  5. 思考不同模型优劣,以及如何选择合适模型

    # compare_models.py
    import pandas as pd
    from sklearn.linear_model import LogisticRegression
    from sklearn.tree import DecisionTreeClassifier
    from sklearn.metrics import (accuracy_score,classification_report,confusion_matrix
    )
    import matplotlib.pyplot as plt
    import seaborn as sns
    import osplt.rcParams['font.family'] = 'Arial Unicode MS'  # Mac 用户可用
    plt.rcParams['axes.unicode_minus'] = False# 1. 加载训练与测试数据
    data_dir = "data/model"
    X_train = pd.read_csv(os.path.join(data_dir, "X_train.csv"))
    X_test = pd.read_csv(os.path.join(data_dir, "X_test.csv"))
    y_train = pd.read_csv(os.path.join(data_dir, "y_train.csv")).values.ravel()
    y_test = pd.read_csv(os.path.join(data_dir, "y_test.csv")).values.ravel()# 2. 初始化模型
    log_model = LogisticRegression()
    tree_model = DecisionTreeClassifier(random_state=42)# 3. 模型训练
    log_model.fit(X_train, y_train)
    tree_model.fit(X_train, y_train)# 4. 模型预测
    y_pred_log = log_model.predict(X_test)
    y_pred_tree = tree_model.predict(X_test)# 5. 评估结果
    print("📋 Logistic 回归评估报告:")
    print(classification_report(y_test, y_pred_log))print("\n🌳 决策树评估报告:")
    print(classification_report(y_test, y_pred_tree))# 6. 准确率对比
    acc_log = accuracy_score(y_test, y_pred_log)
    acc_tree = accuracy_score(y_test, y_pred_tree)# 7. 可视化混淆矩阵
    plt.figure(figsize=(10, 4))plt.subplot(1, 2, 1)
    sns.heatmap(confusion_matrix(y_test, y_pred_log, labels=[0, 1]), annot=True, fmt="d", cmap="Blues",xticklabels=["0", "1"], yticklabels=["0", "1"])
    plt.title("Logistic 回归 - 混淆矩阵")
    plt.xlabel("预测", fontproperties="Arial Unicode MS")
    plt.ylabel("真实", fontproperties="Arial Unicode MS")plt.subplot(1, 2, 2)
    sns.heatmap(confusion_matrix(y_test, y_pred_tree, labels=[0, 1]), annot=True, fmt="d", cmap="Greens",xticklabels=["0", "1"], yticklabels=["0", "1"])
    plt.title("决策树 - 混淆矩阵")
    plt.xlabel("预测", fontproperties="Arial Unicode MS")
    plt.ylabel("真实", fontproperties="Arial Unicode MS")plt.tight_layout()
    plt.show()# 8. 准确率柱状图
    plt.figure(figsize=(5, 4))
    plt.bar(["Logistic", "Decision Tree"], [acc_log, acc_tree], color=["skyblue", "lightgreen"])
    plt.title("模型准确率对比")
    plt.ylabel("Accuracy")
    plt.ylim(0, 1)
    plt.grid(axis='y', linestyle='--', alpha=0.7)
    plt.tight_layout()
    plt.show()# 9. 汇总结果(可选保存)
    results_df = pd.DataFrame({"模型": ["Logistic", "Decision Tree"],"准确率": [acc_log, acc_tree]
    })
    os.makedirs("data/result", exist_ok=True)
    results_df.to_csv("data/result/model_comparison.csv", index=False)
    print("\n✅ 对比结果已保存:data/result/model_comparison.csv")
    

    结果输出:

    📋 Logistic 回归评估报告:precision    recall  f1-score   support0       1.00      1.00      1.00         71       1.00      1.00      1.00        13accuracy                           1.00        20macro avg       1.00      1.00      1.00        20
    weighted avg       1.00      1.00      1.00        20🌳 决策树评估报告:precision    recall  f1-score   support0       1.00      1.00      1.00         71       1.00      1.00      1.00        13accuracy                           1.00        20macro avg       1.00      1.00      1.00        20
    weighted avg       1.00      1.00      1.00        20✅ 对比结果已保存:data/result/model_comparison.csv
    

    可视化混淆矩阵:
    在这里插入图片描述

    准确率柱状图:
    在这里插入图片描述

    data/result/model_comparison.csv:
    在这里插入图片描述
    PS:可以使用下面的代码生成训练/测试集:

    import pandas as pd
    import numpy as np
    from sklearn.model_selection import train_test_split
    import os# 构造示例数据
    np.random.seed(42)
    size = 100
    df = pd.DataFrame({"成绩": np.random.randint(40, 100, size=size),"性别": np.random.choice(["男", "女"], size=size)
    })# 增加派生特征
    df["成绩_标准化"] = (df["成绩"] - df["成绩"].mean()) / df["成绩"].std()
    df["是否及格_数值"] = (df["成绩"] >= 60).astype(int)
    df["性别_男"] = (df["性别"] == "男").astype(int)
    df["性别_女"] = (df["性别"] == "女").astype(int)# 特征与标签
    X = df[["成绩_标准化", "性别_男", "性别_女", "是否及格_数值"]]
    y = df["是否及格_数值"]# 拆分数据
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 保存路径
    os.makedirs("data/model", exist_ok=True)
    X_train.to_csv("data/model/X_train.csv", index=False)
    X_test.to_csv("data/model/X_test.csv", index=False)
    y_train.to_csv("data/model/y_train.csv", index=False)
    y_test.to_csv("data/model/y_test.csv", index=False)
    

🧾 今日总结

  • 理解模型评估不止准确率,更要看精确率与召回率
  • 决策树可捕捉非线性关系,但易过拟合
  • 模型选择应结合业务背景、样本数量、可解释性等因素

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/87245.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/87245.shtml
英文地址,请注明出处:http://en.pswp.cn/web/87245.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本周大模型新动向:KV缓存混合精度量化、个体时空行为生成、个性化问答

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 01 KVmix: Gradient-Based Layer Importance-Aware Mixed-Precision Quantization for KV Cache 大型语言模型(LLMs)在推理过程中,键值(KV)缓存的高内…

在 Spring Boot 中使用 WebMvcConfigurer

WebMvcConfigurer 是 Spring MVC 提供的一个扩展接口,用于配置 Spring MVC 的各种功能。在 Spring Boot 应用中,通过实现 WebMvcConfigurer 接口,可以定制和扩展默认的 Spring MVC 配置。以下是对 WebMvcConfigurer 的详细解析及其常见用法。…

w-笔记:uni-app的H5平台和非H5平台的拍照识别功能:

uni-app的H5平台和非H5平台的拍照识别功能&#xff1a; <template><view class"humanVehicleBinding"><view v-if"warn" class"shadow"></view><view class"header"><uni-nav-bar left-icon"l…

TCP 半连接队列和全连接队列(结合 Linux 2.6.32 内核源码分析)

文章目录 一、什么是 TCP 半连接队列和全连接队列二、TCP 全连接队列1、如何查看进程的 TCP 全连接队列大小&#xff1f;注意 2、TCP 全连接队列溢出问题注意 3、TCP 全连接队列最大长度 三、TCP 半连接队列1、TCP 半连接队列溢出问题2、TCP 半连接队列最大长度3、引申问题 一、…

linux下fabric环境搭建

参考教程&#xff1a; https://devpress.csdn.net/cloudnative/66d58e702045de334a569db3.html?dp_tokeneyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MjA2MzY4NywiZXhwIjoxNzQwMzY4MDc0LCJpYXQiOjE3Mzk3NjMyNzQsInVzZXJuYW1lIjoiaHVhbmd0dXBpIn0.oh8e4F6Sw_A4SV2ODQ5W0pYK0…

Redis Pipeline介绍:提高操作Redis数据库的执行效率

Redis Pipeline是一种用于提高Redis执行效率的技术&#xff0c;通过减少客户端与服务器之间的通信开销&#xff0c;显著提升批量操作的性能。本文将详细介绍Redis Pipeline的概念、使用场景、实现方式及其优势。 一、Redis Pipeline的概念 Redis Pipeline是一种批处理机制&am…

linux长时间锁屏无法唤醒

是的&#xff0c;您这么理解很直接&#xff0c;抓住了要点。 简单来说&#xff0c;就是这样&#xff1a; 电脑睡觉有两种方式&#xff1a; 打个盹&#xff08;挂起/Suspend&#xff09;&#xff1a; 把工作状态保存在内存里。这个一般和 Swap 分区没关系。睡死过去&#xff…

STM32F103_Bootloader程序开发11 - 实现 App 安全跳转至 Bootloader

导言 想象一下&#xff0c;我们的单片机 App 正在稳定地运行着&#xff0c;突然我们想给它升级一下&#xff0c;添加个新功能。我们该如何安全地通知它&#xff1a;“嘿&#xff0c;准备好接收新固件了” ? 这就需要 App 和 Bootloader 之间建立一个可靠的"秘密握手"…

Explain解释

参考官方文档&#xff1a;https://dev.mysql.com/doc/refman/5.7/en/explain-output.html explain关键字可以分析你的查询语句的结构和性能。 explain select查询&#xff0c; 执行会返回执行计划的信息。 注意&#xff1a;如果from中有子查询&#xff0c;仍然会执行该子查询…

选择 PDF 转 HTML 转换器的 5 个关键特性

市面上有很多 PDF 转 HTML 的转换器&#xff0c;每一款产品都有不同的功能组合。要理清并理解每个功能可能会让人感到困惑。那么&#xff0c;真正重要的是什么呢&#xff1f; 这篇文章将介绍我们认为在选择最佳 PDF 转 HTML 转换器时最重要的 5 个关键特性&#xff1a; 1. 转换…

使用堡塔在服务器上部署宝塔面板-linux版

使用堡塔在服务器上部署宝塔面板-linux版 使用堡塔多机管理登录服务器 进入宝塔官网&#xff0c;获取安装脚本 wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh && sudo bash install_panel.sh ed8484bec3. 在堡塔多机管理中&#xff0c;…

【Unity高级】Unity多界面游戏场景管理方案详解

引言&#xff1a;游戏界面管理的挑战 在Unity游戏开发中&#xff0c;尤其是包含多个功能界面&#xff08;如主菜单、关卡选择、游戏页面、设置和商城&#xff09;的游戏&#xff0c;如何高效管理场景与界面是架构设计的核心挑战。本文将深入探讨三种主流实现方案&#xff1a;单…

WINDOWS最快布署WEB服务器:apache2

安装JDK下载 https://tomcat.apache.org/ Index of /dist/tomcat/tomcat-9 安装测试 http://localhost:8080/ 替换自己的文件 把自己的文件复制到&#xff1a; C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\ROOT

Microsoft Edge 打开无反应、打开后显示兼容性问题、卸载重装 解决方案。一键卸载Microsoft Edge 。

背景&#xff1a;网络上的浏览器修复、重装、恢复默认应用测试后无用&#xff0c;以下卸载重装方案经实测可以正常使用Microsoft Edg。 卸载软件在资源里&#xff0c;请自取。 一、卸载软件&#xff1a;Remove-Edge_GUI.exe 双击卸载等待即可。 二、在微软商店重新安装Micro…

Spring Boot - 参数校验:分组校验、自定义注解、嵌套对象全解析

01 依赖配置 在构建高效的校验体系前&#xff0c;需先完善项目依赖配置。 以下是优化后的依赖示例&#xff1a; <dependencies><!-- Web 依赖&#xff0c;提供 RESTful 接口支持 --><dependency><groupId>org.springframework.boot</groupId>…

深入浅出多模态》(十一)之多模态经典模型:Flamingo系列

&#x1f389;AI学习星球推荐&#xff1a; GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料&#xff0c;配有全面而有深度的专栏内容&#xff0c;包括不限于 前沿论文解读、…

基于Pandas和FineBI的昆明职位数据分析与可视化实现(三)- 职位数据统计分析

文章目录 一、职位数据分析1. 一级分类职位数量统计分析2. 职位二级分类分布分析3. 职位分布分析4. 工作经验需求分布分析5. 学历要求职位分布分析6. 企业职位供给前507. 不同规模公司的职位数量统计8. 区域职位分布分析9. 各区域平均薪资范围分布分析10. 不同工作经验平均薪资…

大数据Hadoop之——安装部署hadoop

目录 前期准备 一、JDK的安装 1、安装jdk 2、配置Java环境变量 3、加载环境变量 4、进行校验 二、hadoop的环境搭建 1、hadoop的下载安装 2、配置文件设置 2.1. 配置 hadoop-env.sh 2.2. 配置 core-site.xml 2.3. 配置 hdfs-site.xml 2.4. 配置 yarn-site.xml 2.…

Spring IoC DI介绍

文章目录 IoC & DI 介绍IoC介绍DI 介绍 组件注册Bean 命名约定方法注解 Bean总结 扫描路径DI 详解属性注入构造方法注入Setter 注入三种注入优缺点分析 当同一类型存在多个Bean时,直接使用Autowired会存在问题使用Primary注解使用Qualifier注解使用Bean的名称使用Resource注…

【Flutter】解决 flutter_inappwebview在 Windows 上使用导致应用闪退问题

问题背景 在 Windows 11 上运行 Flutter 桌面应用时&#xff0c;应用出现闪退现象。通过系统事件日志分析&#xff0c;发现是 MSVCP140.dll 模块的访问冲突异常&#xff08;错误代码 c0000005&#xff09;导致的崩溃。 问题分析 1. 错误现象 应用启动后立即闪退Windows 事件…