用于数据缩放、居中和转换的Python库
Python中是否有进行数据转换的包:缩放、居中和Box-Cox转换以消除数据的偏斜? 在R中,这可以使用插入符号来完成:用于数据缩放、居中和转换的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,
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
获得的转换。