机器学习中的数据处理技巧

一、Pandas处理丢失数据

(一)判断缺失值

  • ​​isnull()函数​​:用于判断数据框(DataFrame)中各个单元格是否为空,可帮助我们识别出存在缺失数据的单元格位置。

(二)处理缺失值的方法

  1. ​​删除包含空字段的行​​

    • ​​dropna()函数​​

      • ​​语法格式​​:DataFrame.dropna(axis = 0, how = 'any', thresh = None, subset = None, inplace = False)

      • ​​作用​​:通过该函数可以删除包含空字段(缺失值)的行,可根据具体需求设置参数,如axis指定删除行还是列(0为行,1为列),how决定删除规则(如'any'表示只要存在缺失值就删除该行/列,'all'表示该行/列全部为缺失值才删除等),thresh可设置保留行/列所需的最少非缺失值数量等。

  2. ​​填充空字段​​

    • ​​fillna()函数​​:用指定内容来替换数据框中的空字段,可根据实际情况选择合适的填充值,如固定数值、均值、中位数等。

    • ​​mean()函数​​:计算列的均值,常可将该均值作为填充值,用于替换对应列中的空单元格,使数据在数值上保持一定的统计特性。

    • ​​median()函数​​:计算列的中位数,同样可作为填充空单元格的合适值,尤其适用于数据存在偏态分布等情况,能避免极端值对填充结果的影响。

二、缺失值处理(Impute.SimpleImputer()相关)

(一)使用均值填补

  • 通过Impute.SimpleImputer()相关功能,可采用数据列的均值来填补缺失值,在数据整体分布相对较为均衡、无明显偏态且缺失值不是集中在某一特殊群体等情况下,使用均值填补能在一定程度上维持数据的整体统计特征,使后续分析或建模不受缺失值的过多干扰。

(二)使用中位数填补

  • 利用Impute.SimpleImputer()以数据列的中位数进行缺失值填补,当数据存在一定偏态分布或者有少数极端值时,中位数相较于均值受极端值影响更小,用其填补缺失值可使填补后的数据更能代表数据的中间水平,保证数据在后续处理过程中的稳定性和可靠性。

(三)使用常数填补

  • 借助Impute.SimpleImputer(),能够选择一个特定的常数来填充缺失值,这个常数可以根据业务背景、数据含义等来灵活确定,比如对于某些表示状态或分类相关的变量,若缺失值有其特定的默认状态含义,就可以用对应的常数进行填补。

(四)使用众数填补

  • 通过Impute.SimpleImputer()采用数据列的众数(即出现频率最高的数值)来填补缺失值,对于一些离散型变量或者具有明显集中趋势的变量,众数能很好地反映数据的常见取值情况,用众数填补缺失值可以让数据在填补后更符合数据原本的集中特征,有助于后续分析的准确性。

三、数据标准化

(一)标准化定义及原因

  • ​​标准化定义​​:对数据进行标准化处理,主要是为了消除不同特征之间因量纲、数量级等差异而可能对数据分析、模型训练等造成的不良影响,使各个特征处于同一尺度下,提升模型性能以及数据分析结果的可靠性。

  • ​​原因​​:不同特征可能具有不同的单位(如身高用厘米、体重用千克)、不同的取值范围(如年龄范围是0 - 100,收入范围可能是几万到上百万)等,如果不进行标准化,这些差异可能会导致在模型训练过程中某些特征对结果的影响过大,而标准化后能让各个特征公平地参与到后续的分析和建模过程中。

(二)无量纲化相关概念

  • ​​无量纲化定义​​:将不同规格的数据转换到同一规格,或不同分布的数据转换到某个特定分布的需求,称为将数据“无量纲化”,其目的是让数据在统一的标准下进行分析和处理。

  • ​​无量纲化类型​​

    • ​​线性无量纲化​​:包括中心化处理和缩放处理。

      • ​​中心化本质​​:让所有记录减去一个固定值,也就是让数据样本数据平移到某个位置,通常是将数据的均值作为这个固定值,使得处理后的数据均值为0,便于后续分析和比较。

      • ​​缩放本质​​:通过除以一个固定值,将数据固定在某个范围之中,比如常见的将数据缩放到0 - 1范围等,取对数也算是一种缩放处理,可对数据的分布形态进行调整,使其更符合后续处理要求。

(三)具体的标准化方法

  1. ​​preprocessing.MinMaxScaler()(最大最小值标准化)​​

    • 该方法通过对数据进行线性变换,将数据缩放到指定的范围(通常是0 - 1范围),其计算方式是先找出数据列中的最小值和最大值,然后根据公式将每个数据点映射到指定区间内,使得数据在不同特征之间具有可比性,常用于需要将数据限制在特定范围的情况,比如神经网络等模型的输入数据要求。

  2. ​​preprocessing.StandardScaler()(Z值数据标准化)​​

    • 该方法也称为Z - score标准化,它会将数据转换为均值为0、标准差为1的标准正态分布,计算时是先求出数据列的均值和标准差,然后根据公式对每个数据点进行转换,使得数据在各个特征维度上具有相同的均值和方差,这种标准化方式在很多机器学习算法中广泛应用,尤其是那些对数据的分布形态较为敏感的算法。

四、特征编码

(一)特征类型介绍

  1. ​​名义变量​​

    • 数值之间相互独立,彼此没有联系,例如性别(男、女),这些不同的取值只是类别标识,不存在大小、顺序关系,不能进行常规的数学计算。

  2. ​​有序变量​​

    • 数值之间有顺序,但不能进行计算,比如学历(小学、初中、高中),虽然有从低到高的顺序关系,但不同学历之间的差值等数学运算没有实际意义。

  3. ​​有距变量​​

    • 数值之间有联系且可以计算,例如分数(100、90、60),这些数值之间不仅可以比较大小,还能进行诸如求差值、平均值等数学运算,反映了数据在数值上的实际关联和可度量性。

(二)特征编码方法

  1. ​​独热编码(OneHotEncoder)​​

    • 主要用于处理名义变量等类型的数据,它将每个类别转换为一个独立的二进制特征(0或1),从而将类别型数据转换为适合机器学习模型处理的形式,避免了模型将类别数值误当作具有数学意义的数值进行处理,保证了模型对这类数据的正确理解和处理。

  2. ​​序号编码​​

    • 针对有序变量,按照其顺序关系为每个类别赋予一个序号,使得数据在保留顺序信息的同时,能够以数值形式参与到后续的分析和建模中,序号的赋予要遵循其原本的顺序逻辑,以便模型能正确捕捉到这种顺序关系。

  3. ​​目标标签编码​​

    • 通常用于将目标变量(标签)进行编码,将其转换为适合模型训练和评估的数值形式,根据目标变量的具体类型(如分类目标变量等)和模型要求,选择合适的编码方式,以便模型能够准确地对目标进行学习和预测。

  4. ​​数据二值化​​

    • 根据数值是否大于某个阈值,将数据分为两类0或1,这种编码方式常用于将连续型数据或具有一定取值范围的数据转换为简单的二分类形式,便于在一些只关注数据是否超过特定界限等场景下进行后续分析和建模,比如判断某个指标是否达标等情况。

五、课堂总结

本次内容主要围绕机器学习中的数据处理展开,涵盖了使用Pandas处理数据缺失值(判断、删除、填充等),利用Impute.SimpleImputer()进行多种方式的缺失值填补,阐述数据标准化(包括定义、原因、无量纲化概念及具体的最大最小值标准化、Z值数据标准化等方法),介绍特征编码(不同特征类型及对应的独热编码、序号编码、目标标签编码、数据二值化等编码方法),这些数据处理技巧是机器学习流程中至关重要的前期准备工作,能为后续的模型训练、分析和预测提供高质量、可靠的数据基础,帮助提升整个机器学习项目的效果和准确性。

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

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

相关文章

田野科技“一张皮”,“AI+虚拟仿真”推动考古教学创新发展

文运同国运相牵,文脉同国脉相连。考古不仅关系到我们对古代文化的认知、发掘、保护、利用,关系到考古学学科体系、学术体系、话语体系的建设,更是关系到我国考古学的国际影响力,对增强世界不同地区古代文明的比较研究有着十分重要…

为什么我的UI界面会突然卡顿,失去响应

有操作都应是“非阻塞”的,以确保能随时响应用户的输入。导致主线程阻塞的常见“元凶”主要涵盖五个方面:主线程被“长时间”的同步计算所“阻塞”、单次渲染的界面节点过多或过于复杂、内存中存在“未释放”的巨大对象或“内存泄漏”、响应了“高频率”…

大规模IP轮换对网站的影响(服务器压力、风控)

在当下的互联网环境中,代理IP轮换已经成为爬虫、SEO、数据采集等行业的常见手段。尤其是大规模数据抓取时,通过代理池实现IP轮换,可以有效避免因单一IP请求过于频繁而被目标网站封禁。 然而,大规模IP轮换虽然对采集方有利&#xf…

4. STM32 vscode 环境, 官方插件

文章目录1. 新建配置2. 安装插件3. 新建工程1. 新建配置 新建vscode 配置, 因为stm32插件比较多, 避免和其他插件冲突。 激活环境: 这里可快速切换: 2. 安装插件 可选择安装最新预览版: 等待依赖安装完成后重启…

【动态规划:路径问题】最小路径和 地下城游戏

最小路径和(medium) 64. 最小路径和 ​ 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 ​ **说明:**每次只能向下或者向右移动一步。 示例 1&#xff…

SQL详细语法教程(七)核心优化

以下对 SQL 优化 涉及的关键场景(含 update 行锁优化)进行极致详细的拆解,从底层原理、执行流程到实战代码、避坑指南全维度覆盖,搭配表格对比让逻辑更清晰:一、SQL 优化 - COUNT 优化1. 底层原理:COUNT() …

Tomcat 的核心脚本catalina.sh 和 startup.sh的关系

catalina.sh 和 startup.sh 都是 Tomcat 的核心脚本,但它们的角色和使用场景有所不同。以下是它们的主要区别和适用场景:1. 功能区别脚本主要用途底层调用关系startup.sh一个快捷入口脚本,用于快速启动 Tomcat(后台模式&#xff0…

飞算JavaAI:简易贪吃蛇小游戏

目录先确定核心功能技术选型核心功能实现过程1. 数据模型设计2. 游戏界面和绘制逻辑3. 游戏主框架和事件处理飞算JavaAI在开发中的应用体验可以进一步优化的地方作为Java课程的小作业,不想做太复杂的管理系统,就选了贪吃蛇这个经典小游戏。全程用Swing做…

如何保障内部网络安全前提下,实现与外部互联网之间的文件传输?

在数字化时代,企业网络环境日益复杂,普遍采用“内外网隔离”的安全架构:内部办公网承载业务系统与数据,外部互联网则用于对外沟通与信息获取。这种隔离有效抵御了外部攻击,但也带来了“信息孤岛”问题——如何在保障内…

计算机视觉 图片处理 在骨架化过程中,每次迭代都会从图像的边缘移除一层像素,直到只剩下单像素宽度的骨架

你说得对,if cv2.countNonZero(binary) 0: break 这个条件确实表示图像中已经没有非零像素,即图像完全变为空白。这并不是骨架化完成的标志,而是表示图像已经被腐蚀到没有任何内容了。 在骨架化过程中,我们需要一个更合适的停止条…

rt-thread audio框架移植stm32 adc+dac,用wavplayer录音和播放

D1 参考 rt-thread官方sdk中,正点原子stm32f429-atk-appollo的board中有audio文件夹,包括了mic/play的程序,wm8978的库文件因为我们基于stm32h750内置adcdac设计,所以不需要wm8978.c/h。只需要移植drv_sound.c和drv_mic.c D2 工程…

AI重塑软件测试:质量保障的下一站

软件开发的世界变化飞快,系统越来越复杂,用户的胃口越来越大,产品上线的压力也越来越大。作为测试工程师,你是不是常常觉得传统测试已经跟不上节奏了?手工测试累死人,自动化脚本维护到崩溃,测试…

【前端基础知识系列六】React 项目基本框架及常见文件夹作用总结(图文版)

在 React 开发中,一个清晰合理的项目结构不仅能提高开发效率,还能让代码更易于维护和扩展。尤其是在团队协作中,统一的项目结构规范至关重要。本文将通过图文结合的方式,详细介绍 React 项目的基本框架以及常见文件夹的定义与作用…

0815 UDP通信协议TCP并发服务器

Part 1.思维导图一.UDP通信协议1.原理服务器端:1.用socket函数创建一个套接字文件2.创建服务器端地址结构体并赋值3.用ford函数将套接字文件与地址结构体绑定4.创建接收客户端地址结构体5.利用sendto和recvfrom函数传输和接收信息客户端:1.用socket函数创…

一个基于纯前端技术实现的五子棋游戏,无需后端服务,直接在浏览器中运行。

一 功能特性1.1 核心游戏功能- **标准五子棋规则**:1515棋盘,黑子(玩家)先手 - **AI对战模式**:白子AI具有中等难度,会进行智能进攻和防守 - **胜负判定**:支持横向、纵向、斜向五子连线获胜 - **平局检测**&#xff1…

HBuilderX升级,Vue2 scss 预编译器默认已由 node-sass 更换为 dart-sass

目录 一、问题描述 二、问题原因 三、问题解析及解决方案 一、问题描述 最近开发新项目,升级了HBuilderX版本到4.75,最近要在之前的项目添加功能的时候发现报错,错误如下:Vue2 scss 预编译器默认已由 node-sass 更换为 dart-sa…

像素风球球大作战 HTML 游戏

像素风球球大作战 HTML 游戏 下面是一个简单的像素风格球球大作战 HTML 游戏代码&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-widt…

文件导出时无法获取响应头Content-Disposition的文件名

1. 为什么Content-Disposition无法获取&#xff1f; 要拿到 Content-Disposition 里的 filename&#xff0c;可以用正则或者简单的字符串解析。 浏览器默认不让前端访问非标准响应头&#xff0c;Content-Disposition 需要后端显式暴露。 在浏览器开发者工具 → Network → Re…

Leetcode 128. 最长连续序列 哈希

原题链接&#xff1a; Leetcode 128. 最长连续序列 解法1: map&#xff0c;不符合要求 class Solution { public:int longestConsecutive(vector<int>& nums) {if (nums.size()0) return 0;map<int,int> mp;for(auto x: nums){mp[x];}int pre;int l0,r0,res0;…

禾赛激光雷达AT128P/海康相机(2):基于欧几里德聚类的激光雷达障碍物检测

目录 一、参考连接 二、实验效果​编辑 三、安装相应的 ros 依赖包 四、代码驱动 4.1 代码下载 4.2 代码文件放置(请按照这个命名放置代码) 4.3 代码编译 4.4 报错 一、参考连接