Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何对timeseries测试数据进行预处理以进行分类预测?_Python_Machine Learning_Scikit Learn_Time Series - Fatal编程技术网

Python 如何对timeseries测试数据进行预处理以进行分类预测?

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) 但是,如果新的价值观与培训价值观略有不同呢 考虑到这一点,我认

在使用timeseries数据集训练分类器模型时,如果使用整个训练数据集的最小值/最大值进行规格化/缩放,则也会考虑未来的值,而在实际场景中,您不会获得这些信息,对吗?好的,那么您应该仅使用培训数据构建scaler:

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个输入值。

好的,因此我将每周建立一个新模型,以减少训练数据和测试数据之间的差异。