Python scikit是否学习';s fit_transform是否也转换我的原始数据帧?

Python scikit是否学习';s fit_transform是否也转换我的原始数据帧?,python,pandas,scikit-learn,Python,Pandas,Scikit Learn,我正在使用scikit learning的StandardScaler(),请注意,在应用转换(xtrain)或fit_转换(xtrain)后,它也会更改我的xtrain数据帧。这应该发生吗?如何避免StandardScaler更改数据帧?(我尝试使用copy=False) 在这个阶段,我希望xtrain不会改变,而xtrain2是xtrain的缩放版本。但是,当我在两个数据帧上运行descripe()时,我看到它们都是相同的,并且都已被缩放。为什么呢 当我这样做时,我会遇到同样的问题: sca

我正在使用scikit learning的StandardScaler(),请注意,在应用转换(xtrain)或fit_转换(xtrain)后,它也会更改我的xtrain数据帧。这应该发生吗?如何避免StandardScaler更改数据帧?(我尝试使用copy=False)

在这个阶段,我希望xtrain不会改变,而xtrain2是xtrain的缩放版本。但是,当我在两个数据帧上运行descripe()时,我看到它们都是相同的,并且都已被缩放。为什么呢

当我这样做时,我会遇到同样的问题:

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

为了不修改您的df,您可以复制并传递:

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

StandardScaler
的默认参数是
copy=True
,因此它不应该修改您的df。

考虑升级到pandas和scikit learn中的0.16.x或更高版本。软件包作者不断改进每个软件包对待其他软件包的方式。

您使用的sklearn、numpy和pandas版本是什么?默认参数
copy=True
应该意味着它返回一个副本,而不是在Place中执行缩放。我无法使用pandas 0.16.2、python 3.3.4 64位复制错误,numpy 1.9.2和sklearn 0.16。1@EdChum,我遇到了Jason描述的熊猫0.14.x和sklearn 0.15.x的问题。这是库之间的交叉交互之一,显然在以后的版本中已经修复(比如交叉验证问题)。@EdChum,我正在Anaconda 2.2.0(64位)中使用sklearn 0.15.2、pandas 0.15.2、numpy 1.9.2、Python 2.7.9。感谢您下面的解决方案,它很有效。我开始认为这是因为我的xtrain是我原始数据帧的视图,所以转换会影响它。。xtrain,xtest=dfX[idx],dfX[idx==False]嗨,我查看了我的df的一个片段,但仍然无法再现您的问题,我会尝试升级pandas和sklearn,另一件事是尝试
xtrain2=scalar.fit_transform(xtrain.values)
是否修改df
xtrain2 = xtrain.copy()
scalar.fit_transform(xtrain2)