使用PowerTransformer时如何正确使用inverse_transform方法?

时间:2019-07-08 14:10:10

标签: python python-3.x scikit-learn

在对各种数组执行连续转换后,使用inverse_transform方法对数组进行逆变换时遇到了一些困难。我可以使用transform(dd[rep(seq_len(nrow(dd)), lengths(dl)),], value = unlist(dl)) 属性访问用于原始转换的lambda值。此外,我了解到here列出了用于执行inverse_transform的代码。但是,我想知道如何正确使用inverse_transform方法。

此代码确实按预期执行了逆变换:

.lambdas_

此代码的输出显示a与a_inverse_transformed相同。但是,我无法在其他脚本中或其他转换后存储lambda,以供以后的inverse_transform使用。这是我尝试过的代码:

from sklearn.preprocessing import PowerTransformer

a = np.array([1,3,3,6,3]).reshape(-1, 1)

bc = PowerTransformer(method='box-cox', standardize=False)
bc.fit(a)
a_transformed = bc.transform(a)

a_inverse_transformed = bc.inverse_transform(a_transformed)
a_inverse_transformed

我在上面的代码中收到以下错误:

a = np.array([1,3,3,6,3]).reshape(-1, 1)
bc = PowerTransformer(method='box-cox', standardize=False)
bc.fit(a)
a_transformed = bc.transform(a)
a_lambda = bc.lambdas_[0]

b = np.array([11,33,35,60,38]).reshape(-1, 1)
bc = PowerTransformer(method='box-cox', standardize=False)
bc.fit(b)
b_transformed = bc.transform(b)


bc.set_params(**{'lambdas_':a_lambda})
a_inverse_transformed = bc.inverse_transform(a_transformed)
a_inverse_transformed

此外,我尝试使用bc.get_params()。keys()查找正确的参数。我看到的唯一键是

ValueError: Invalid parameter lambdas_ for estimator PowerTransformer(copy=True, method='box-cox', standardize=False). Check the list of available parameters with `estimator.get_params().keys()`.

1 个答案:

答案 0 :(得分:0)

显然,您可以直接分配lambda值。 因此,最初,您保存用于转换的.lambdas_,例如: savedLamdas = bc.lambdas _

然后,在执行.inverse_transformed()之前,您直接还原保存的lambda,例如: bc.lambdas_ = savedLamdas

令我惊讶的是,您可以直接设置lambdas_属性,但是它可以工作(至少在我的scikit-learn 0.21.2版本中)。