我试图使用深度学习模型来预测时间序列,在将数据传递给模型之前,我想对不同的变量进行缩放,因为它们有很大的不同范围。
我通常是“动态地”这样做的:加载数据集的训练子集,从整个子集获取定标器,存储它,然后在我想要使用它进行测试时加载它。
现在的数据是相当大的,我不会一次加载所有的训练数据进行训练。
我怎么才能去拿定价器呢?一开始,我想做一个一次性的操作,加载所有的数据,只是为了计算定标器(通常我使用sklearn定标器,比如StandardScaler),然后在我的训练过程中加载它。
这是常见的做法吗?如果是,如果将数据添加到培训数据集,您将如何做?定标器能不能结合起来,避免一次性操作,只需“更新”定标器?
发布于 2018-10-04 09:53:19
StandardScaler in scikit-learn能够使用partial_fit()以增量方式(对于小块数据)计算数据的平均值和std:
partial_fit(X,y=None) X上均值和std的在线计算,以供以后的标度。所有X都是作为一批处理的。当fit由于非常多的n_samples或X是从一个连续的流中读取而不可行时,这将适用于这种情况。
您需要对数据进行两次传递:
partial_fit()来计算平均值和std),transform()它的飞行。示例示例:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
# First pass
# some_generator can be anything which reads the data in batches
for data in some_generator:
scaler.partial_fit(data)
# View the updated mean and std variance at each batch
print(scaler.mean_)
print(scaler.var_)
# Second pass
for data in some_generator:
scaled_data = scaler.transform(data)
# Do whatever you want with the scaled_datahttps://stackoverflow.com/questions/52642940
复制相似问题