机器学习数据预处理详解:标准化、填充缺失值及编码离散特征

本文主要是介绍机器学习数据预处理详解:标准化、填充缺失值及编码离散特征,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

      • 示例数据集
        • 训练数据 (`train_data`)
        • 测试数据 (`test_data`)
      • 步骤解析
        • 1. 合并所有特征以进行预处理
        • 2. 标准化数值特征
        • 3. 填充缺失值为0
        • 4. 处理离散数值特征
        • 5. 确保所有特征都是数值类型


在机器学习建模过程中,数据预处理是至关重要的一步。本文将通过具体示例,详细解释数据预处理的关键步骤,包括标准化数值特征、填充缺失值以及编码离散特征。我们将使用一个简单的训练和测试数据集来说明这些步骤。

示例数据集

训练数据 (train_data)
IdFeature1Feature2Feature3Label
1105.0A100
2206.5B200
330NaNA300
测试数据 (test_data)
IdFeature1Feature2Feature3
4255.5B
5357.0NaN

步骤解析

1. 合并所有特征以进行预处理

首先,将训练和测试数据集的特征(不包括标签列Label)合并,以便对所有特征进行统一的预处理。

all_features = pd.concat((train_data.iloc[:, 1:-1], test_data.iloc[:, 1:]))

合并后的结果:

Feature1Feature2Feature3
105.0A
206.5B
30NaNA
255.5B
357.0NaN
2. 标准化数值特征

确定数值型特征的列,然后对这些特征进行标准化处理,使每个数值特征的均值为0,标准差为1。

numeric_features = all_features.dtypes[all_features.dtypes != 'object'].index
all_features[numeric_features] = all_features[numeric_features].apply(lambda x: (x - x.mean()) / x.std())

在这个例子中,Feature1Feature2 是数值型特征。首先计算它们的均值和标准差:

  • Feature1的均值 = (10 + 20 + 30 + 25 + 35) / 5 = 24
  • Feature1的标准差 ≈ 9.57
  • Feature2的均值 = (5.0 + 6.5 + 5.5 + 7.0) / 4 = 6.0
  • Feature2的标准差 ≈ 0.79

标准化后的结果:

Feature1Feature2Feature3
-1.46-1.27A
-0.420.63B
0.63NaNA
0.10-0.63B
1.151.27NaN
3. 填充缺失值为0

将数值型特征中的缺失值(NaN)填充为0。

all_features[numeric_features] = all_features[numeric_features].fillna(0)

填充缺失值后的结果:

Feature1Feature2Feature3
-1.46-1.27A
-0.420.63B
0.630.00A
0.10-0.63B
1.151.27NaN
4. 处理离散数值特征

将离散特征(分类特征)进行独热编码(one-hot encoding),包括缺失值(dummy_na=True)。

all_features = pd.get_dummies(all_features, dummy_na=True)

编码后的结果:

Feature1Feature2Feature3_AFeature3_BFeature3_nan
-1.46-1.27100
-0.420.63010
0.630.00100
0.10-0.63010
1.151.27001
5. 确保所有特征都是数值类型

确保所有特征的数据类型都是 float32

all_features = all_features.astype(np.float32)

最终结果是一个完全由数值型特征组成的DataFrame,并且所有特征都经过标准化和缺失值处理,准备好用于后续的模型训练和预测:

最终结果:

Feature1Feature2Feature3_AFeature3_BFeature3_nan
-1.46-1.271.00.00.0
-0.420.630.01.00.0
0.630.001.00.00.0
0.10-0.630.01.00.0
1.151.270.00.01.0

通过这些步骤,我们成功地对训练和测试数据集的特征进行了标准化、缺失值处理和独热编码,使其准备好用于后续的模型训练和预测。

提示:更多内容可以访问Clang’s Blog:https://www.clang.asia

这篇关于机器学习数据预处理详解:标准化、填充缺失值及编码离散特征的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1001039

相关文章

Python异步编程之await与asyncio基本用法详解

《Python异步编程之await与asyncio基本用法详解》在Python中,await和asyncio是异步编程的核心工具,用于高效处理I/O密集型任务(如网络请求、文件读写、数据库操作等),接... 目录一、核心概念二、使用场景三、基本用法1. 定义协程2. 运行协程3. 并发执行多个任务四、关键

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、

Java利用@SneakyThrows注解提升异常处理效率详解

《Java利用@SneakyThrows注解提升异常处理效率详解》这篇文章将深度剖析@SneakyThrows的原理,用法,适用场景以及隐藏的陷阱,看看它如何让Java异常处理效率飙升50%,感兴趣的... 目录前言一、检查型异常的“诅咒”:为什么Java开发者讨厌它1.1 检查型异常的痛点1.2 为什么说

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I

springboot2.1.3 hystrix集成及hystrix-dashboard监控详解

《springboot2.1.3hystrix集成及hystrix-dashboard监控详解》Hystrix是Netflix开源的微服务容错工具,通过线程池隔离和熔断机制防止服务崩溃,支持降级、监... 目录Hystrix是Netflix开源技术www.chinasem.cn栈中的又一员猛将Hystrix熔

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Java调用Python脚本实现HelloWorld的示例详解

《Java调用Python脚本实现HelloWorld的示例详解》作为程序员,我们经常会遇到需要在Java项目中调用Python脚本的场景,下面我们来看看如何从基础到进阶,一步步实现Java与Pyth... 目录一、环境准备二、基础调用:使用 Runtime.exec()2.1 实现步骤2.2 代码解析三、

python之uv使用详解

《python之uv使用详解》文章介绍uv在Ubuntu上用于Python项目管理,涵盖安装、初始化、依赖管理、运行调试及Docker应用,强调CI中使用--locked确保依赖一致性... 目录安装与更新standalonepip 安装创建php以及初始化项目依赖管理uv run直接在命令行运行pytho