特征工程 | 数据清洗、异常值处理、归一化、标准化、特征提取

在这里插入图片描述
在机器学习开发过程中,对数据的处理是非常重要的:
在这里插入图片描述

为什么需要特征工程?

	数据和特征决定了机器学习的上限
	模型和算法只是逼近这个上限

什么是特征工程?

	使得特征能在机器学习算法上发挥更好作用的过程
	特征工程会直接影响机器的学习效果

也可以说:所有一切为了让模型效果变的更好的数据处理方式,都可以认为属于特征工程这个范畴中的操作

一. 数据清洗

在数据预处理过程主要考虑两个方面:

	选择数据处理工具:关系型数据库或者Python
	查看数据的元数据以及数据特征:
		1. 查看元数据,包括字段解释、数据来源等一切可以描述数据的信息
		2. 抽取一部分数据,通过人工查看的方式,对数据本身做一个比较直观的了解,并且初步发现一些问题,为之后的数据处理做准备

1. 数据清洗:格式内容错误数据清洗

  • 时间、日期、数值、半全角等显示格式不一致
  • 内容中有不该存在的字符,最常见的问题是在开头、中间和结尾处存在空格
  • 内容与该字段应有的内容不符

2. 数据清洗:逻辑错误清洗

  • 数据去重
  • 去除/替换不合理的值
  • 去除/重构不可靠的字段值(修改矛盾的内容)

3. 数据清洗:去除不需要的数据

一般情况下,我们会尽可能多的收集数据,但并不会全部用于模型

实际上,字段属性越多,模型构建速度就会越慢;因此有时可以考虑删除不必要的字段

注意:在执行此操作时,请务必备份原始数据

4. 数据清洗:关联性验证

如果数据有多个来源,需要进行关联性验证

这通常在多数据源合并过程中使用,以验证数据之间的关联性,从而选择正确的特征属性

二. 异常值的处理

1. 删除

  • 按行删除
  • 按列删除

2. 填充

  • 均值
  • 中值
  • 众数

三. 归一化和标准化

  • 特征的单位或者大小相差较大
  • 某特征的方差相比其他的特征方差要大出几个数量级

这些因素通常容易影响(支配)目标结果,使得一些算法无法学习到其它的特征,因此我们需要用到一些方法进行无量纲化,使不同规格的数据转换到同一规格

1. 归一化

	对原始数据进行变换把数据映射到(默认为[0,1])之间

x ′ = x − m i n m a x − m i n {x}' = \frac{x-min}{max-min} x=maxminxmin
然而,归一化操作却存在一个明显的缺陷;最大值最小值受到异常点影响

在这里插入图片描述
因此,为了解决这种问题,提出了标准化:将数据变换到均值为0,标准差为1的分布

2. 标准化

在这里插入图片描述

	如果出现异常点, 由于具有一定数据量:
		少量的异常点对于平均值的影响并不大, 从而方差改变较小
	
	• 归一化:鲁棒性较差,只适合传统精确小数据场景。 
	• 标准化:在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。
	
	注意:只有当原始数据为正态分布,通过标准化转换才可以得到标准正态分布

x ′ = x − m e a n σ {x}' = \frac{x-mean}{\sigma } x=σxmean

四. 特征提取

将任意数据(如文本或图像)转换为可用于机器学习的数字特征,比如:
• 字典特征提取(特征离散化)
• 文本特征提取
• 图像特征提取(图片本身就是一个数组数据)

1. One-Hot编码

独热编码即 One-Hot 编码,又称一位有效编码,其方法是使用N位
状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,
并且在任意时候,其中只有一位有效。

	编码位数取决于类别种类

2. 字典特征提取(特征离散化)

对字典数据进行特征值化

3. 文本特征提取

3.1 jieba分词处理

在这里插入图片描述

	注意:前三种都返回迭代器

3.2 词袋法

将所有文章的所有出现词组成词典,并根据词典统计每篇文章中各个词出现的次数,每篇文章中各个词出现的次数可以反应这篇文章的特征

	如果词典有n个词(特征),共m篇文章,则会统计出一个m*n的特征矩阵

3.3 TF-IDF

  • 如果一个词在一篇文章中出现的次数越多,则这个词对这篇文章就越重
  • 如果一个词在所有的文章中出现的次数越多,则表明这个词在当前文章中越不重要
  • 某词在当前文档中的重要程度由TF*IDF决定

TF(Term Frequency,词频)

	指某个词条在文本中出现的次数,一般会将其进行归一化处理(该词条数量/该文档中所有词条数量)

IDF(Inverse Document Frequency,逆向文档频率)

	指一个词条重要性的度量
	一般计算方式为:语料库中总文件数目 / 包含该词语的文件数目
			       得到的商取对数

词袋法和TF-IDF对比:

  1. 词袋法和TF-IDF都是一种文本向量化的方式
  2. 词袋法和TF-IDF都有一个缺点:没有考虑词的顺序和词与词之间的关系。

感谢阅读🌼
如果喜欢这篇文章,记得点赞👍和转发🔄哦!
有任何想法或问题,欢迎留言交流💬,我们下次见!
本文相关代码存放位置
    【特征工程操作练习 1

祝愉快🌟!


### 气象数据的清洗、归一化处理特征工程 #### 数据清洗 气象数据通常包含大量的观测记录,这些记录可能来自不同的传感器或测量设备。为了确保数据分析的有效性和准确性,在开始任何分析之前,必须对原始数据进行彻底的清理工作。 - **缺失值处理**:对于存在缺失的情况,可以选择删除含有缺失值的条目或是采用插补法填补空白。常用的插补策略有均值/中位数填充、线性内插等[^1]。 - **异常检测与修正**:识别并移除那些明显偏离正常范围的数据点,这可以通过设定合理的阈值区间实现;也可以应用统计学方法如箱形图原理来自动发现离群点。 - **重复项去除**:检查是否存在完全相同的记录,并予以剔除以避免冗余影响最终结论的真实性。 ```python import pandas as pd from sklearn.impute import SimpleImputer # 假设 df 是加载好的 DataFrame 对象 imputer = SimpleImputer(strategy='mean') df_cleaned = pd.DataFrame(imputer.fit_transform(df), columns=df.columns) # 删除重复行 df_unique = df_cleaned.drop_duplicates() ``` #### 数据归一化 由于各物理量之间可能存在数量级上的巨大差异(例如温度单位可能是摄氏度而风速则用米每秒表示),因此有必要实施标准化操作使得所有变量处于同一尺度上比较公平合理[^2]。 常用的技术手段包括最小最大规范化(Min-Max Scaling),即将数值映射到0至1之间的固定范围内;还有Z-score标准化,使分布具有零均值和单位方差特性。 ```python from sklearn.preprocessing import MinMaxScaler, StandardScaler scaler_minmax = MinMaxScaler(feature_range=(0, 1)) data_normalized_mm = scaler_minmax.fit_transform(data_array) scaler_zscore = StandardScaler() data_standardized = scaler_zscore.fit_transform(data_array) ``` #### 特征工程 构建有效的预测模型离不开精心设计的输入特征向量。针对气象领域而言: - 提取日期时间戳中的季节性成分作为额外维度加入训练样本集中; - 计算相邻时刻间的增量变化率形成新的派生指标; - 利用滑动窗口机制捕捉一段时间内的趋势模式; - 结合地理信息系统(GIS)获取位置关联信息辅助决策支持系统运作。 ```python def add_temporal_features(df): """为给定DataFrame增加年份、月份、星期几等临时特征""" df['year'] = df.index.year df['month'] = df.index.month df['day_of_week'] = df.index.dayofweek return df # 应用于实际场景的例子 weather_data_enriched = add_temporal_features(weather_df.copy()) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ToBeCertain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值