在对各种数组执行连续转换后,使用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()`.
答案 0 :(得分:0)
显然,您可以直接分配lambda值。 因此,最初,您保存用于转换的.lambdas_,例如: savedLamdas = bc.lambdas _
然后,在执行.inverse_transformed()之前,您直接还原保存的lambda,例如: bc.lambdas_ = savedLamdas
令我惊讶的是,您可以直接设置lambdas_属性,但是它可以工作(至少在我的scikit-learn 0.21.2版本中)。