数据预处理和特征工程-sklearn

news2024/12/26 12:06:46

数据挖掘的五大流程:

  1. 获取数据
  2. 数据预处理
    数据预处理是从数据中检测,纠正或删除损坏,不准确或不适用于模型的记录的过程。
    数据预处理的目的:让数据适应模型,匹配模型的需求
  3. 特征工程
    特征工程是将原始数据转换为更能代表预测模型的潜在问题的特征的过程,可以通过挑选最相关的特征,提取特征以及创造特征来实现。
    特征工程的目的:降低计算成本,提升模型上限。
  4. 建模,测试模型并且预测出结果
  5. 上线,验证模型效果
    请添加图片描述

1.数据预处理 Preprocessing & Impute

1.1 数据无量纲化

我们往往有着将不同规格的数据转换到同一规格,或不同分布的数据转换到某个特定分布的需求,这种需求统称为将数据“无量纲化”。

数据的无量纲化可以是线性的,也可以是非线性的。线性的无量纲化包括中心化(Zero-centered或者Meansubtraction)处理和缩放处理(Scale)。中心化的本质是让所有记录减去一个固定值,即让数据样本数据平移到某个位置。缩放的本质是通过除以一个固定值,将数据固定在某个范围之中.
线性数据和非线性数据:
https://blog.csdn.net/qq_40061206/article/details/127764690

sklearn用法

preprocessing.MinMaxScaler

当数据(x)按照最小值中心化后,再按极差(最大值 - 最小值)缩放,数据移动了最小值个单位,并且会被收敛到[0,1]之间,而这个过程,就叫做数据归一化(Normalization,又称Min-Max Scaling)。
注意,Normalization是归一化,不是正则化,真正的正则化是regularization,不是数据预处理的一种手段。归一化之后的数据服从正态分布

X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))

preprocessing.StandardScaler

当数据(x)按均值(μ)中心化后,再按标准差(σ)缩放,数据就会服从为均值为0,方差为1的正态分布(即标准正态分布),而这个过程,就叫做数据标准化(Standardization,又称Z-score normalization)

z = (x - u) / s

1.2 缺失值

impute.SimpleImputer

参数
(1)missing_values
数据中的缺失值长什么样,默认空值np.nan
(2)strategy
填补缺失值的策略,默认均值。
输入“mean”使用均值填补(仅对数值型特征可用)
输入“median"用中值填补(仅对数值型特征可用)
输入"most_frequent”用众数填补(对数值型和字符型特征都可用)
输入“constant"表示请参考参数“fill_value"中的值(对数值型和字符型特征都可用)
(3)fill_value
当参数startegy为”constant"的时候可用,可输入字符串或数字表示要填充的值,常用0
(4)copy
默认为True,将创建特征矩阵的副本,反之则会将缺失值填补到原本的特征矩阵中去。

1.3 处理分类型特征:编码和哑变量

数值型数据

文字型数据(分类型数据)

比如说,学历的取值可以是[“小 学”,“初中”,“高中”,“大学”],付费方式可能包含[“支付宝”,“现金”,“微信”]等等。

preprocessing.LabelEncoder:标签专用,能够将分类转换为分类数值

preprocessing.OrdinalEncoder:特征专用,能够将分类特征转换为分类数值

preprocessing.OneHotEncoder:独热编码,创建哑变量

名义变量
比如说,付费方式可能包含[“支付宝”,“现金”,“微信”](简称为S,C,Q)。彼此之间完全没有联系,表达的是是S≠C≠Q的概念。这是名义变量。
有序变量
学历的取值可以是[“小 学”,“初中”,“高中”,“大学”]。
三种取值不是完全独立的,我们可以明显看出,在性质上可以有高中>初中>小学这样的联系,学历有高低,但是学历取值之间却不是可以计算的,我们不能说小学 + 某个取值 = 初中。这是有序变量。
有距变量
体重(>45kg,>90kg,>135kg)。
各个取值之间有联系,且是可以互相计算的,比如120kg - 45kg = 90kg,分类之间可以通过数学计算互相转换。这是有距变量。

其中名义变量和有序变量统称为分类变量。类别OrdinalEncoder可以用来处理有序变量,但对于名义变量,我们只有使用哑变量的方式来处理,才能够尽量向算法传达最准确的信息

1.4 处理连续型特征:二值化与分段

sklearn.preprocessing.Binarizer

根据阈值将数据二值化(将特征值设置为0或1),用于处理连续型变量。大于阈值的值映射为1,而小于或等于阈值的值映射为0。默认阈值为0时,特征中所有的正值都映射到1。

preprocessing.KBinsDiscretizer

这是将连续型变量划分为分类变量的类,能够将连续型变量排序后按顺序分箱后编码。

2.特征选择

特征提取

从文字,图像,声音等其他非结构化数据中提取新信息作为特征。比
如说,从淘宝宝贝的名称中提取出产品类别,产品颜色,是否是网红
产品等等。

特征创造

把现有特征进行组合,或互相计算,得到新的特征。比如说,我们有一列特征是速度,一列特征是距离,我们就可以通过让两列相处,创造新的特征:通过距离所花的时间。

特征选择

从所有的特征中,选择出有意义,对模型有帮助的特征,以避免必须
将所有特征都导入模型去训练的情况。

2.1 Filter过滤法

2.1.1 方差过滤

VarianceThreshold。这是通过特征本身的方差来筛选特征的类。无论接下来特征工程要做什么,都要优先消除方差为0的特征。

2.1.2 相关性过滤

有三种常用的方法来评判特征与标签之间的相关性:卡方,F检验,互信息。
(1)卡方过滤
卡方过滤是专门针对离散型标签(即分类问题)的相关性过滤。卡方检验类feature_selection.chi2计算每个非负特征和标签之间的卡方统计量,并依照卡方统计量由高到低为特征排名。再结合feature_selection.SelectKBest
这个可以输入”评分标准“来选出前K个分数最高的特征的类,我们可以借此除去最可能独立于标签,与我们分类目的无关的特征。
(2)F检验
F检验,又称ANOVA,方差齐性检验,是用来捕捉每个特征与标签之间的线性关系的过滤方法。它即可以做回归也可以做分类,因此包含feature_selection.f_classif(F检验分类)和feature_selection.f_regression(F检验回归)两个类。其中F检验分类用于标签是离散型变量的数据,而F检验回归用于标签是连续型变量的数据。
(3)互信息法
互信息法是用来捕捉每个特征与标签之间的任意关系(包括线性和非线性关系)的过滤方法。互信息法比F检验更加强大,F检验只能够找出线性关系,而互信息法可以找出任意关系。
互信息法不返回p值或F值类似的统计量,它返回“每个特征与目标之间的互信息量的估计”,这个估计量在[0,1]之间取值,为0则表示两个变量独立,为1则表示两个变量完全相关。

2.2 Embedded嵌入法

使用算法进行特征选择

2.3 Wrapper包装法

使用算法进行特征选择

2.4 特征选择总结

过滤法更快速,但更粗糙。包装法和嵌入法更精确,比较适合具体到算
法去调整,但计算量比较大,运行时间长。当数据量很大的时候,优先使用方差过滤和互信息法调整,再上其他特征选择方法。使用逻辑回归时,优先使用嵌入法。

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

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

相关文章

NLP 中文智能纠错 API 数据接口

NLP 中文智能纠错 API 数据接口 专注于中文语句智能纠错,基于 NLP,多模型参与纠错。 1. 产品功能 秒级 NLP 智能纠错性能;NLP 加载多个模型进行纠错处理;返回纠正字符以及对应位置索引;底层模型以及语料库持续更新集…

正大国际期货:五十句期货投资理念

1.许多期货投资人交易时没有计划。交易前,他们既不设定风险限度,也不设定盈利目标。即使是制定了计划,他们总是“半路出家”,并不坚持既定的计划,尤其是在出现亏损的情况下。结果往往是过量操作,把自己逼在…

Android 操作系统简介

Android 操作系统简介1. 起源2. 操作系统市场占有率3. Android 系统架构3.1 Linux Kernel3.2 Hardware Abstraction Layer (HAL)3.3 运行时 系统库3.3.1 Android Runtime3.3.1 Native C/C Libraries3.4 Java API Framework3.5 System Apps1. 起源 安卓(Android&…

程序员年底如何升职加薪?这份涨薪指南来了!

年底了,这个时间节点对于各个公司来说都很重要。 今年大家也知道情况,互联网整体行情都不太好,国外也不好过,硅谷裁员大刀阔斧,实实在在的 感受到了寒意。 能顺利熬到年底的程序员,现在就会关心“公司会普调…

一分钟搞定Netty 三大组件,如果搞不定,再看3遍

1. 三大组件简介 Channel 与 Buffer Java NIO 系统的核心在于:通道 (Channel) 和缓冲区 (Buffer)。通道表示打开到 IO 设备 (例如:文件、套接字) 的连接。若需要使用 NIO 系统,需要获取用于连接 IO 设备的通道 以及用于容纳数据的缓冲区。然…

黑客使用虚假 DDoS 保护页面分发恶意软件

WordPress 网站被黑客入侵后显示欺诈性 Cloudflare DDoS 保护页面,这些页面被用于分发恶意软件(例如 NetSupport RAT 和 Raccoon Stealer)。 “最近针对 WordPress 网站的 JavaScript 注入激增,通过弹出虚假的 DDoS 阻止提示&…

DaVinci:跟踪器 - 窗口

调色页面:跟踪器Color:Tracker跟踪器 - 窗口 Tracker - Window,是 DaVinci Resolve 提供的一款强大的跟踪工具。可以利用窗口调板所设置的窗口区域,通过自动分析之后,在此区域内产生许多如云状分布的特征点&#xff08…

Java8 Stream详细用法介绍

Java8 Stream详细用法介绍一、Stream概述1.1、流的定义1.2、流与集合1.3、流的特性1.4、Stream的创建1.5、Stream操作分类二、Stream API 使用2.1 中间操作2.1.1、filter() 过滤2.1.2、map与flatMap 映射2.1.3、sorted() 排序2.2 终止操作2.2.1、forEach() 遍历2.2.2、collect(…

ThinkPHP 多应用模式下访问其他应用忽略入口文件

目录 问题描述: 解决方法: 1.配置两个域名分别指向项目public目录 2.项目全局配置域名绑定应用 问题描述: 使用TP6.0做多应用项目开发,分为前端Api和后台管理 项目中已配置地址重写规则 Api为默认应用,可忽略入…

Allegro如何手动和自动10度走线操作指导

Allegro如何手动和自动10度走线操作指导 PCB上有时需要10度走线,可以有效的避免玻纤效应的产生,尤其是在应对高速设计的时候,Allegro支持10度走线如下图 具体操作如下 选择setup Parameter选择route

50个超级有用的JavaScript单行代码

在这篇文章中,我列出了一个系列的50个 JavaScript 单行代码,它们在使用 vanilla js(≥ ES6)进行开发时非常有用。它们也是使用该语言在最新版本中为我们提供的所有功能来解决问题的优雅方式。 我将它们分为以下5大类:…

波士顿房价数据集进行数据预处理和模型训练(Python)

目录 前言 一、数据预处理定义 二、波士顿房价数据进行数据预处理 2.1 下载波士顿房价数据集 2.2 查看数据集的描述、特征及数据条数、特征数量 2.3 将数据读入pandas的DataFrame并转存到csv文件 2.4 查看数据集各个特征的类型以及是否有空值 2.5 对数据集做中心化度量&a…

自动驾驶技术平台分享:百度Apollo开放平台8.0再升级,更简单,更便捷,更高效

文章目录自动驾驶技术入门,先看平台Appllo主要优势版本更新新特性颠覆更新“新”架构全新加入软件包管理机制加入新感知模型感知全流程开放与提效全新PnC工具链写在最后自动驾驶技术入门,先看平台 近年来,自动化驾驶的话题越来越成为热点。对…

【十天成为红帽工程师】第六天 DNS域名解析服务器

目录 一、域名解析服务器的介绍 二、DNS域名解析的过程 三、搭建DNS服务器 一、域名解析服务器的介绍 DNS(Domain Name System)是互联网上的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互…

ChatGPT:新晋CV工程师

在短短的两个星期内,ChatGPT 迅速成为公众聊天的焦点。超过一百万的人与OpenAI的新聊天机器人“交谈”,让它写诗和大学论文,生成创意食谱,创建虚拟机…它也被用来撰写新闻文章和YouTube视频的介绍。作为计算机视觉公司的机器学习工…

Qt第五十一章:Qt样式表-Qss

目录 一、盒子模型 二、选择器 三、伪状态 四、字体 五、边框 六、背景 七、边距 八、示例大全 一、盒子模型 二、选择器 选择器示例描述通用选择器*匹配所有控件类型选择器QPushButton匹配给定类型控件,包括子类类选择器.QPushButton匹配给定类型控件&…

【PAT甲级 - C++题解】1032 Sharing

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📚专栏地址:PAT题解集合 📝原题地址:题目详情 - 1032 Sharing (pintia.cn) 🔑中文翻译:共享 📣专栏定位&…

[ 代码审计篇 ] 代码审计案例详解(二) XXE代码审计案例

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

年底了,手机通讯录和相册被恶意APP获取,看我如何破局?

☆ 最近几天突然收到一个朋友的深夜短信,被告知如果有人发送不明信息,或者发送任何不明链接,都不要点开。我经过问朋友,得知下载了一个恶意的APP,把通讯录和手机相册获取了。 ☆ 年底了,很多人发愁过年没有…

ASIO IO_CONTEXT 源码整理

io_context关系图 io_context io_context::io_context(): impl_(add_impl(new impl_type(*this,ASIO_CONCURRENCY_HINT_DEFAULT, false))) { }io_context::io_context(int concurrency_hint): impl_(add_impl(new impl_type(*this, concurrency_hint 1 ? ASIO_CONCURRENCY_HI…