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

目录

  • 一. 数据清洗
    • 1. 数据清洗:格式内容错误数据清洗
    • 2. 数据清洗:逻辑错误清洗
    • 3. 数据清洗:去除不需要的数据
    • 4. 数据清洗:关联性验证
  • 二. 异常值的处理
    • 1. 删除
    • 2. 填充
  • 三. 归一化和标准化
    • 1. 归一化
    • 2. 标准化
  • 四. 特征提取
    • 1. One-Hot编码
    • 2. 字典特征提取(特征离散化)
    • 3. 文本特征提取
      • 3.1 jieba分词处理
      • 3.2 词袋法
      • 3.3 TF-IDF

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

为什么需要特征工程?

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

什么是特征工程?

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

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

一. 数据清洗

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

	选择数据处理工具:关系型数据库或者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

祝愉快🌟!


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

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

相关文章

MyBatis是纸老虎吗?(六)

经过前面一些列文章的梳理,我们已将MyBatis框架所需要的资源都准备好了:数据库连接信息储存在Configuration对象中的Environment属性中(该对象中有这样几个属性String类型的id,TransactionFactory类型的transactionFactory、DataS…

如何优雅的爬取公众号文章

目录 相关函数库介绍 代码例子 IP池免费送 相关函数库介绍 在合法合规的前提下,爬取微信公众号文章可以使用以下几个Python库: requests:这是一个非常流行的HTTP库,用于发送各种HTTP请求。它简单易用,能够高效地处…

关于序列化和反序列化

什么是序列化,什么是反序列化 简单来说: 序列化:将数据结构或对象转换成二进制字节流的过程反序列化:将在序列化过程中所生成的二进制字节流转换成数据结构或者对象的过程 为什么要进行序列化 我们要将java对象进行网络传输&a…

TorchAcc:基于 TorchXLA 的分布式训练框架

演讲人:林伟,阿里云研究员,阿里云人工智能平台 PAI 技术负责人 本文旨在探讨阿里云 TorchAcc,这是一个基于 PyTorch/XLA 的大模型分布式训练框架。 过去十年 AI 领域的显著进步,关键在于训练技术的革新和模型规模的快…

详细剖析多线程2----线程安全问题(面试高频考点)

文章目录 一、概念二、线程不安全的原因三、解决线程不安全问题--加锁(synchronized)synchronized的特性 四、死锁问题五、内存可见性导致的线程安全问题 一、概念 想给出⼀个线程安全的确切定义是复杂的,但我们可以这样认为: 在多…

国际结算-汇出汇款和汇入汇款

目录 汇出汇款业务 汇入汇款 汇出汇款业务 汇出汇款业务是本行接受汇款人的委托,以约定的汇款方式委托海外代理行将一定金额的款项付给指定收款人的业务。用于满足国际间资金汇划结算需求。汇款方式包括电汇、信汇和票汇,目前常用的是电汇。 业务特点,费用少,与信用证和托…

C语言 strcmp

在C语言中&#xff0c;strcmp 函数用于比较两个字符串。它的原型定义在 <string.h> 头文件中。strcmp 函数比较两个字符串直到找到一个不同的字符或者到达字符串的末尾。函数的原型如下&#xff1a; int strcmp(const char *str1, const char *str2); 参数 str1&#…

立体统计图表绘制方法(凸显式环图)

立体统计图表绘制方法&#xff08;凸显式环图&#xff09; 记得我学统计学的时候&#xff0c;那些统计图表大都是平面的框框图&#xff0c;很呆板&#xff0c;就只是表现出统计的意义就好了。在网络科技发展进步的当下&#xff0c;原来一些传统的统计图表都有了进一步的创新。在…

RDGCN翻译

RDGCN翻译 Relation-Aware Entity Alignment for Heterogeneous Knowledge Graphs 面向异质知识图谱的关系感知实体对齐 阅读时间&#xff1a;2024.03.24 领域&#xff1a;知识图谱&#xff0c;知识对齐 作者&#xff1a;Yuting Wu等人 PKU 出处&#xff1a;IJCAI Abstract…

[精选]Kimi到底是什么,将带来什么?

## 阿里通义千问重磅升级&#xff1a;免费开放1000万字长文档处理功能。 Kimi突然的泼天富贵&#xff0c;大家都想沾一把。短期这一块大概率会继续热一段时间。 作为月之暗面的创始人&#xff0c;杨植麟常把他的AGI梦想形容为“登月计划”&#xff0c;长文本就是这个伟大计划…

HarmonyOS NEXT应用开发之听歌识曲水波纹特效案例

介绍 在很多应用中&#xff0c;会出现点击按钮出现水波纹的特效。 效果图预览 使用说明 进入页面&#xff0c;点击按钮&#xff0c;触发水波纹动画。再次点击按钮&#xff0c;停止水波纹动画。 实现思路 本例涉及的关键特性和实现方案如下&#xff1a; 要实现存在两个连续…

基于AWS云服务构建智能家居系统的最佳实践

在当今智能家居时代,构建一个安全、高性能、可扩展和灵活的智能家居系统已经成为许多公司的目标。亚马逊网络服务(AWS)提供了一系列云服务,可以帮助企业轻松构建和管理智能家居系统。本文将探讨如何利用AWS云服务构建一个智能家居系统,并分享相关的最佳实践。 系统架构概述 该…

科研学习|论文解读——这取决于你什么时候搜索(MIS Quarterly,2022)

原文题目 It Depends on When you search 摘要 互联网搜索已被证明对股票价格、公司销售和疫情传播具有强大的预测能力。在研究提出搜索频率作为投资者关注的更直接和及时的衡量指标之后,我们探索了搜索数据的异质性,并解决了当前文献中的几个问题。使用来自谷歌的标准普尔50…

C++ - 类和对象(上)

目录 一、类的定义 二、访问限定符 public&#xff08;公有&#xff09; protected&#xff08;保护&#xff09; private&#xff08;私有&#xff09; 三、类声明和定义分离 四、外部变量和成员变量的区别与注意 五、类的实例化 六、类对象的模型 七、类的this指针…

TCP详解

一、TCP报文段结构 1、源端口号和目的端口号都是16位&#xff0c;范围从&#xff08;1-65535&#xff0c;0不可用&#xff09; 2、序列号&#xff1a;在建立连接时由内核生成的随机数作为其初始值&#xff0c;通过 SYN 报文传给接收端主机&#xff0c;每发送一次数据&#xff0…

C语言数据结构易错知识点(5)(插入排序、选择排序)

插入排序&#xff1a;直接插入排序、希尔排序 选择排序&#xff1a;直接选择排序、堆排序 上述排序都是需要掌握的&#xff0c;但原理不会讲解&#xff0c;网上有很多详尽地解释&#xff0c;本文章主要分享一下代码实现上应当注意的事项 1.直接插入排序&#xff1a; 代码实…

拥抱C++的深度和复杂性,挖掘更多可能 !——《C++20高级编程(第5版)》

&#xff0c;C难以掌握&#xff0c;但其广泛的功能使其成为游戏和商业软件应用程序中最常用的语言。即使是有经验的用户通常也不熟悉许多高级特性&#xff0c;但C20的发布提供了探索该语言全部功能的绝佳机会。《C20高级编程(第5版)》为C的必要内容提供了一个代码密集型、面向解…

Redis 教程系列之Redis Java 使用 Redis(十一)

安装 开始在 Java 中使用 Redis 前&#xff0c; 我们需要确保已经安装了 redis 服务及 Java redis 驱动&#xff0c;且你的机器上能正常使用 Java。 Java的安装配置可以参考我们的 Java 开发环境配置 接下来让我们安装 Java redis 驱动&#xff1a; 首先你需要下载驱动包 下载…

Qt笔记 计时器

下面介绍设计计时器的两种方法&#xff0c;分别是利用信号与槽来使用计时器&#xff0c;利用计时器事件来使用计时器。 1. 利用信号与槽来使用计时器 //方法一(利用信号与槽来使用计时器):QTimer *timer new QTimer(this);timer->start(1000);//周期&#xff0c;计时器每隔…

(AtCoder Beginner Contest 325) ---- D - Printing Machine -- 题解

目录 D - Printing Machine&#xff1a; 题目大意&#xff1a; 思路解析&#xff1a; 代码实现&#xff1a; D - Printing Machine&#xff1a; 题目大意&#xff1a; 思路解析&#xff1a; 打印一次后&#xff0c;需要充电一微秒后才能再次打印就可以看作每微妙只能打印一…