一、学习背景与目的

在机器学习流程中,数据预处理是保障模型训练效果的关键环节。原始数据常存在缺失值、量纲不一致、特征格式不匹配等问题,直接影响模型对数据规律的学习。本次学习围绕 Pandas 与 Scikit-learn(sklearn)工具库,系统掌握数据预处理的核心技术,包括缺失值处理、数据标准化、特征编码及数据二值化,为后续机器学习建模奠定基础。

二、核心知识点总结

(一)缺失值处理

缺失值是数据集中常见问题,需先识别再通过删除或填充解决,核心工具包括 Pandas 内置函数与 sklearn 的SimpleImputer

1. 缺失值识别(Pandas)
  • 关键函数isnull() 功能:判断数据框(DataFrame)或 Series 中每个单元格是否为空,返回布尔值(True表示空值,False表示非空值)。 注意事项:Pandas 默认仅识别NaN为缺失值,需通过na_values参数手动指定其他缺失值格式(如"n/a""na""-"),确保识别全面性。 示例代码:

    python

    运行

    import pandas as pd
    missing_values = ["n/a", "na", "-"]
    df = pd.read_csv('property-data.csv', na_values=missing_values)
    print(df['NUM_BEDROOMS'].isnull())  # 查看该列空值情况
    
2. 缺失值处理方法
处理方式工具 / 函数核心逻辑适用场景
删除法Pandas dropna()删除包含空值的行 / 列,参数how="any"(有一个空值即删)、how="all"(全为空才删)数据量较大、空值占比低,且删除后不影响数据分布
填充法 - Pandasfillna()用指定值(如常数666)、均值(mean())、中位数(median())填充空值数据量较小,需保留样本完整性
填充法 - sklearnSimpleImputer支持 4 种策略: - strategy="mean"(均值填充,适用于正态分布数据) - strategy="median"(中位数填充,适用于含异常值数据) - strategy="constant"(常数填充,需指定fill_value) - strategy="most_frequent"(众数填充,适用于分类数据)标准化处理流程,适配 sklearn 建模 pipeline

(二)数据标准化

标准化旨在解决 “不同特征量纲不一致导致模型偏向方差大的特征” 问题,核心是将数据转换为统一规格(无量纲化),常用两种方法。

1. 核心概念
  • 定义:将特征分布调整为特定形式(如标准正态分布),消除量纲影响,使不同特征具备可比性。
  • 无量纲化类型
    • 中心化:数据平移(减去固定值,如均值);
    • 缩放:数据压缩 / 扩张(除以固定值,如标准差、最大值)。
2. 常用标准化方法
方法工具 / 函数计算公式特点
最大最小值标准化preprocessing.MinMaxScaler()\(X_{scaled} = \frac{X - X_{min}}{X_{max} - X_{min}}\)可通过feature_range指定目标范围(默认[0,1]),适用于需要固定数据范围的场景(如神经网络输入)
Z 值标准化preprocessing.StandardScaler()\(X_{scaled} = \frac{X - \mu}{\sigma}\)(\(\mu\)为均值,\(\sigma\)为标准差)转换后数据均值为 0、方差为 1,保留原始数据分布关系,适用于线性模型(如逻辑回归、SVM)

(三)特征编码

将非数值型分类特征转换为数值型,根据特征类型(名义 / 有序 / 有距)选择不同编码方式。

1. 特征类型划分
  • 名义变量:无顺序关系(如性别:男 / 女、血型:A/B/AB/O);
  • 有序变量:有顺序但不可计算(如学历:小学 < 初中 < 高中);
  • 有距变量:有顺序且可计算(如分数:100/90/60)。
    2. 核心编码方法
    编码方式工具 / 函数适用特征类型原理与示例
    独热编码preprocessing.OneHotEncoder()名义变量用 N 位二进制向量表示 N 个类别(如血型 A→[1,0,0,0],B→[0,1,0,0]),避免引入虚假顺序关系
    序号编码preprocessing.OrdinalEncoder()有序变量将类别按顺序映射为整数(如学历:小学→1,初中→2,高中→3),保留原有顺序
    目标标签编码preprocessing.LabelEncoder()目标变量(y)将目标标签映射为 0~n_classes-1 的整数(如 “存活”→1,“死亡”→0),仅用于目标值,不用于输入特征(X)

    (四)数据二值化

  • 定义:根据阈值将连续数据分为两类(0 或 1),实现 “非黑即白” 的简化表达。
  • 工具 / 函数preprocessing.Binarizer()
    核心参数:threshold(阈值,大于阈值为 1,否则为 0)。
    示例:将年龄二值化(阈值 30),年龄 > 30→1,年龄≤30→0:

    python

    运行

    from sklearn.preprocessing import Binarizer
    X = data.iloc[:,0].values.reshape(-1,1)  # 年龄列
    transformer = Binarizer(threshold=30).fit_transform(X)
    
  • 三、关键工具函数速查表

    工具库函数核心功能
    Pandasisnull()识别缺失值(布尔判断)
    Pandasdropna()删除含空值的行 / 列
    Pandasfillna()填充缺失值(常数 / 均值 / 中位数)
    sklearn.preprocessingMinMaxScaler()最大最小值标准化
    sklearn.preprocessingStandardScaler()Z 值标准化(均值 0、方差 1)
    sklearn.preprocessingOneHotEncoder()名义变量独热编码
    sklearn.preprocessingOrdinalEncoder()有序变量序号编码
    sklearn.preprocessingLabelEncoder()目标标签编码
    sklearn.preprocessingBinarizer()数据二值化
    sklearn.imputeSimpleImputer()标准化填充缺失值(均值 / 中位数 / 众数 / 常数)

    四、学习总结与应用建议

  • 流程优先级:数据预处理需遵循 “先识别缺失值→处理缺失值→标准化→特征编码” 的顺序,确保每一步输出符合下一步输入要求。
  • 方法选择原则
    • 缺失值:数据量大用删除法,数据量小用填充法(正态分布用均值,异常值多用中位数,分类数据用众数);
    • 标准化:线性模型用 Z 值标准化,神经网络用 MinMaxScaler;
    • 编码:名义变量用独热编码,有序变量用序号编码,目标值用 LabelEncoder。
  • 工具适配:Pandas 适合快速数据清洗(如缺失值初步处理),sklearn 适合标准化流程(便于与后续建模整合为 pipeline)。

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

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

相关文章

git旧仓库迁移到新仓库

git旧仓库迁移到新仓库 A仓库(旧仓库)&#xff1a;git172.16.21.21:xxxx_software/Ni-Handler-Mgr.git B仓库(新仓库)&#xff1a;git172.16.11.11:yyyy/hostpc/ni-handler-mgr.git Step1 新建新仓库 创建新 GitHub 仓库‌ 在 GitHub 页面点击 “New repository”&#xff0c;命…

YOLO --- YOLOv5模型以及项目详解

YOLO — YOLOv5模型以及项目详解 文章目录YOLO --- YOLOv5模型以及项目详解一&#xff0c;开源地址二&#xff0c;改进点Focus 模块三&#xff0c;网络结构3.1 CSP1_X 与 CSP2_X3.2 自适应Anchor的计算3.3 激活函数3.3.1 SiLU3.3.2 Swish3.4 Bottleneck3.5 C33.5.1 BottleneckC…

Linux文本三剑客的使用及常见重点操作

文本三剑客指 Linux环境下的 grep&#xff08;搜索&#xff09;、sed&#xff08;编辑&#xff09;、awk&#xff08;分析&#xff09;三款用于文本处理的核心命令&#xff0c;三者分工明确、功能互补&#xff0c;是处理日志、配置文件、结构化数据等场景的 “刚需工具”。一、…

​​《开源字幕神器VideoCaptioner实战:基于Whisper+LLM的全链路方案,免费平替剪映会员》​​

&#x1f4cc; 大家好&#xff0c;我是智界工具库&#xff0c;每天分享好用实用且智能的开源项目&#xff0c;以及在JAVA语言开发中遇到的问题&#xff0c;如果本篇文章对您有所帮助&#xff0c;请帮我点个小赞小收藏小关注吧&#xff0c;谢谢喲&#xff01;&#x1f618; 博主…

redisIO模型

​​1. 总述核心​​“Redis采用了​​单线程的Reactor模型​​来处理网络IO和命令请求。其核心在于&#xff0c;​​它使用一个主线程通过IO多路复用机制来并发地处理大量的客户端连接&#xff0c;而实际的命令解析和执行则是单线程的​​。”这句话非常重要&#xff0c;它直接…

视觉采集模块的用法

一、图像源模块用法采集模块中最基础的单元就是图像源模块&#xff0c;其中图像的输入方式包括相机输入、本地图像、SDK三种。添加图像源后&#xff0c;需要对内部的参数进行对应的配置&#xff0c;正常我们连接相机后图像源选择我们对应的连接相机。配置所需要的相机参数&…

Linux下基于Electron的程序ibus输入法问题

Linux下基于Electron的程序ibus输入法问题 最近想体验一下KDE Plasma桌面&#xff0c;遇到一个问题&#xff0c;就是浏览器输入不了中文&#xff0c;Edge、Chrome都一样&#xff0c;当然它们都是基于Chromium的&#xff0c;出同样的问题很正常。后面发现Visual Code也有同样的问…

Ubuntu20系统上离线安装MongoDB

Ubuntu20系统上离线安装MongoDB 准备工作&#xff1a;下载安装包及依赖​ 下载MongoDB二进制包​ 在联网环境中访问MongoDB官网&#xff0c;选择以下配置&#xff1a; 下载地址&#xff1a;https://www.mongodb.com/try/download/community ​Version​&#xff1a;需与目标系统…

K-Means 聚类算法如何选择初始点

n_clusters 参数是告诉 K-Means 算法对 整个数据集 (X_scaled) 进行分簇。让我们分解一下这个过程的逻辑&#xff1a;目标&#xff1a;我们的目标不是要对数据进行分类&#xff0c;而是要从成百上千个数据点中&#xff0c;智能地挑选出大约30个点作为贝叶斯优化的“起点”。这些…

聚铭安全管家平台2.0实战解码 | 安服篇(四):重构威胁追溯体系

在企业安全运营中&#xff0c;两类问题常常让团队陷入被动 1、“看得见威胁&#xff0c;却追不到源头” 明明检测到多台内网设备遭攻击&#xff0c;却迟迟找不到攻击源头&#xff0c;更说不清攻击者用了什么手法&#xff0c;导致无法及时封禁或隔离。 2、“找到了源头&#xff…

【Microi吾码】:低代码加速业务和技术深度融合

目录 一.低代码优势&#xff1a; 1.1低代码平台和传统代码开发&#xff1a; 1.2低代码和0代码平台&#xff1a; 1.3低代码平台&#xff1a;Microi吾码 二.关于开源低代码平台&#xff1a;Microi吾码 2.1Mircroi吾码介绍&#xff1a; 2.2产品特点&#xff1a; 2.3产品团…

Mongodb操作指南

一、数据库操作1. 展示所有非空数据库show dbs该命令会列出所有包含数据的数据库。2. 显示当前数据库db此命令用于查看当前正在使用的数据库。3. 切换或创建数据库use 数据库名如果指定的数据库不存在&#xff0c;MongoDB 会在首次插入数据时自动创建它。如果已存在&#xff0c…

线性回归计算

一、理论&#xff1a;明确线性回归的核心逻辑模型本质&#xff1a;线性回归是通过属性的线性组合实现预测的模型&#xff0c;核心目标是找到最优的直线&#xff08;单变量&#xff09;、平面&#xff08;双变量&#xff09;或超平面&#xff08;多变量&#xff09;&#xff0c;…

pnpm : 无法加载文件 C:\Program Files\nodejs\pnpm.ps1,因为在此系统上禁止运行脚本。

解决办法 1、以管理员身份运行window powershell 2、执行Get-ExecutionPolicy&#xff0c;显示Restricted 3、执行set-ExecutionPolicy&#xff0c;会提示输入参数&#xff0c;此时输入RemoteSigned回车 4、执行y回车

[特殊字符] TTS格局重塑!B站推出Index-TTS,速度、音质、情感表达全维度领先

B站维度之言&#xff1a;B 站 2025 新声计划&#xff1a;IndexTTS 全维度拆解 ——从开源血统到中文特调的架构复盘1&#xff1a;打破边界&#xff1a;Index-TTS 的技术动因场景野心&#xff1a;直播实时口播、无障碍字幕、AI 虚拟 UP 主……B 站需要一把“声音瑞士军刀”&…

第5.3节:awk数据类型

1 第5.3节&#xff1a;awk数据类型 awk并没有非常严格的数据类型&#xff0c;但在编写代码的过程中&#xff0c;大致可以分为以下数据类型&#xff1a; 1.1 数字型 #普通表示法 a 123 b 123.333 #科学表示法 c 1.33e13 d 1.05e-5代码示例&#xff1a; $ echo |awk { >…

基于coco和kitti数据集训练YOLOX

原文发表在知乎&#xff0c;辛苦移步&#xff5e;&#xff5e; 《基于coco和kitti数据集训练YOLOX》 yolox官方的指标数据是在coco数据集上训练出来的&#xff0c;yolox-s模型在11万coco数据集上训练后&#xff0c;mAP(0.5-0.95)40.5。手头有kitti的数据集&#xff0c;所以在…

声网AI语音体验太丝滑,支持随时打断提问

我们教培团队近期测试了一款整合声网语音引擎的对话式 AI 教学工具&#xff0c;体验远超预期。原本以为它仅适用于 1v1 口语练习&#xff0c;没想到已能支持小班课 —— 实测 3 人课堂中&#xff0c;学生轮流发言、提问、插话&#xff0c;AI 都能紧跟节奏&#xff0c;不打断讨论…

【GaussDB】内存资源告急:深度诊断一起“memory temporarily unavailable”故障

一、背景在客户测试环境中&#xff08;GaussDB 506.0 SPC0100 集中式&#xff09;&#xff0c;一个重度使用存储过程的系统&#xff0c;频繁出现内存临时不可用的问题(ERROR: memory is temporarily unavailable)。令人困惑的是&#xff0c;这个环境配置的内存大小已经数十倍于…

LeeCode 40.组合总和II

给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用 一次 。注意&#xff1a;解集不能包含重复的组合。 示例 1:输入: candidates [10,1,2,7,6,1,5], t…