学习笔记(24): 机器学习之数据预处理Pandas和转换成张量格式[2]
学习笔记(24): 机器学习之数据预处理Pandas和转换成张量格式[2]
学习机器学习,需要学习如何预处理原始数据,这里用到pandas,将原始数据转换为张量格式的数据。
学习笔记(23): 机器学习之数据预处理Pandas和转换成张量格式[1]-CSDN博客
下面介绍下:处理缺失值(删除法)
为什么要这样做?
这种处理缺失值的策略很实用,当某列的缺失值比例过高时,保留该列可能会对后续分析造成负面影响。删除缺失值最多的列可以避免在缺失值填充时引入过多噪声,提高数据质量。
原始数据:
NumRoos Alley Price
0 NaN Pave 127500
1 2.0 NaN 106000
2 4.0 NaN 178100
3 NaN NaN 140000
1、处理缺失值(删除法)
“NaN”项代表缺失值。 为了处理缺失的数据,典型的方法包括插值法和删除法, 其中插值法用一个替代值弥补缺失值,而删除法则直接忽略缺失值。 在这里,我们将考虑删除法。
1.1、代码
# 处理缺失值
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
# 转换 NumRoos 列为数值类型(将 'NA' 转为 NaN)
inputs['NumRoos'] = pd.to_numeric(inputs['NumRoos'],errors='coerce')# 计算每列的缺失值数量
miss_counts = inputs.isna().sum()
print("\n各列缺失值数量:")
print(miss_counts)# 找出缺失值最多的列
if not miss_counts.empty:max_miss = miss_counts.max() # 计算最大缺失值数量,结果为3(Alley列有3个缺失值print(max_miss)clos_drop = miss_counts[miss_counts ==max_miss].index.tolist() #筛选出缺失值数量等于最大值的列,miss_counts == max_miss 返回布尔 Seriesinputs = inputs.drop(columns=clos_drop) #删除筛选出的列print(f"\n已删除缺失值最多的列: {clos_drop}")# 用均值填充 NumRoos 列的缺失值
inputs['NumRoos'] = inputs['NumRoos'].fillna(inputs['NumRoos'].mean())print("\n处理后的数据:")
print(inputs)
代码解析如下
1. 数据分割:提取输入特征和输出标签
inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]inputs:提取数据的前两列(索引 0 和 1)作为特征(NumRoos和Alley)。
outputs:提取第三列(索引 2)作为目标变量(Price)。
2. 将NumRoos列转换为数值类型
inputs['NumRoos'] = pd.to_numeric(inputs['NumRoos'], errors='coerce')pd.to_numeric(..., errors='coerce'):将字符串类型的数值转换为数字,无法转换的(如NA)会被转为NaN(缺失值)。
3. 计算每列的缺失值数量
miss_counts = inputs.isna().sum()
print("\n各列缺失值数量:")
print(miss_counts)
inputs.isna():返回一个布尔型 DataFrame,标记每个位置是否为缺失值。
.sum():统计每列的True(缺失值)数量。
#筛选出缺失值数量等于最大值的列
clos_drop = miss_counts[miss_counts == max_miss].index.tolist()
这行代码主要做了三件事:筛选、提取索引、转换为列表。
1、筛选操作
missing_counts[...]
miss_counts == max_miss 返回布尔 Series
miss_counts[...] 筛选出值为True的行(即Alley)。# 结果:
# NumRoos False
# Alley True
# dtype: bool2、
.index
获取列名筛选结果是一个新的 Series,我们需要它的索引(也就是列名)
# 结果:
# Index(['Alley'], dtype='object')3、
.tolist()
转换为列表.index.tolist() 将列名转为列表 ['Alley']。
为什么要转换为列表?
你可能会问:为什么不直接用索引对象,而非要转成列表呢?这主要是为了兼容drop()
方法。drop()
方法的columns
参数可以接受列名列表或索引对象,但列表更灵活,方便后续处理。
关键细节总结
1、缺失值处理策略:
优先删除缺失比例最高的列(Alley列缺失率 75%)。
对剩余列(NumRoos)用均值填充。
2、数据类型转换:
pd.to_numeric(..., errors='coerce') 是处理含缺失值的数值列的常用方法。
3、边缘情况处理:
当有多个列缺失值数量相同时(如两列均有 3 个缺失值),会同时删除这些列。
if not miss_counts.empty 确保无缺失值时不会报错。
# 用均值填充 NumRoos 列的缺失值
inputs['NumRoos'] = inputs['NumRoos'].fillna(inputs['NumRoos'].mean())
inputs['NumRoos'].mean():计算NumRoos列的均值(结果为 3.0,因为有效数值为 2 和 4)。
.fillna(...):将NumRoos列的缺失值(NaN)填充为均值 3.0。
1.2、执行结果
2、转换为张量格式
现在inputs
和outputs
中的所有条目都是数值类型,它们可以转换为张量格式。
2.1、代码
import torch
print("\n转换成张量数据:")
x = torch.tensor(inputs.to_numpy(dtype=float))
print(x)
y = torch.tensor(outputs.to_numpy(dtype=float))
print(y)
2.2、执行结果
-
pandas
软件包是Python中常用的数据分析工具中,pandas
可以与张量兼容。 -
用
pandas
处理缺失的数据时,我们可根据情况选择用插值法和删除法。
相关文章:

学习笔记(24): 机器学习之数据预处理Pandas和转换成张量格式[2]
学习笔记(24): 机器学习之数据预处理Pandas和转换成张量格式[2] 学习机器学习,需要学习如何预处理原始数据,这里用到pandas,将原始数据转换为张量格式的数据。 学习笔记(23): 机器学习之数据预处理Pandas和转换成张量格式[1]-CSDN博客 下面…...

在不同型号的手机或平板上后台运行Aidlux
在不同型号的手机或平板上后台运行Aidlux 一、鸿蒙/HarmonyOS手机与平板 二、小米手机与平板 三、OPPO手机与平板 四、vivo手机与平板 一、鸿蒙/HarmonyOS手机与平板 (系统版本有差异,但操作原理相通) 第一步:点击设置——应用和…...

【SSM】SpringBoot学习笔记1:SpringBoot快速入门
前言: 文章是系列学习笔记第9篇。基于黑马程序员课程完成,是笔者的学习笔记与心得总结,供自己和他人参考。笔记大部分是对黑马视频的归纳,少部分自己的理解,微量ai解释的内容(ai部分会标出)。 …...

1.企业可观测性监控三大支柱及开源方案的横评对比
[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 📢 大家好,我是 WeiyiGeek,一名深耕安全运维开发(SecOpsDev)领域的技术从业者,致力于探索DevOps与安全的融合(De…...
Neo4j图数据库管理:原理、技术与最佳实践
Neo4j作为领先的图数据库,其高效管理是发挥图计算潜力的关键。本文基于官方技术文档,深入探讨其管理原理、核心操作及生产环境最佳实践。 一、 管理架构与核心原理 多数据库架构 系统数据库 (system):管理元数据(用户、角色、权限、其他数据库信息)。标准数据库:存储实际…...
Elasticsearch中的地理空间(Geo)数据类型介绍
在Elasticsearch中,地理空间(Geo)数据类型用于存储和处理与地理位置相关的数据,支持基于地理坐标的查询、过滤和分析。这类数据类型允许用户在分布式环境中高效地处理地理空间相关的搜索、聚合和可视化需求,广泛应用于地图应用、物流追踪、位置服务(LBS)等场景。 一、核…...
[论文阅读] 软件工程 | 如何挖掘可解释性需求?三种方法的深度对比研究
如何挖掘可解释性需求?三种方法的深度对比研究 研究背景:当软件变复杂,我们需要“说明书” 想象你买了一台智能家电,却发现它的运行逻辑完全看不懂,按钮按下后毫无反应,故障时也不提示原因——这就是现代…...

双空间知识蒸馏用于大语言模型
Dual-Space Knowledge Distillation for Large Language Models 发表:EMNLP 2024 机构:Beijing Key Lab of Traffic Data Analysis and Mining 连接:https://aclanthology.org/2024.emnlp-main.1010.pdf 代码:GitHub - songmz…...

OpenCV CUDA模块特征检测------角点检测的接口createMinEigenValCorner()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 该函数创建一个 基于最小特征值(Minimum Eigenvalue)的角点响应计算对象,这是另一种经典的角点检测方法&…...
Git 提交备注应该如何规范
Git 提交备注应该如何规范 在软件开发过程中,Git 作为版本控制系统被广泛使用,而规范的提交备注对于代码的可维护性、团队协作以及项目的长期发展都有着至关重要的意义。良好的提交备注能够清晰地记录代码变更的原因、范围和影响,方便团队成…...
青少年编程与数学 02-020 C#程序设计基础 17课题、WEB与移动开发
青少年编程与数学 02-020 C#程序设计基础 17课题、WEB与移动开发 一、C#语言Web和移动项目开发1. Web项目开发2. 移动项目开发 二、ASP.NET Core1. ASP.NET Core 基础架构1.1 请求处理管道1.2 主机模型1.3 服务器选项 2. 核心新特性2.1 NativeAOT 支持2.2 增强的身份验证方案2.…...
Qt OpenGL 实现交互功能(如鼠标、键盘操作)
一、基本概念 1. Qt 事件系统与 OpenGL 渲染的协同 Qt 提供了完善的事件处理机制,而 OpenGL 负责图形渲染。交互的实现本质上是: 事件捕获:通过 Qt 的事件系统(如 mousePressEvent、keyPressEvent)捕获用户输入。 状态更新:根据输入事件更新场景状态(如相机位置、模型…...
【Go语言基础【3】】变量、常量、值类型与引用类型
文章目录 一、值(Value)与字面量(Literal)1. 值2. 字面量 二、变量(Variable)1. 声明方式2. 赋值方式3. 变量默认值4. 类型与值的匹配 三、常量(Constant)1. 声明方式2. 常量的特性3…...

8天Python从入门到精通【itheima】-69~70(字符串的常见定义和操作+案例练习)
目录 69节-字符串的定义和操作 1.学习目标 2.数据容器视角下的字符串 3.字符串的下标索引 4.字符串是一个无法修改的数据容器 5.字符串的常用操作 【1】index方法 【2】replace方法:进过替换,得到一个新的字符串 【3】split方法:将字…...
在 Linux 中查看文件并过滤空行
在 Linux 中查看文件并过滤空行 在 Linux 中查看文件内容时过滤掉空行有多种方法,以下是几种常用的方法: 方法 1:使用 grep grep -v ^$ filename-v:反转匹配,只显示不匹配的行^$:表示空行的正则表达式&a…...

GC1809:高性能音频接收与转换芯片
GC1809 是一款高性能音频接收与转换芯片,适用于多种音频设备,如 A/V 接收器、多媒体音响设备、机顶盒等。本文将简要介绍该芯片的主要特性、性能参数及应用。 主要特性 多协议兼容:兼容 IEC60958、S/PDIF、EIAJ CP1201 和 AES3 协议。 多种…...

项目实战——C语言扫雷游戏
这是一款9*9的扫雷游戏 扫雷游戏 1.需求分析2.程序框架设计3.分函数实现打印游戏菜单界面游戏主逻辑函数程序主入口初始化游戏棋盘随机布置地雷显示当前棋盘状态计算指定位置周围的地雷数量玩家排雷主逻辑 4.分文件实现(1)test.c(2࿰…...

【Java】CopyOnWriteArrayList
一,概述 CopyOnWriteArrayList作为List接口的实现之一,它区分于ArrayList在于它是线程安全的。如它名字一样,所有的写操作均复制了原数组的值,虽说代价较大,但读多写少的环境下,是可接受的。笔者在此简单看…...
【JS进阶】ES6 实现继承的方式
ES6 实现继承的方式 基本语法 class Parent {constructor(name) {this.name name;this.colors [red, blue];}sayName() {console.log(this.name);} }class Child extends Parent {constructor(name, age) {super(name); // 必须调用super(),且在使用this之前thi…...
mac 电脑Pycharm ImportError: No module named pip
这个错误表明 PyCharm 在尝试使用 pip 时找不到该模块,通常是由于 Python 环境中的 pip 未正确安装或损坏引起的。以下是针对 Mac 系统的完整解决方案: 解决方案步骤: 检查终端中的 pip 状态 打开终端(Terminal),执行以下命令: bash python3 -m ensurepip --upgrade pi…...

C#入门学习笔记 #8(委托)
欢迎进入这篇文章,文章内容为学习C#过程中做的笔记,可能有些内容的逻辑衔接不是很连贯,但还是决定分享出来,由衷的希望可以帮助到你。 笔记内容会持续更新~~ 本章介绍C#中的委托,本章难度较大... 委托 C#中的委托是C语言、C++中函数指针的升级版。接下来介绍一个概念—…...

CSS 3D 变换中z-index失效问题
CSS 3D 变换中 z-index 失效问题 1. z-index 失效了 在 CSS 中,z-index 通常用于控制元素的层叠顺序,数值越大,元素越靠前显示。在 3D 变换(如 rotateX、translateZ) 中使用 z-index 时,可能会发现z-inde…...
Vue3 中使用 i18n
Vue3 中使用i18n 在 Vue 3 中使用国际化(i18n)可以通过官方的 vue-i18n 库来实现。vue-i18n 是专门为 Vue 应用设计的国际化解决方案,支持多语言切换、动态内容插值等功能。 以下是如何在 Vue 3 中使用 vue-i18n 的详细步骤: 1.…...
vue:当前对象添加对应值
this.$set(this.dynamicValidateForm.domains[index], // 目标对象item.roundProperty, // 要添加的属性名row[item.roundProperty] ? row[item.roundProperty].split(",") : [] // 属性值 ); 说明: 第一个参数:th…...

Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(七):消息框交互功能添加
Tailwind CSS 实战,基于Kooboo构建AI对话框页面(一) Tailwind CSS 实战,基于Kooboo构建AI对话框页面(二):实现交互功能 Tailwind CSS 实战,基于 Kooboo 构建 AI 对话框页面&#x…...
JavaScript 核心原理深度解析-不停留于表面的VUE等的使用!
一、解释 JavaScript 作为当今最流行的编程语言之一,广泛应用于 Web 开发、移动端开发、后端开发等多个领域。然而,许多开发者在使用 JavaScript 时,往往只关注其表面的语法和 API,而对其底层原理和核心机制了解甚少。深入理解 J…...

【计算机网络】网络层IP协议与子网划分详解:从主机通信到网络设计的底层逻辑
🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:计算机网络 🌹往期回顾🌹: 【计算机网络】传输层TCP协议——协议段格式、三次握手四次挥手、超时重传、滑动窗口、流量控制、 &…...

基于WSL搭建Ubnutu 20.04.6 LTS(二)-部署Docker环境
Docker是一组平台即服务(PaaS)的产品。它基于操作系统层级的虚拟化技术,将软件与其依赖项打包为容器。托管容器的软件称为Docker引擎。Docker能够帮助开发者在轻量级容器中自动部署应用程序,并使得不同容器中的应用程序彼此隔离&a…...

【图像处理入门】6. 频域图像处理:傅里叶变换与滤波的奥秘
摘要 频域图像处理通过傅里叶变换将图像从空间域转换到频率域,为图像增强、去噪、压缩等任务提供全新视角。本文将深入解析傅里叶变换原理,介绍低通、高通滤波的实现方式,结合OpenCV和Python代码展示频域滤波在去除噪声、增强边缘中的应用,帮助读者掌握图像频域处理的核心…...

基于开源AI智能名片链动2+1模式S2B2C商城小程序的生态农庄留存运营策略研究
摘要:本文聚焦于生态农庄运营中的游客留存问题,以村长与乡亲们吸引游客进村为背景,深入探讨如何借助开源AI智能名片链动2 1模式S2B2C商城小程序实现游客的有效留存。通过分析该小程序在信息传递、服务整合、营销激励等方面的优势,…...