python - scikit learn 的 fit_transform 是否也会转换我的原始数据框?

标签 python pandas scikit-learn

我正在使用 scikit 学习的 StandardScaler() 并注意到在我应用 transform(xtrain) 或 fit_transform(xtrain) 之后,它也会更改我的 xtrain 数据帧。这应该发生吗?如何避免 StandardScaler 更改我的数据框? (我试过使用 copy=False)

xtrain.describe()    #everything ok here
scalar = StandardScaler()
xtrain2 = scalar.fit_transform(xtrain)   

在这个阶段,我希望 xtrain 不会改变,而 xtrain2 是 xtrain 的缩放版本。但是当我在 2 个数据帧上运行 describe() 时,我发现它们是相同的并且都被缩放了。这是为什么?

我遇到同样的问题:

scalekey = scalar.fit(xtrain)
xtrain2 = scalekey.transform(xtrain)

最佳答案

您可以复制一份并传递它,以免修改您的 df:

xtrain2 = xtrain.copy()
scalar.fit_transform(xtrain2) 

docs说明 StandardScaler 的默认参数是 copy=True 所以它不应该修改你的 df。

关于python - scikit learn 的 fit_transform 是否也会转换我的原始数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31263242/

相关文章:

python - 使用 module_from_spec 加载的 python 类中缺少源信息

python - 将连续的某些值相加

python - 将二维数组放入 Pandas 系列

python - pandas dataframe 使用 apply 为一组值添加多行

python - 使用sklearn NMF组件重建新数据与inverse_transform不匹配

python - 无法加载 pickle 的自定义估算器 sklearn 管道

python - 如何在 asdict 中获取@property 方法?

Python datetime 使用 timedelta 减去 1 天

python-2.7 - 根据列中的 True 值过滤行 - python pandas dataframe

python - 使用 Sklearn 的 score 方法得到 ValueError : multiclass-multioutput is not supported