在打乱和分割数据后,是否应该分别对训练集和测试集进行归一化?

我想将我的数据归一化到[0,1]范围内。在打乱和分割数据后我应该归一化数据吗?我应该对测试集重复相同的步骤吗?我看到了一段使用这种归一化方法的Python代码。这是否是将数据归一化到[0,1]范围的正确方法?

`X_train = np.array([[ 1., -1.,  2.], [ 2.,  0.,  0.],[ 0.,  1., -1.]])a= X_trainfor i in range(3):    old_range = np.amax(a[:,i]) - np.amin(a[:,i])    new_range = 1 - 0    f = ((a[:,i] - np.amin(a[:,i])) / old_range)*new_range + 0    lis.append(f)b = np.transpose(np.array(lis))print(b)`

这是我归一化后的结果。

`[[0.5, 0., 1.][1., 0.5, 0.33333333][0., 1., 0.]]`

回答:

在打乱和分割数据后我应该归一化数据吗?

是的。否则,你会泄露未来信息(即这里的测试集)。更多信息请查看这里;虽然这是关于标准化而不是归一化(且使用的是R语言而非Python),但其中的论点同样适用。

我应该对测试集重复相同的步骤吗?

是的。使用已经拟合到训练集上的缩放器。在这种情况下,意味着使用训练集的最大值和最小值来缩放测试集。这确保了与训练数据上的变换保持一致,并且可以评估模型是否能很好地泛化。

你不需要从头开始编写代码。使用sklearn即可:

注意:对于大多数应用,标准化是推荐的缩放方法preprocessing.StandardScaler()

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注