from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)我所知道的是fit()方法计算特征的均值和标准差,然后transform()方法使用它们将特征转换为新的缩放特征。fit_transform()只不过是在一行中调用fit() & transform()方法。
但是为什么我们只调用fit()来训练数据而不是测试数据呢?
这是否意味着我们正在使用训练数据的均值和标准差来转换测试数据?
发布于 2022-06-16 04:43:16
fit计算用于以后缩放的平均值和stdev,注意这只是一个没有缩放的计算。
transform使用以前计算的平均值和stdev来扩展数据(从所有值中减去平均值,然后除以stdev)。
fit_transform同时做这两件事。所以你只需一行代码就可以完成它。
对于X_train数据集,我们使用fit_transform,因为我们需要计算平均值和stdev,然后使用它来缩放X_train数据集。对于X_test数据集,由于我们已经有了平均值和stdev,所以我们只执行转换部分。
编辑:X_test数据应该是完全看不见的和未知的(也就是说,没有从它们中提取信息),所以我们只能从X_train获得信息。我们将派生平均值和stdev (从X_train)用于转换X_test的原因也是为了对y_test和y_pred进行同样的“苹果对苹果”的比较。
顺便说一句,如果列车/测试数据在没有偏差的情况下被正确分割,而且数据足够大,那么这两个数据集与总体平均值和stdev的近似是相同的。
https://stackoverflow.com/questions/72640476
复制相似问题