gpt4 book ai didi

python - 如何在 ColumnTransformer 的管道中实现逆变换?

转载 作者:行者123 更新时间:2023-12-04 03:50:12 25 4
gpt4 key购买 nike

我想了解如何在管道中应用逆变换,而不是使用 StandardScaler直接发挥作用。
我正在使用的代码如下:

import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler

categoric = X.select_dtypes(['object']).columns
numeric = X.select_dtypes(['int']).columns

tf = ColumnTransformer([('onehot', OneHotEncoder(), categoric),
('scaler', StandardScaler(), numeric)])

X_preprocessed = tf.fit_transform(X)

model = KMeans(n_clusters=2, random_state=24)
model.fit(X_preprocessed)
获得给定模型的输出(在本例中为 KMeans)后,如何恢复 numeric 的原始比例任何 X 数据框的值?
我知道 StandardScaler有一种方法( .inverse_transformation )可以做到这一点,但我的问题出现在使用带有 ColumnTransformer 的管道时.
P.S.:这样做的目的是解释模型的质心。

最佳答案

您可能已经找到了解决方案,但我遇到了类似的问题。我正在使用 Pandas ,并希望 ColumnTransformer 再次返回数据帧。我通过将列名按顺序放回列名,因为它们在 columntransformer 中使用,但我想确保它是正确的,所以我想反转转换并检查它是否返回了原始数据帧,因此没有错误标记任何列。
有两种方法可以访问 tf 中的子变压器:

tf.transformers_[1][1] # second transformer, 2nd item being the actual class
tf.named_transformers_['scaler']
然后,您可以为该特定子转换器调用 inverse_transform。这只会使您能够对其中一个转换器进行逆运算,因此您必须通过将两者的结果再次附加到 1 帧中来重建数据集。

关于python - 如何在 ColumnTransformer 的管道中实现逆变换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64543516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com