文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

改进分析的五种鲜为人知的数据转换技术

2024-11-28 15:37

关注

审校 | 重楼

数据转换是通过某些计算或方法将数据转换为另一种值以更好地表示数据的过程。它通常用于满足某些统计测试假设或澄清数据可视化。有许多数据转换公式,但不是每转换都是一样、都能满足的需求。

一些流行的数据转换(比如正态转换和对数转换占据主导地位,因为它们很容易解释,并且在不牺牲太多信息的情况下实现转换目的。

本文将探讨五种鲜为人知的数据转换,它们有望改进分析。

1. Box-Cox转换

Box-Cox换是一种使数据严格遵循正态分布λ参数控制的技术。由于我们可以控制转换的参数,因此它比简单的对数转换灵活得多。

当我们的数据必须严格遵循正态分布或我们想要稳定数据方差时,通常使用Box-Cox转换。通过改变λ参数,转换器可以有多种转换形式。比如说λ = 1表示数据没有变化,λ = 0表示对数变换,而任何其他λ值都是对数据进行幂变换。

我们可以用下面的Python代码实现转换。

import numpy as np
from scipy.stats import boxcox

data = np.random.exponential(scale=2, size=1000)

transformed_data = boxcox(data, lmbda = 0.5)

一试各种λ,看看它是否适合的分析。

2. Yeo-Johnson转换

Box-Cox转换是一种出色的数据转换技术,因为我们可以控制转换量,但它有一个缺点:它只适用于正值。基于Box-Cox转换Yeo-Johnson转换可以处理负值。

Box-Cox转换一样,Yeo-Johnsonλ参数控制,可以根据的要求进行更改。此外,如果需要满足线性模型假设,它适用于改善数据正态性和均方差。

可以使用以下代码运用转换。

import numpy as np
from scipy.stats import yeojohnson

data = np.random.normal(loc=0, scale=2, size=1000)
transformed_data = yeojohnson(data, lmbda = 0.5)

3. 秩转换

转换是一种非参数方法,它通过在数据排序时用数据秩替换数据对数据进行转换比如说,将最小的数据点转换1,下一个最小的数据点转换2,以此类推。它通常用于值比秩更不重要的情况。

当我们的数据有很多异常值,或者数据规模可以忽略时,秩转换很有用。这种转换可以降低异常值的影响,因为普遍的正态转换会受到异常值的影响。秩转换也常与参数统计检验结合使用。

我们可以用下面的Python代码进行秩转换

from scipy.stats import rankdata
import numpy as np

data = np.random.normal(loc=0, scale=2, size=1000)

ranked_data = rankdata(data)

4. 倒数转换

倒数转换是一种数据转换技术,将数据值替换倒数(1/x),其中x是可以自己决定的值。当处理倾斜的数据分布大多数数据值都很大时,它很有用。倒数转换会尽量减少大值的影响,以便数据集适用于任何后续方法。

这种转换适用于数据包含递减关系的情况,因为它可以帮助更线性地表示数据。然而,如果数据包含零或负值,倒数转换就不好了,因为这种转换不能正确地表示信息。

至于Python代码实现,可以使用以下代码

import numpy as np

data = np.random.exponential(scale=2, size=1000) + 1
reciprocal_transformed_data = np.reciprocal(data)

5. 分箱转换(离散化)

分箱转换或离散化是一种数据转换技术,它将连续的数据值分成一定的区间(分箱)。转换将数据值替换成分箱标签。用的转换技术将数据预处理具有秩的分类数据,有助于简化数据并降低噪声。

这种转换是有用的,特别是对于那些得益于分类输的技术,比如决策树。它对于处理数据异常值和尽量减小影响也很有用。然而必须正确地决定分箱区间,因为它可能影响数据转换。可以尝试遵循许多经验法则。比如说,Sturges规则表示分箱的数量=log(N) + 1,其中N是数据的数量。

对于使用Sturges 规则的分箱转换,可以使用以下Python代码

import numpy as np
import pandas as pd
data = np.random.normal(loc=0, scale=1, size=1000)num_bins = int(np.ceil(np.log2(len(data)) + 1))
binned_data = pd.cut(data, bins=num_bins, labels=False)

结论

数据转换是一种数据预处理技术,它将原始数据转换遵循某些计算的另一个值。数据转换在许多情况下都很有用,可以遵循特定的数据分布或更直观地获得洞察力。有许多用的数据转换,但鲜为人知因此本文探讨应该了解的五种转换技术。

原文5 Lesser-Known Data Transformation Techniques for Better Analysis,作者:Cornellius Yudha Wijaya

来源:51CTO内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯