深度学爬坑记录 -- 在划分数据集之前还是之后标准化数据

深度学爬坑记录 – 在划分数据集之前还是之后标准化数据

提出一个问题:

  • 如果我想把我的数据划分成训练、验证集和测试集,我应该在划分之前或之后对数据进行归一化吗?在建立预测模型时有什么不同吗?

回答:

为什么要进行归一化?因为它解决了梯度爆炸和各种特性之间的比例差异等问题

这取决于你的数据是否有标签,或者说是否存在多个观测数据

  • 如果有标签,先划分数据集!

  • 如果没有标签,只有一种数据,无关紧要。

对于我的数据是存在标签的,所以

  • 应该先划分数据集!!

原因:

  • 首先,要明白:测试集我们是将其表示为现实师世界的真值。

对于数据变量的特征标准化(或数据标准化)是一种通过减去均值除以方差来使数据标准化的技术。

如果你在划分数据集之前进行归一化或者标准化,那么:

你将把未来的信息引入训练解释变量(即均值和方差)。!

换句话说,你在进行预测的时候可是不知道预测结果的均值和方差的。

因此,您应该先对训练集进行标准化,然后使用训练集的均值和方差应用到验证集合测试集。通过这种方式,我们可以测试和评估我们的模型是否能够很好地推广到新的、看不见的数据点。

下面给出一个具体的示例,使用最大最小标准化的方式:

from sklearn.preprocessing import MinMaxScaler, StandardScaler
scaler = MinMaxScaler()
scaler_X = MinMaxScaler()
scaler_Y = MinMaxScaler()
# fit_transform for training data:
X_train = scaler_X.fit_transform(x_train)
y_train = scaler_Y.fit_transform(y_train)
# only transform for test (unseen) data:
X_test = scaler_X.transform(x_test)
y_test = scaler_Y.transform(y_test)

反归一化:

preds = scaler_Y.inverse_transform(pred_data)

参考
https://stackoverflow.com/questions/49444262/normalize-data-before-or-after-split-of-training-and-testing-data
https://towardsdatascience.com/feature-scaling-and-normalisation-in-a-nutshell-5319af86f89b
https://stackoverflow.com/questions/66952880/how-can-i-unnormalize-minmaxscaler
https://datascience.stackexchange.com/questions/27615/should-we-apply-normalization-to-test-data-as-well

你可能感兴趣的:(深度学习,机器学习,机器学习,算法,python)