pni*_*gam 2 machine-learning python-3.x scikit-learn data-science
fit_transform 和 transform 有什么区别?为什么转换不直接起作用?
from sklearn.preprocessing import StandardScaler
X_scaler = StandardScaler()
X_train = X_scaler.fit_transform(X_train)
X_test = X_scaler.transform(X_test)
Run Code Online (Sandbox Code Playgroud)
如果直接转换它会给出以下错误
NotFittedError:此 StandardScaler 实例尚未安装。在使用此方法之前,使用适当的参数调用 'fit'。
StandardScaler,根据文档:
通过去除均值和缩放到单位方差来标准化特征
因此,它需要以某种方式首先了解数据的均值和方差。因此fit()或fit_transform()需要这样StandardScaler才能遍历所有数据以找到均值和方差。这些可以通过属性访问:
mean_:训练集中每个特征(列)的平均值。
var_:训练集中每个特征的方差。
请注意,这些将针对数据中的每一列单独计算。
在 中transform(),它只会使用这些mean和variance值来缩放数据。
现在您可能会说为什么它不在transform(). 这样做是为了以与缩放训练数据相同的方式缩放测试数据(从fit_transform())。如果您在每次调用 时计算数据的均值和方差transform(),那么所有传递的数据将具有不同的比例,这不是您想要的。
这适用于所有 scikit 转换器。
1) fit()- 只会遍历数据并保存所有需要的数据属性
2) transform()- 使用保存的属性fit()来更改数据
3) fit_transform()- 效用函数来fit()和然后transform()相同的数据。
通常你会调用fit_transform()训练数据,并且只调用transform()测试数据。
| 归档时间: |
|
| 查看次数: |
7368 次 |
| 最近记录: |