传统机器学习——特征工程之空值处理

本文详细介绍如何在机器学习项目中处理数据集的空值,包括空值的识别、字符型与数值型空值的填充策略,以及数据类型转换方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

前一篇介绍了清洗数据集中的异常值,之后便可以开始处理空值、字符型等数据类型。写在最前面,测试集和训练集最好concat一起,然后再进行数据处理。
声明:关于编程语法相关问题不会展开论述,本文只针对方法路线。

空值处理——准备

首先要知道训练集中哪些列有空值,下面代码中的full是将训练集和测试集concat到一起后的:

  1. 空值填充:
    Id列对算法没有实际意义,drop掉:
    在这里插入图片描述统计每列的空值:
    在这里插入图片描述打印出的结果如下(截图为部分结果):
    在这里插入图片描述
    记录这些有空值的列的字段名,后面针对不的数据类型进行不同的空值处理。

空值处理——字符型空值

怎样判断各样本属性的数据类型?
在这里插入图片描述
使用info()打印出各列属性,结果如下(截图为部分结果):
在这里插入图片描述
所以,针对不同类型的空值,也需要用不同的填充方法。针对字符型(上面info()结果中的object),在调用LabelEncoder.fit_transform之前必须将空值转成字符型,否则会报错。
在这里插入图片描述上面使用“None”来填充空值,也可以使用其他方法填充字符型空值,如众数:
在这里插入图片描述

空值处理——数值型空值

上一篇文章中已经介绍了有关数值型填充方法,包括0值,平均值、最值、概率估计等。
这里使用了0值平均值填充:
在这里插入图片描述

空值处理——变换

上面已经把空值处理完毕,但是字符型数据不能参与算法计算,所以需要使用sklearn中LabelEncoder()把所有字符型转成数值型(实现细节和原理自行百度):
在这里插入图片描述
对比如下:
在这里插入图片描述
上图为字符型转换之前数据,下图为使用过LabelEncoder()后的相应字段。
在这里插入图片描述
到此为止,所有样本都已经转成数值型,为了使其更符合正态分布,需要使用偏度再对数据进行处理。取出数据集中那些分布偏度大于指定阈值列,将其取对数,这样就可以更符合正太分布。
在这里插入图片描述到这里,数据处理已经基本完成,接下来就需要在原特征上进行特征选择,将在下一篇中介绍。

### 处理机器学习中标签为空值的技术和最佳实践 在构建预测模型时,遇到训练数据中的标签存在缺失情况是一个常见挑战。处理这种情况的方法取决于具体的应用场景以及缺失数据的比例。 #### 数据清理方法 对于少量的空值标签,最简单的方式可能是删除这些样本。然而,在许多情况下,这并不是最优解,因为可能会丢失有价值的信息。因此,考虑其他策略通常更为合适[^1]。 #### 使用替代策略填充标签 当无法轻易移除含有空标签的数据点时,可以采用一些统计学上的技巧来填补这些空白: - **均值/众数替换**:如果目标变量是连续型,则可以用该特征列的平均值代替;如果是分类型则可选用最常见的类别作为替补。 - **回归基线法**:利用简单的回归算法(如始终预测训练集中的某个特定分位数值),为未知的目标提供估计值。这种方法特别适用于时间序列分析或其他具有明显趋势模式的任务中[^2]。 #### 构建多阶段交互流程管理复杂决策树结构 面对更复杂的场景,比如对话系统的意图识别过程中可能出现未定义状态的问题,可以通过设计良好的架构来应对。例如创建一个多层逻辑框架,其中每一级负责解决不同类型的问题,并且能够灵活地传递控制权给下一层直到找到合适的解决方案为止[^3]。 #### 应用高级技术手段 除了上述基本措施外,还有几种更加先进的方案可供选择: - **半监督学习**:在这种设置下,部分实例拥有完整的标注而另一些则缺乏。通过引入无标记样本来增强有监督的学习过程,从而提高整体性能。 - **自编码器**:一种特殊的神经网络形式,它试图学会重构其输入而不是执行标准意义上的分类或回归任务。这种特性使得它们非常适合用来发现潜在空间内的规律并据此推断出合理的输出值。 ```python import pandas as pd from sklearn.impute import SimpleImputer # 假设 df 是包含 NaN 的 DataFrame imputer = SimpleImputer(strategy='most_frequent') # 或者 'mean' 对于数值型数据 df['label'] = imputer.fit_transform(df[['label']]) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值