使用 sklearn 转换器,我希望能够将转换应用于列列表,并让转换器使用转换后的值创建新列,而不是将它们应用于现有列。这可能吗?变压器还需要插入管道。
我的目标是比较原始列和转换后的列。变压器周围的包装类可以工作,但我想知道是否有更简单的方法?谢谢你。
最简单的方法是使用一个带有参数的函数,该参数接受您想要转换的特征列表。从那里你有两个选择:
这是您要求的方法。由于该函数仅转换您请求的那些特征,因此您可以替换您希望在函数内转换的特征的值。
这就是我要推荐的。创建原始数据框的副本并将所有转换后的特征“粘贴”到其中。然后,您可以在不同的单元格中打印两个数据帧(我假设您使用的是 jupyter 笔记本)来比较差异。
这将是要使用的函数:
def transform_data(scaler, df, feats_to_transform):
features = scaled_df[feats_to_transform]
transformed_feats = scaler.fit_transform(features.values) # The transformers take only 2d arrays
return transformed_feats
方法一:
df = pd.read_csv('path/to/csv')
scaler = StandardScaler() # from sklearn.preprocessing import StandardScaler
feats_to_transform = ['feat1, feat2, feat3']
transformed_feats = transform_data(scaler, df, feats_to_transform)
df[feats_to_transform] = transformed_feats
方法二:
df = pd.read_csv('path/to/csv')
scaled_df = df.copy(deep=True) # Using deep copy prevents alteration of original data
scaler = StandardScaler() # from sklearn.preprocessing import StandardScaler
feats_to_transform = ['feat1, feat2, feat3']
transformed_feats = transform_data(scaler, df, feats_to_transform)
scaled_df [feats_to_transform] = transformed_feats
# now compare in different cells
df.head()
scaled_df.head()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句