Python 如何对timeseries测试数据进行预处理以进行分类预测?
在使用timeseries数据集训练分类器模型时,如果使用整个训练数据集的最小值/最大值进行规格化/缩放,则也会考虑未来的值,而在实际场景中,您不会获得这些信息,对吗?好的,那么您应该仅使用培训数据构建scaler:Python 如何对timeseries测试数据进行预处理以进行分类预测?,python,machine-learning,scikit-learn,time-series,Python,Machine Learning,Scikit Learn,Time Series,在使用timeseries数据集训练分类器模型时,如果使用整个训练数据集的最小值/最大值进行规格化/缩放,则也会考虑未来的值,而在实际场景中,您不会获得这些信息,对吗?好的,那么您应该仅使用培训数据构建scaler: scaler = StandardScaler().fit(X_train) X_train = scaler.transform(X_train) X_test = scaler.transform(X_test) 但是,如果新的价值观与培训价值观略有不同呢 考虑到这一点,我认
scaler = StandardScaler().fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
但是,如果新的价值观与培训价值观略有不同呢
考虑到这一点,我认为:
scaler = StandardScaler() # or MinMaxScaler()
scaler_train = scaler.fit(X_train)
X_train = scaler_train.transform(X_train)
scaler_full = scaler.fit(X) # X_train + X_test
X_test = scaler_full.transform(X_test)
或者,可能只是对列车和测试的平均值和标准值进行平均,以使测试输入正常化:
X_train_mean = np.mean(X_train)
X_train_std = np.std(X_train)
X_train_normalized = (X_train - X_train_mean) / X_train_std
X_test_mean = np.mean(y_test)
X_test_std = np.std(y_test)
new_mean = (X_train_mean + X_test_mean) / 2
new_std = (X_train_std + X_test_std) / 2
X_test_normalized = (X_test - new_mean) / new_std
那么,它与log1+x相同,因此将在-1上工作;∞? 或者呢
处理这种情况的最佳实践是什么?首先,您应该使用scikit学习。这可以确保,当您在培训数据上安装管道时,测试数据中不会出现任何错误 您的所有建议都支持数据泄漏,因此过度拟合 然而,我要强调的是,当你将训练数据缩放到-1和1之间时,这不一定适用于你的测试数据。然而,您的分类器/回归通常仍然能够解释这些输入。此外,您使用的是标准定标器,它只是将均值和单位方差转换为零。因此,任何足够大/足够小的值仍然是可能的,但不太可能 通常情况下,您预计只有少数点超出测试集的范围。否则,您没有代表性地或随着时间的推移采样一些基本的变化。然后你可以重新训练你的算法。但是,如果算法的泛化性能良好,这也无关紧要 也许你应该用一个
移位日志而不是普通日志通常仅用于允许0个输入值。好的,因此我将每周建立一个新模型,以减少训练数据和测试数据之间的差异。