Jai*_*era 8 python pipeline scikit-learn
我想了解如何在管道中应用逆变换,而不是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)
Run Code Online (Sandbox Code Playgroud)
获得给定模型(本例中为 KMeans)的输出后,如何取回numeric任何 X 数据帧值的原始比例?
我知道StandardScaler有一个方法 ( .inverse_transformation) 可以做到这一点,但我的问题是在使用管道时出现的ColumnTransformer。
PS:这样做的目的是解释模型的质心。
小智 2
您可能已经找到了解决方案,但我也遇到了类似的问题。我正在使用 pandas 并希望 ColumnTransformer 再次返回数据帧。我通过将列名称按在列转换器中使用的顺序放回来做到这一点,但我想确保它是正确的,所以我想反转转换并检查它是否返回原始数据帧,因此没有错误标记任何数据帧列。
有两种方法可以访问 tf 中的子变压器:
tf.transformers_[1][1] # second transformer, 2nd item being the actual class
tf.named_transformers_['scaler']
Run Code Online (Sandbox Code Playgroud)
然后,您可以调用该特定子转换器的 inverse_transform。这只允许您使用其中一个转换器进行逆运算,因此您必须通过将两者的结果再次附加到 1 帧中来重建数据集。
| 归档时间: |
|
| 查看次数: |
4682 次 |
| 最近记录: |