✅ 今日目标

  • 引入多种常见分类模型(随机森林、支持向量机、K近邻等)
  • 比较不同模型的训练效果
  • 使用交叉验证提升评估稳定性

🧾 一、对比模型列表

模型类名(sklearn)适用说明
逻辑回归LogisticRegression基础线、易于解释
KNNKNeighborsClassifier基于邻近数据点
决策树DecisionTreeClassifier可视化,易过拟合
随机森林RandomForestClassifier综合表现较优,抗过拟合
支持向量机SVC高维表现好,耗时较久(适合小数据)

🧪 二、交叉验证策略

使用 cross_val_score 进行 K 折交叉验证,常用 cv=5

from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, y, cv=5, scoring="accuracy")

还可以比较不同模型的:

  • accuracy
  • roc_auc
  • f1_macro 等指标

🧪 今日练习任务

编写脚本 model_compare_cv.py,实现:

  • 加载 processed_X_train.csv 与标签

  • 初始化多个模型

  • 对每个模型进行 5 折交叉验证

  • 输出每个模型的平均准确率和 AUC

    # model_compare_cv.py - 多模型比较与交叉验证(优化版)import pandas as pd
    import numpy as np
    import warnings
    from sklearn.model_selection import cross_val_score
    from sklearn.preprocessing import StandardScaler
    from sklearn.linear_model import LogisticRegression
    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.tree import DecisionTreeClassifier
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.svm import SVC# 忽略数值计算警告
    warnings.filterwarnings("ignore", category=RuntimeWarning)# 读取训练数据
    X = pd.read_csv("./data/stage4/processed_X_train.csv")
    y = pd.read_csv("./data/stage4/processed_y_train.csv").values.ravel()# 检查数值问题
    print("🔎 是否包含 NaN:", X.isna().sum().sum())
    print("🔎 是否包含 Inf:", (~np.isfinite(X)).sum().sum())
    print("🔎 特征最大值:", X.max().max())
    print("🔎 特征最小值:", X.min().min())# 标准化所有特征
    scaler = StandardScaler()
    X_scaled = pd.DataFrame(scaler.fit_transform(X), columns=X.columns)# 定义模型集合
    models = {"Logistic Regression": LogisticRegression(max_iter=1000, random_state=42),"K-Nearest Neighbors": KNeighborsClassifier(),"Decision Tree": DecisionTreeClassifier(random_state=42),"Random Forest": RandomForestClassifier(random_state=42),"SVM": SVC(probability=True, random_state=42),
    }# 定义评价指标
    scoring = ["accuracy", "roc_auc"]# 逐模型评估
    for name, model in models.items():print(f"🔍 模型:{name}")for score in scoring:cv_scores = cross_val_score(model, X_scaled, y, cv=5, scoring=score)print(f"  [{score}] 平均得分: {cv_scores.mean():.4f} ± {cv_scores.std():.4f}")print("-" * 40)print("✅ 所有模型交叉验证完毕。")
    

    运行输出:

    🔎 是否包含 NaN: 0
    🔎 是否包含 Inf: 0
    🔎 特征最大值: 1.6341648019019988
    🔎 特征最小值: -1.6565987890014815
    🔍 模型:Logistic Regression[accuracy] 平均得分: 0.7500 ± 0.0988[roc_auc] 平均得分: 0.8409 ± 0.0656
    ----------------------------------------
    🔍 模型:K-Nearest Neighbors[accuracy] 平均得分: 0.6875 ± 0.0906[roc_auc] 平均得分: 0.7469 ± 0.0751
    ----------------------------------------
    🔍 模型:Decision Tree[accuracy] 平均得分: 0.6438 ± 0.0829[roc_auc] 平均得分: 0.6442 ± 0.0829
    ----------------------------------------
    🔍 模型:Random Forest[accuracy] 平均得分: 0.6937 ± 0.0696[roc_auc] 平均得分: 0.7739 ± 0.0815
    ----------------------------------------
    🔍 模型:SVM[accuracy] 平均得分: 0.6813 ± 0.0914[roc_auc] 平均得分: 0.7829 ± 0.0867
    ----------------------------------------
    ✅ 所有模型交叉验证完毕。
    

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

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

相关文章

xss-labs 1-8关

level1打开检查&#xff0c;发现test直接放入h2标签中此时通过script绕过h2标签构造payload127.0.0.1/xss-labs/lvel1.php?name<script>alert(111)</script>直接使用script标签绕过h2,并执行alert,通过level2打开检查&#xff0c;输入的123被放在input标签里面的v…

Conda 核心命令快速查阅表

本表旨在提供一个简洁、高效的 Conda 命令参考&#xff0c;专注于最常用功能的快速查找。 1. 环境管理 (Environment Management)功能 (Function)命令 (Command)示例 (Example)创建新环境conda create -n <env_name> [packages...]conda create -n myenv python3.9 panda…

音视频学习(三十九):IDR帧和I帧

主要区分&#xff1a;I 帧 是帧内编码帧&#xff0c;IDR 帧 是一种特殊的 I 帧&#xff0c;它是“清除参考帧链的强制切断点”。H.264 视频结构 结构 H.264 视频由多个 NAL&#xff08;Network Abstraction Layer&#xff09;单元 构成&#xff0c;每一帧图像可由一个或多个 NA…

人工智能与机器学习暑期科研项目招募(可发表论文)

人工智能与机器学习暑期科研项目招募 华中科技大学博士论文指导我是计算机专业的研二学生&#xff1a;从大二开始接触科研&#xff0c;至今已发表1篇CCF-A类会议论文、1篇CCF-B类会议论文&#xff0c;以及2篇Top期刊论文。正是这段从本科开始的科研经历&#xff0c;让我在保研和…

C盘爆满?一键清理恢复极速体验!“小番茄C盘清理”彻底解放你的电脑

目录 前言 C盘变红&#xff1f;&#xff01;那么你的电脑将会出现下面糟糕的情况&#xff1a; 一、小番茄C盘清理介绍——拯救你的C盘爆红&#xff01; 二、安装登录小番茄C盘清理 2.1 安装小番茄C盘清理 2.2 登录—拥有专属自己电脑的小番茄C盘清理 三、手把手教你深度…

UI前端大数据可视化实战技巧:如何利用数据故事化提升用户参与度?

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩!一、引言&#xff1a;从 “图表堆砌” 到 “故事共鸣” 的可视化革命当企业管理者面对布满折线…

CSS基础1.1

HTML骨架<!DOCTYPE html> <!-- 中文网站 --> <html lang"zh-CN"> <head><!--charset"UTF-8" 规定网页的字符编码 --><meta charset"UTF-8"><!-- ie(兼容性差) / edge --><meta http-equiv"X…

前端基础JavaScript 笔记

本文是基于 B 站 pink 老师前端 JavaScript 课程整理的学习笔记 JS简介 JavaScript是一种运行在客户端&#xff08;浏览器&#xff09;的编程语言 作用&#xff1a;1.网页特效(监听用户的一些行为让网页作出对应的反馈) 2.表单验证(针对表单数据的合法性进行判断) 3.数据交互…

「小程序开发」项目结构和页面组成

微信小程序目录 微信小程序的目录,每种文件都有特定用途,组合起来才能构建完整应用。 小程序最基本的目录结构通常包含这些部分: my-miniprogram/ ├── pages/ // 存放所有页面 │ ├── index/ // 存放index页面的逻辑文件 │ └── logs/ …

[element-ui]el-table在可视区域底部固定一个横向滚动条

背景当el-table的列太多时&#xff0c;得拖动横向滚动条才能看到&#xff0c;但如果内容也很多&#xff0c;可能横向滚动条还看不到&#xff0c;又得滑到最下方才能拖动滚动条&#xff0c;这样不太方便。若内容过多时&#xff0c;有个固定在可视区域的横向滚动条就好了&#xf…

大模型核心组件结构与计算顺序详解(Embedding/FFN/LayerNorm等)

在大模型&#xff08;如GPT、BERT、LLaMA等&#xff09;的架构设计中&#xff0c;各个组件的协同工作是模型性能的核心保障。本文将详细解析大模型中Embedding、前馈神经网络&#xff08;FFN&#xff09;、LayerNorm、Softmax、MoE、残差连接的作用及计算顺序&#xff0c;帮助理…

希尔排序:突破传统排序的边界

一、算法思想希尔排序&#xff08;Shell Sort&#xff09;&#xff0c;也被叫做缩小增量排序&#xff0c;是插入排序的一种改进版本。希尔排序的核心在于先将整个待排序的记录序列分割成若干个子序列&#xff0c;分别进行直接插入排序。随着增量逐渐减小&#xff0c;子序列的长…

Kafka事务消息与Exactly-Once语义实战指南

Kafka事务消息与Exactly-Once语义实战指南 在分布式微服务或大数据处理场景中&#xff0c;消息队列常被用于异步解耦、流量削峰和系统伸缩。对于重要业务消息&#xff0c;尤其是金融、订单、库存等场景&#xff0c;消息的精确投递&#xff08;Exactly Once&#xff09;和事务一…

26.将 Python 列表拆分为多个小块

将 Python 列表拆分为多个小块(Chunk a List) 📌 场景 1:按份数 chunk_into_n(lst, n) 将一个列表平均拆分为 n 个块。如果不能整除,最后一块会包含剩余元素。 ✅ 示例代码 from math import ceildef chunk_into_n(lst, n):size = ceil(len

18.理解 Python 中的切片赋值

1. 切片语法回顾 标准切片语法格式为: [start_at : stop_before : step]start_at:起始索引(包含)stop_before:结束索引(不包含)step:步长(默认为 1)例如: lst = [1, 2,

论文 视黄素与细胞修复

王伟教授发布&#xff0c;通过对比兔子和老鼠耳朵穿孔后的复原&#xff0c;控制变量法发现了 视黄素对细胞修复的影响

JavaScript 的执行上下文

当 JS 引擎处理一段脚本内容的时候,它是以怎样的顺序解析和执行的?脚本中的那些变量是何时被定义的?它们之间错综复杂的访问关系又是怎样创建和链接的?要解释这些问题,就必须了解 JS 执行上下文的概念。 JavaScript引擎: JavaScript引擎是一个计算机程序,它接收JavaScri…

掉线监测-tezos rpc不能用,改为残疾网页监测

自从有了编程伴侣&#xff0c;备忘的需求变得更低了&#xff0c;明显不担心记不住语法需要记录的情景。然而还是保持习惯&#xff0c;就当写日记吧&#xff0c;记录一下自己时不时在瞎捣腾啥。tm&#xff0c;好人谁记日记。就是监控灰色各自前紧挨着出现了多少红色格子。一共查…

Spark Expression codegen

Expression codegen src/main/scala/org/apache/spark/sql/catalyst/expressions/Expression.scala def genCode(ctx: CodegenContext): ExprCode = {ctx.subExprEliminationExprs.get(ExpressionEquals(

Axios方法完成图书管理页面完整版

一、目的 需要实现的功能有包括&#xff1a; 从服务器发送请求&#xff0c;获取图书列表并渲染添加新图书编辑现有图书信息删除图书以上每一步都实现与服务器存储数据同步更改 二、基础配置 引入Axios库&#xff1a; <script src"https://cdn.jsdelivr.net/npm/ax…