用于数据缩放、居中和转换的Python库

用于数据缩放、居中和转换的Python库,python,scikit-learn,Python,Scikit Learn,Python中是否有进行数据转换的包:缩放、居中和Box-Cox转换以消除数据的偏斜? 在R中,这可以使用插入符号来完成: set.seed(1) predictors = data.frame(x1 = rnorm(1000, mean = 5, sd = 2), x2 = rexp(1000,

Python中是否有进行数据转换的包:缩放、居中和Box-Cox转换以消除数据的偏斜? 在R中,这可以使用插入符号来完成:

set.seed(1)
predictors = data.frame(x1 = rnorm(1000,
                                   mean = 5,
                                   sd = 2),
                        x2 = rexp(1000,
                                  rate=10))

require(caret)

trans = preProcess(predictors, 
                   c("BoxCox", "center", "scale"))
predictorsTrans = data.frame(
      trans = predict(trans, predictors))

我知道关于
sklearn
,但我找不到上述处理函数。

对于缩放和居中,您可以使用
sklearn
中的
预处理

from sklearn import preprocessing
centered_scaled_data = preprocessing.scale(original_data)
对于Box-Cox,您可以从
scipy
使用
boxcox

from scipy.stats import boxcox
boxcox_transformed_data = boxcox(original_data)
from scipy.stats import skew
skness = skew(original_data)
对于偏斜度的计算,您可以使用
scipy
中的
skew

from scipy.stats import boxcox
boxcox_transformed_data = boxcox(original_data)
from scipy.stats import skew
skness = skew(original_data)

您可以阅读更多有关的详细信息。此外,您还可以找到有关的更多详细信息。

现在scikit learn有了一种方法来做您想做的事情。这提供了一个熟悉的API,并且很容易放入管道中

sklearn版本0.20.0通过
power\u transform
方法提供了一个Box-Cox转换。该方法应用Box-Cox,然后对数据应用零均值、单位方差归一化。您可以使用(
standarding=False
)编辑默认规范化

应用功率变换功能,使数据更像高斯分布

幂变换是一系列参数单调变换 用于使数据更像高斯分布。这对我们来说很有用 与异方差(非常数方差)相关的建模问题, 或其他需要正常状态的情况

目前,power_transform()支持Box-Cox变换。博克斯考克斯 要求输入数据严格为正数。最佳参数 稳定方差和最小化偏度是通过 最大可能性

默认情况下,零均值单位方差标准化应用于 转换数据

主文档页面没有提到它,但是
power\u transform
也支持Yeo-Johnson转换

文档在这里也有一个很好的解释:

scikit learn正在添加对Box-Cox变换的支持:两个链接都已断开。通过使用sklearn.preprocessing,您可以缩放或变换数据。注:在sklearn版本0.23中,电力变压器的默认方法是“Yeo Johnson”,而不是先前版本中的Box cox[Box cox仅适用于非负数据]这是一个很好的库,您可以参考它,但我几乎错过了它。考虑通过添加几行代码来编辑你的ANS,这确实是一个很好的答案。使用
scikit-learn
的替代方法也可以很好地验证通过
Scipy
获得的转换。