机器学习(三) -- 特征工程(2)

系列文章目录

机器学习(一) -- 概述

机器学习(二) -- 数据预处理(1-3)

机器学习(三) -- 特征工程(1-2)

未完待续……


目录

系列文章目录

前言

三、特征预处理

1.1、无量纲化

2、归一化

2.2.1、线性归一化

2.2.1、***最大最小均值归一化

2.2.1、***最大绝对值归一化

3、标准化

四、特征降维

2、特征选择

2.4、低方差特征过滤

2.5、皮尔逊相关系数(Pearson Correlation Coefficient)

3、主成分分析(PCA)


机器学习(三) -- 特征工程(1)


前言

tips:这里只是总结,不是教程哈。

“***”开头的是给好奇心重的宝宝看的,其实不太重要可以跳过。

此处以下所有内容均为暂定,因为我还没找到一个好的,让小白(我自己)也能容易理解(更系统、嗯应该是宏观)的讲解顺序与方式。

第一文主要简述了一下机器学习大致有哪些东西(当然远远不止这些),对大体框架有了一定了解。接着我们根据机器学习的流程一步步来学习吧,掐掉其他不太用得上我们的步骤,精练起来就4步(数据预处理,特征工程,训练模型,模型评估),其中训练模型则是我们的重头戏,基本上所有算法也都是这一步,so,这个最后写,先把其他三个讲了,然后,在结合这三步来进行算法的学习,兴许会好点(个人拙见)。


三、特征预处理

1、定义

通过一些转换函数,将特征数据转换成更适合算法模型的特征数据的过程。

1.1、无量纲化

也称为数据的规范化,是指不同指标之间由于存在量纲不同致其不具可比性,故首先需将指标进行无量纲化,消除量纲影响后再进行接下来的分析。

数值数据的无量纲化:主要有两种归一化、标准化

为什么要进行归一化/标准化?

特征的单位或者大小相差较大,或者某特征的方法相比其他的特征要大出几个数量级,容易影响(支配)目标结果,使得一些算法无法学习到其它的特征

特征预处理API

sklearn.preprocessing

2、归一化

tips:归一化也叫离差标准化,(标准化,也叫标准差标准化,Z-Score标准化)

2.1、定义

将特征缩放到一个特定的范围,通常是[0, 1]。

2.2、分类和公式

2.2.1、线性归一化

这是最常用的归一化,也叫最大-最小归一化或最大-最小规范化。(后面也是用的这种哈)

X=\frac{X-min(X)}{max(X)-min(X)}

2.2.1、***最大最小均值归一化

X=\frac{X-mean(X)}{max(X)-min(X)}

2.2.1、***最大绝对值归一化

X=\frac{X}{\left \| X_{max} \right \|}

2.3、API

sklearn.preprocessing.MinMaxScaler
导入:
from sklearn.preprocessing import MinMaxScaler

2.4、实例

# 2、实例化一个转换器类
transform = MinMaxScaler()
# transform = MinMaxScaler(feature_range=[2,3])# 3、调用fit_transform
data_new = transform.fit_transform(data)print("data_new:\n", data_new)

转换器中添加feature_range=[2,3]属性,将缩放范围变为[2,3]。

3、标准化

2.1、定义

将特征缩放为均值为0,标准差为1的分布。

2.2、公式

X=\frac{X-\mu }{S},其中μ是均值,S是标准差

2.3、API

sklearn.preprocessing.StandardScaler
导入:
from sklearn.preprocessing import StandardScaler

2.4、实例

# 2、实例化一个转换器类
transform = StandardScaler()
#transform = StandardScaler(feature_range=[2,3])# 3、调用fit_transform
data_new = transform.fit_transform(data)print("data_new:\n", data_new)

4、***小数定标标准化

X=\frac{X}{10^{lg\left | max(X) \right |}}

思想:通过移动数据的小数点位置来缩放特征值,使其落在一个较小的范围内,从而提高模型训练的效率和准确性。

4、***other

其实还有其他的,指数化,对数化,离散化(等频(等深)分箱、等距(等宽)分箱),正规化等。

四、特征降维

1、定义

降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程。

降维的两种方式:特征选择、主成分分析(可以理解一种特征提取的方式)

2、特征选择

2.1、定义

数据中包含冗余或相关变量(或称特征、属性、指标等),旨在从原有特征中找出主要特征。

2.2、方法

Filter过滤式:

                主要探究特征本身特点、特征与特征和目标值之间关联

        方差选择法:低方差特征过滤

        相关系数:特征与特征之间的相关程度

Embedded嵌入式:

                算法自动选择特征(特征与目标值之间的关联)

        决策树:信息熵、信息增益

        正则化:L1,L2

        深度学习:卷积等

2.3、API

sklearn.feature_selection

2.4、低方差特征过滤

删除低方差的一些特征

  • 特征方差小:某个特征大多样本的值比较相近
  • 特征方差大:某个特征很多样本的值都有差别

API

sklearn.feature_selection.VarianceThreshold
导入:
from sklearn.feature_selection import VarianceThreshold

# 2、实例化一个转换器类
#transform = VarianceThreshold()
transform = VarianceThreshold(threshold=10)# 3、调用fit_transform
data_new = transform.fit_transform(data)print("data_new\n", data_new,' \n data_new.shape:', data_new.shape)

 训练集差异低于threadshold的特征将被删除。默认值是保留非零方差特征,即删除所有样本中具有相同值的特征

2.5、皮尔逊相关系数(Pearson Correlation Coefficient)

反映变量之间相关关系密切程度的统计指标.

2.5.1、公式

r=\frac{n\sum xy-\sum x\sum y}{\sqrt{n\sum x^{2}-(\sum x)^{2}}\sqrt{n\sum y^{2}-(\sum y)^{2}}}

相关系数的值介于-1与+1之间:

当r>0时,表示两变量正相关;
r<0时,两变量为负相关;
当|r|=1时,表示两变量为完全相关;
当r=0时,表示两变量间无相关关系;
当0<|r|<1时,表示两变量存在一定程度的相关。且|r|越接近1,两变量间线性关系越密切;|r|越接近0,表示两变量的线性相关越弱。

一般可按三级划分:|r|<0.4为低度相关;0.4<=|r|<0.7为显著相关;0.7<=|r|<1为高维线性相关

2.5.2、实例

API

from scipy.stats import pearsonr
from sklearn.feature_selection import VarianceThreshold

# 2、实例化一个转换器类
#transform = VarianceThreshold()
transform = VarianceThreshold(threshold=10)# 3、调用fit_transform
data_new = transform.fit_transform(data)print("data_new\n", data_new,' \n data_new.shape:', data_new.shape)# 计算两个变量之间的相关系数
r = pearsonr(data["pe_ratio"],data["pb_ratio"])print("相关系数:\n", r)

前面的数为相关系数。

3、主成分分析(PCA)

3.1、定义

旨在利用降维的思想,把多指标转化为少数几个综合指标(即主成分),其中每个主成分都能够反映原始变量的大部分信息,且所含信息互不重复。

作用:是数据维数的压缩,尽可能降低原数据的维数(复杂度),损失少量信息

3.2、实例

API

sklearn.decomposition.PCA
导入:
from sklearn.decomposition import PCA

# 1、实例化一个转换器类
transform = PCA(n_components=2)  # 4个特征降到2个特征# 2、调用fit_transform
data_new = transform.fit_transform(data)print("data_new\n", data_new)# 1、实例化一个转换器类
transform2 = PCA(n_components=0.95)  # 保留95%的信息# 2、调用fit_transform
data_new2 = transform2.fit_transform(data)print("data_new2\n", data_new2)

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

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

相关文章

机器学习-生存分析:如何基于随机生存森林训练乳腺癌风险评估模型?

一、 引言 乳腺癌是女性最常见的恶性肿瘤之一&#xff0c;也是全球范围内女性死亡率最高的癌症之一。据统计&#xff0c;每年全球有超过200万人被诊断为乳腺癌&#xff0c;其中约60万人死于该疾病。因此&#xff0c;乳腺癌的早期诊断和风险评估对于预防和治疗乳腺癌具有非常重要…

npm安装 electron 报错

1、问题一 解决&#xff1a; 降低一下node版本&#xff0c; 具体降低到多少不确定&#xff0c;反正我当时用的是 node 14.16.1 2、经过上面之后&#xff0c;有可能会出现下面一个问题 解决 npm config set electron_mirror "https://npm.taobao.org/mirrors/electron/&…

异地环控设备如何远程维护?贝锐蒲公英解决远程互联难题

青岛某企业致力于孵化设备、养禽设备和养猪设备的研发、生产和服务&#xff0c;历经三十多年发展&#xff0c;目前已成长为行业主要的养殖装备及工程服务提供商&#xff0c;产品覆盖养殖产业链中绝大多数环节&#xff0c;涉及自动化设备、环控设备、整体解决方案等。 在实际应用…

是否需要跟上鸿蒙(OpenHarmony)开发岗位热潮?

前言 自打华为2019年发布鸿蒙操作系统以来&#xff0c;网上各种声音百家争鸣。尤其是2023年发布会公布的鸿蒙4.0宣称不再支持Android&#xff0c;更激烈的讨论随之而来。 本文没有宏大的叙事&#xff0c;只有基于现实的考量。 通过本文&#xff0c;你将了解到&#xff1a; Har…

鸿蒙HarmonyOS- 弹框组件库

简介 今天介绍一个基于ArkUI框架开发的弹框组件库&#xff0c;该库基于ArkUI的弹框基础功能和自定义能力。针对通用的弹框业务场景&#xff0c;该库提供了丰富的组件弹窗功能。 包括确认输入弹窗、列表展示选择弹窗、自定义底部/顶部弹窗、自定义动画弹窗、自定义全屏弹窗、消息…

【教学类-43-05】 不可用 20231229 N宫格数独5.0(n=1-9) (ChatGPT AI对话大师生成 随机数字填空 )

说明&#xff1a;本代码使用“”随机数字填空”&#xff0c;结果有误差 不能使用 背景需求&#xff1a; 大4班20号说&#xff1a;我不会做这种&#xff08;九宫格&#xff09;&#xff0c;我做的是小格子的&#xff0c; 他把手工纸翻过来&#xff0c;在反面自己画了矩阵格子。…

Vue学习计划-Vue3--核心语法(一)OptionsAPI、CompositionAPI与setup

1. OptionsAPI与CompositionAPI Vue2的API设计是Options(配置)风格的Vue3的API设计是Composition(组合)风格的 Options API的弊端&#xff1a; Options类型的API&#xff0c;数据、方法、计算属性等&#xff0c;是分散在&#xff1a;data、methods、computed中的&#xff0c;若…

【ESP-NOW Web 服务器传感器仪表板 (ESP-NOW + Wi-Fi)】

【ESP-NOW Web 服务器传感器仪表板 &#xff08;ESP-NOW Wi-Fi&#xff09;】 1. 前言2. 同时使用 ESP-NOW 和 Wi-Fi3. 项目概况4. 先决条件4.1 环境配置4.2 DHT 库4.3 ESPAsyncWebSrv服务器库4.4 Arduino_JSON4.5 所需零件4.6 获取接收板 MAC 地址4.7 ESP32 发送电路 5. ESP3…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)在EventLoop的任务队列中添加新任务

任务队列是一个链表&#xff0c;每个节点包含channel类型、文件描述符和操作类型。在添加节点时&#xff0c;需要考虑线程同步&#xff0c;并确保节点被正确地添加到链表中。节点的操作可以写到另一个函数中&#xff0c;以便于程序的维护。在添加任务节点时&#xff0c;需要加互…

【心得】PHP文件包含高级利用攻击面个人笔记

目录 一、nginx日志文件包含 二、临时文件包含 三、php的session文件包含 四、pear文件包含 五 、远程文件包含 文件包含 include "/var/www/html/flag.php"; 一 文件名可控 $file$_GET[file]; include $file.".php"; //用php伪协议 &#xff0…

基于矩阵乘的CUDA编程优化过程

背景&#xff1a;网上很多关于矩阵乘的编程优化思路&#xff0c;本着看理论分析万遍&#xff0c;不如实际代码写一遍的想法&#xff0c;大概过一下优化思路。 矩阵乘的定义如下&#xff0c;约定矩阵的形状及存储方式为: A[M, K], B[K, N], C[M, N]。 CPU篇 朴素实现方法 按照…

test dbtest-03-对比 Liquibase、flyway、dbDeploy、dbsetup

详细对比 Liquibase、flyway、dbDeploy、dbsetup&#xff0c;给出对比表格 下面是一个简要的对比表格&#xff0c;涵盖了 Liquibase、Flyway、dbDeploy 和 DbSetup 这四个数据库变更管理工具的一些主要特点。 特点/工具LiquibaseFlywaydbDeployDbSetup开发语言Java&#xff0…