如何在R中对数据进行标准化[3种简单方法]

大家好,读者们!在本文中,我们将探讨R编程中3种简单的数据规范化方法。

那么,让我们开始吧! 🙂


规范化是什么?

在数据科学中解决预测问题时,特征缩放是建模之前的一个重要步骤。机器学习算法对较小和标准化的数据效果更好。

这种情况下就需要进行标准化。标准化技术使我们能够减小变量的规模,从而积极地影响数据的统计分布。

在接下来的部分,我们将看一些对数据值进行规范化的技术。


在R中对数据进行规范化 – 对数转换。

在现实世界的情景中,为了处理数据,我们经常遇到数据集分布不均的情况。也就是说,它们要么存在偏差,要么不符合数值的规范化。

在这种情况下,将值通过每个单独的对数值进行缩放是使其适应适当比例的最简便方法。

在下面的例子中,我们使用R文档中的log()函数对数据帧”data”中存在的巨大数据值进行了缩放。

请你闭嘴。

rm(list = ls())

data = c(1200,34567,3456,12,3456,0985,1211)
summary(data)
log_scale = log(as.data.frame(data))

输出:

         data
1	7.090077
2	10.450655
3	8.147867
4	2.484907
5	8.147867
6	6.892642
7	7.099202

2. 使用R进行最小-最大缩放来归一化数据。

另一种通过最小-最大缩放方法进行数值归一化的高效方式。

通过最小最大缩放,我们将数据值仅缩放在0到1的范围内。由于这个原因,异常值对数据的影响在一定程度上被压制了。此外,它帮助我们获得较小的标准差数据尺度。

在下面的示例中,我们使用了 “caret” 库来预处理和缩放数据。preProcess() 函数使我们能够使用 method = c(‘range’) 参数将值缩放到 0 到 1 的范围内。predict() 方法将 preProcess() 函数的操作应用于整个数据框,如下所示。

你明天要去哪里?
你明天会去哪个地方?

rm(list = ls())

data = c(1200,34567,3456,12,3456,0985,1211)
summary(data)
library(caret)
process <- preProcess(as.data.frame(data), method=c("range"))

norm_scale <- predict(process, as.data.frame(data))

输出:

           data
1	0.03437997
2	1.00000000
3	0.09966720
4	0.00000000
5	0.09966720
6	0.02815801
7	0.03469831

3. 使用R进行标准缩放来进行数据归一化。

在标准化缩放中,也被称为值的标准化,我们对数据值进行缩放,以使每个变量的整体统计摘要具有零均值和单位方差值。

数据值。使用scale()函数可以对数据值进行标准化,使其居中且缩放。

rm(list = ls())

data = c(1200,34567,3456,12,3456,0985,1211)
summary(data)
scale_data <- as.data.frame(scale(data))

输出:

如下所示,数据在缩放之前的均值为6412。然而,在进行值缩放后,均值减少为零。

 Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
     12    1092    1211    6412    3456   34567	

            V1
1	-0.4175944
2	2.2556070
3	-0.2368546
4	-0.5127711
5	-0.2368546
6	-0.4348191
7	-0.4167131

           V1         
 Min.   :-0.5128  
 1st Qu.:-0.4262  
 Median :-0.4167  
 Mean   : 0.0000  
 3rd Qu.:-0.2369  
 Max.   : 2.2556  

结论

通过这个,我们已经结束了这个主题。如果您遇到任何问题,请随时在下方留言。想要更多与R编程相关的帖子,请继续关注我们!

到那时,愉快学习! 🙂


参考资料

  • scale() in R – Documentation
发表回复 0

Your email address will not be published. Required fields are marked *


广告
将在 10 秒后关闭
bannerAds