tidyverse数据特征学习

目录

特征缩放

1,标准化-scale

2,归一化-rescale

3,行规范化

4,数据平滑

特征变换

1. 非线性特征

2. 正态性变换

3. 连续变量离散

特征降维


特征缩放

不同数值型特征的数据量纲可能相差多个数量级,这对很多数据模型会有很大 影响,所以有必要做归一化处理,就是将列或行对齐并转化为一致。

1,标准化-scale

标准化也称为 Z 标准化,将数据变成均值为 0, 标准差为 1。(标准差:离均差平方的算数平均数(即:方差)的算数平方根)。所以这里缩放的是数据的标准差,而不是数据的范围。

R里常用scale函数:

scale(x) # 标准化

scale(x, scale = FALSE) # 中心化: 减去均值(中心化后,0 就代表均值,更方便模型解释)

示例:

rm(list = ls())
#生成随机数
set.seed(123)
data <- runif(100, 1, 1000)#在1-1000中间生成100个随机数
data[1:10]
[1] 288.28994 788.51683 409.56794 883.13439 940.52682  46.51094 528.57738
[8] 892.52663 551.88358 457.15812#标准化
a <- scale(data)
a[1:10]
[1] -0.7402982  1.0166700 -0.3143283  1.3489993  1.5505811 -1.5895088
[7]  0.1036736  1.3819880  0.1855330 -0.1471753
#中心化: 减去均值
b <- scale(data, scale = FALSE) 
b[1:10]
[1] -210.77049  289.45640  -89.49249  384.07395  441.46638 -452.54949
[7]   29.51695  393.46619   52.82314  -41.90231data[1]-mean(data)#减去均值
[1] -210.7705
2,归一化-rescale

归一化是将数据线性放缩到 [0, 1], 一般还同时考虑指标一致化,将正向指标 (值越大越好)和负向指标(值越小越好)都变成正向。同时还涉及数据缩放。R语言数据缩放-1到1-CSDN博客

rescale = function(x, type = "pos", a = 0, b = 1) {
rng = range(x, na.rm = TRUE)
switch (type,
"pos" = (b - a) * (x - rng[1]) / (rng[2] - rng[1]) + a,
"neg" = (b - a) * (rng[2] - x) / (rng[2] - rng[1]) + a)
}

探索:

rm(list = ls())
library(dplyr)
library(scales)
#生成随机数
set.seed(123)
data <- runif(100, 1, 1000)#在1-1000中间生成100个随机数
data[1:5]
[1] 288.2899 788.5168 409.5679 883.1344 940.5268#缩放到-1到1之间
a <- rescale(data,to = c(-1, 1))
a[1:5]
[1] -0.4224240  0.5854362 -0.1780724  0.7760722  0.8917068

注意:标准化和归一化是两种不同数据缩放的方法:归一化(Normalization)是指将数据缩放到[0,1]的范围内,公式为:(x - min)/(max - min),其中x为原始数据,min和max分别为数据集中的最小值和最大值。归一化后的数据分布在[0,1]之间,适用于数据分布有明显边界的情况。

标准化(Standardization)是指将数据按照均值为0,标准差为1的方式进行缩放,公式为:(x - mean)/std,其中x为原始数据,mean和std分别为数据集的均值和标准差。标准化后的数据分布在均值附近,标准差为1,适用于数据分布没有明显边界的情况。

区分规范化,归一化,标准化,正则化 - 知乎 (zhihu.com)

3,行规范化

行规范化,常用于文本数据或聚类算法,是保证每行具有单位范数,即每行的 向量” 长度” 相同。想象一下,𝑚 个特征下,每行数据都是 𝑚 维空间中的一 个点,做行规范化能让这些点都落在单位球面上(到原点的距离均为 1)。行规范化,一般采用 𝐿2 范数什么是范数(norm)?以及L1,L2范数的简单介绍-CSDN博客

library(tidyverse)
data <- iris
#前三行 行规范化(去除第5列的物种)
data1 <- iris[1:3,-5] %>%pmap_dfr(~ c(...) / norm(c(...), "2"))
# A tibble: 3 × 4Sepal.Length Sepal.Width Petal.Length Petal.Width<dbl>       <dbl>        <dbl>       <dbl>
1        0.804       0.552        0.221      0.0315
2        0.828       0.507        0.237      0.0338
3        0.805       0.548        0.223      0.0343
4,数据平滑

若数据噪声太多的问题,通常就需要做数据平滑。 最简单的数据平滑方法是移动平均,即用一定宽度的小窗口1滑过曲线,会把 曲线的毛刺尖峰抹掉,能一定程度上去掉噪声还原原本曲线。 窗口宽度越大,平滑的效果越明显。(理解就是使用 平均值代替波动值)

比如五点平滑,用前两点/自身/后两点,共五点平均值代替自身因变量值

rm(list = ls())
library(slider)
library(patchwork)
p1 = economics %>%ggplot(aes(date, uempmed)) +geom_line()
p2 = economics %>% # 做五点移动平均mutate(uempmed = slide_dbl(uempmed, mean,.before = 2, .after = 2)) %>%ggplot(aes(date, uempmed)) +geom_line()
p1 | p2

特征变换

1. 非线性特征
library(tidymodels)
recipe(hwy ~ displ + cty, data = mpg) %>%
step_poly(all_predictors(), degree = 2,
options = list(raw = TRUE)) %>%
prep() %>%
bake(new_data = NULL)
2. 正态性变换

对数变换或幂变换:对于方差逐渐变大的异方差的时间序列数据,或右偏分布的数据,可以尝试做 对数变换或开根号变换,以稳定方差和变成正态分布。

rm(list = ls())
df = mlr3data::kc_housing
p1 = ggplot(df, aes(price)) +geom_histogram()
p2 = ggplot(df, aes(log10(price))) +geom_histogram()
p1 | p2

对数变换特别有用,因为具有可解释性:对数值的变化是原始尺度上的相对 (百分比)变化。若使用以 10 为底的对数,则对数刻度上每增加 1 对应原始 刻度上的乘以 10。

3. 连续变量离散

在统计和机器学习中,有时需要将连续变量转化为离散变量,称为连续变量离 散化或分箱,常用于银行风控建模,特别是线性回归或 Logistic 回归模型

例子:使得结果更便于分析和解释。比如,年龄从中年到老年,患高血压比例 增加 25%,而年龄每增加一岁,患高血压比例不一定有显著变化

rbin 包提供了简单的分箱方法:

• rbin_manual(): 自定义分箱,手动指定切分点(左闭右开)

• rbin_equal_length(): 等宽分箱

• rbin_equal_freq(): 等频分箱

• rbin_quantiles(): 分位数分箱

• rbin_winsorize(): 缩尾分箱,不受异常值影响

特征降维

特征降维(主要是PCA的补充)-CSDN博客

PCA利用的是协方差矩阵的特征值分解原理,实现多个特征向少量综合特征(主成分)的转化,每个成分都是多个原始特征的线性组合,且各个成分互补相关,第一主成分用于解释数据变异(
方差)最大的,第二主成分次之,以此类推。

#鸢尾花主成分降维
rm(list = ls())
data <- irislibrary(recipes)
recipe(~.,data=iris) %>%step_normalize(all_numeric()) %>%step_pca(all_numeric(),threshold = 0.85)%>%##设置阈值prep()%>%bake(new_data=NULL)
————————————————
版权声明:本文为CSDN博主「hx2024」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hx2024/article/details/134402726

结果:

# A tibble: 150 × 3
   Species   PC1     PC2
   <fct>   <dbl>   <dbl>
 1 setosa  -2.26 -0.478 
 2 setosa  -2.07  0.672 
 3 setosa  -2.36  0.341 
 4 setosa  -2.29  0.595 
 5 setosa  -2.38 -0.645 
 6 setosa  -2.07 -1.48  
 7 setosa  -2.44 -0.0475
 8 setosa  -2.23 -0.222 
 9 setosa  -2.33  1.11  
10 setosa  -2.18  0.467 
# ℹ 140 more rows
# ℹ Use `print(n = ...)` to see more rows

感谢张敬信老师的书籍!!!

参考:

张敬信 老师的《R语言编程:基于tidyverse》

为R语言正名之书《R语言编程:基于tidyverse》正式上市! - 知乎 (zhihu.com)

张敬信老师投稿视频-张敬信老师视频分享-哔哩哔哩视频 (bilibili.com)

资源获取introR: 这是一本中文 R 语言入门书,基于最新 tidyverse 包。 (gitee.com)

张敬信-1393页-R语言编程:基于tidyverse-完整课件(带书签).pdf (gitee.com)

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

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

相关文章

【企业微信连接问题】

1、个人可以创建企业微信的企业账号么&#xff1f; 答&#xff1a;可以的&#xff0c;只是没法认证。不过基础的功能还是有的。 注册步骤&#xff1a;企业微信注册步骤 2、集简云链接企业微信&#xff0c;在授权之后&#xff0c;找不到集简云怎么办&#xff1f; 答&#xff1a…

计算机组成原理4

1.汇编语言 2.汇编语言常见的运算指令 3.AT&T格式 和 Intel格式 4.跳转指令 5.cmp比较的底层原理 6.函数调用的机器级表示 7.CISC和RISC

多线程详解(未完结)

文章目录 ⭐️写在前面的话⭐️一、线程简介1.1 进程1.2 线程1.3 多线程和多进程的区别1.4 总结 二、继承实现2.1 继承Thread类例子&#xff1a;网图下载 2.2 实现Runnable接口 (推荐)案例&#xff1a;火车站买票问题案例&#xff1a;龟兔赛跑 2.3 实现Callable接口 (了解即可)…

ubuntu20.04打不开github网址的有效解决方案

问题描述&#xff1a;重装的ubuntu系统&#xff0c;chrome浏览器刚开始还能打开github网址&#xff0c;然后突然就打不开了&#xff0c;换网络也不行。 解决方案步骤 1&#xff0c;查询你的电脑IP对应的github网址信息 2&#xff0c;修改host文件&#xff0c;添加第1步查询到…

【React】打包体积分析 source-map-explorer

通过分析打包体积&#xff0c;才能知道项目中的哪部分内容体积过大&#xff0c;方便知道哪些包需要进一步优化。 使用步骤 安装分析打包体积的包&#xff1a;npm i source-map-explorer在 package.json 中的 scripts 标签中&#xff0c;添加分析打包体积的命令对项目打包&…

【C++】多线程(一):std::thread的使用

这篇文章应我朋友的邀请&#xff0c;写一篇文章介绍下C多线程。 编译环境准备 首先确定你的编译器支持std的thread&#xff0c;如果不支持&#xff0c;就会出现诸如“thread找不到”的问题。 以下假设你使用 gnu gcc 编译器&#xff0c;因为 MSVC 的我也不太熟悉。 linux …

Effective Modern C++(1.顶层const与底层const)

1.顶层const与底层const的定义 const修饰的变量不可以改变&#xff0c;那么他就是顶层const&#xff0c;如&#xff1a; const int a 10; 那么&#xff0c;对于 const int *const p new int(10); 第二个const就是顶层const&#xff0c;因为他修饰的是p&#xff1b;第一个…

学习.NET验证模块FluentValidation的基本用法(续3:ASP.NET Core中的调用方式)

FluentValidation模块支持在ASP.NET Core项目中进行手工或自动验证&#xff0c;主要验证方式包括以下三种&#xff1a;   1&#xff09;手工注册验证类&#xff0c;并在控制器或其它模块中调用验证&#xff1b;   2&#xff09;基于ASP.NET验证管道&#xff08;validation …

Visual Studio 中文注释乱码解决方案

在公司多人开发项目中经常遇到拉到最新代码&#xff0c;发现中文注释都是乱码&#xff0c;很是emjoy..... 这是由于编码格式不匹配造成的&#xff0c;如果你的注释是 UTF-8 编码&#xff0c;而文件编码是 GBK 或者其他编码&#xff0c;那么就会出现乱码现象。一般的解决办法是…

打包SpringBoot 项目为本地应用

使用工具&#xff1a;exe4j、Inno Setup Compiler 步骤&#xff1a; 1&#xff0c;将dll包放入项目根路径下&#xff1b; 2&#xff0c;idea 使用Maven打jar包&#xff1b; 3&#xff0c;使用exe4j 工具进行打包&#xff1b; 打开工具首页不动&#xff08;直接 next&#xff…

leetcode_828_统计子串中的唯一字符

题意&#xff1a;所有子串中单个字符出现的次数和 问题转化&#xff1a;对于串中的每个字符&#xff0c;只包含其一次的所有子串的个数和 关于求只包含某位置字符一次的子串个数 class Solution { public:int uniqueLetterString(string s) {/* ...A...A...A...*/int n s.size…

第二十二章 解读pycocotools的API,目标检测mAP的计算COCO的评价指标(工具)

Pycocotools介绍 为使用户更好地使用 COCO数据集, COCO 提供了各种 API。COCO是一个大型的图像数据集&#xff0c;用于目标检测、分割、人的关键点检测、素材分割和标题生成。这个包提供了Matlab、Python和luaapi&#xff0c;这些api有助于在COCO中加载、解析和可视化注释。 …

【Skynet 入门实战练习】实现网关服务 | 用户代理 | RPC 协议 | 客户端

文章目录 前言网关服务RPC 协议看门狗服务代理服务客户端逻辑梳理 前言 上两章学习了如何搭建一个项目&#xff0c;简单实现了几个基础模块。本章节会实现基本的客户端与服务端的通信&#xff0c;包括网关&#xff08;gate&#xff09;、看门狗&#xff08;watchdog&#xff0…

不适合当老师怎么转岗

作为一名老师&#xff0c;你需要耐心、热情、知识储备丰富&#xff0c;还要有一定的演讲技巧。但有时候&#xff0c;即使具备了这些条件&#xff0c;你仍然可能觉得自己的个性或能力并不适合这个职业。那么&#xff0c;该如何转岗呢&#xff1f;别担心&#xff0c;我们为你提供…

玉渊谭天对电影色彩分析的“蚊香图”复现-python

视频教程链接&#xff1a;https://www.bilibili.com/video/BV1Lu4y1t7FG/ 最终的实现效果如下&#xff1a; 前几天刷抖音刷到了玉渊谭天对于电影抽取画面制作“蚊香图”&#xff0c;相关视频片段如下。 这种制作”蚊香图“的特效当时有点触动到到我&#xff0c;根据色彩来分…

深度学习技巧应用30-深度学习中的GPU的基本架构原理与应用技巧

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用30-深度学习中的GPU的基本架构原理与应用技巧,GPU是一种专门用于处理大量并行操作的硬件设备,它的架构设计主要是为了图形渲染。然而,由于其并行处理能力,现在广泛应用于深度学习、科学计算等领域。主要的GPU制造商…

autojs-练手-简单的视频号点赞(初阶版)

注释很详细&#xff0c;直接上代码&#xff08;简单的练手实践&#xff0c;仅供参考&#xff09; //设置点赞次数 var num50; //等待权限授予 auto.waitFor(); //进入点赞流程 while(num!0) {//先向下滑一个视频scrollDown();//使用auto.js找到点赞控件的id&#xff08;每个人不…

《软件方法》2023版第1章:1.1 利润=需求-设计,1.2 ABCD工作流

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 第1章 建模和UML 牵着你走进傍晚的风里&#xff0c;看见万家灯火下面平凡的秘密。 《情歌唱晚》&#xff1b;词&#xff1a;黄群&#xff0c;曲&#xff1a;黄群&#xff0c;唱&#…

复数的几何意义

1、复平面&#xff0c;复数的其它表示法 (1)几何表示法 直角平面坐标&#xff1a; 复平面 实轴&#xff0c;虚轴 (2)向量表示法 向量 模&#xff1a; 复数加减法可用向量的三角形法则或者平行四边形法则 (3)结论 (两边之和大于第三边) ((两边之差大于第三边)) *辐角&am…

【Web】/proc利用相关例题wp

先贴一篇文章一起学习一下 [CTF]proc目录的应用 - CodeAntenna ①[HDCTF 2023]YamiYami 点击Read somethings直接跳转到了百度 从url中发现存在任意文件读取&#xff0c;因为不知道flag在哪&#xff0c;所以考虑读环境变量 payload: ?urlfile:///proc/1/environ 拿到fla…