如果最小-最大归一化只是一种重新缩放,那么为什么重新缩放后的均值不为零?

我进行了最小-最大归一化处理后,样本值的范围在[-1,1]之间。由于这种归一化只是一种重新缩放,那么为什么新数据的均值不为零?我的代码有问题,还是我的解释有问题?

data  np.array([-3, 1,2])print("data mean:" , data.mean())#进行最小-最大归一化:old_range = np.amax(data) - np.amin(data)new_range = 2 new_min = -1    data_norm = ((data - np.amin(data)) / old_range)*new_range + new_minprint("data_norm:", data_norm)print("mean after normalization: ", data_norm.mean())#结果:#data mean:  0.0#mean after normalization:  0.60000001

回答:

一般来说,如果x是一个随机变量,且y = bx+c,那么(参考

mean(y) = mean(x)*b + cstd(y) = std(x)*bvariance(y) = variance(x)*b**2

enter image description here

x = np.array([-3, 1,2])new_min = -1new_max = 1new_range = new_max - new_minnew_x = ((x-np.min(x))/(np.max(x)-np.min(x)))*new_range + new_minprint ("Mean: {0:.3}, std: {1:.3}, Var: {2:.3}".format(np.mean(new_x), np.std(new_x), np.var(new_x)))alpha = new_range/(np.max(x)-np.min(x))beta = np.min(x)*alpha - new_minnew_mean = np.mean(x)*alpha - betanew_std = np.std(x)*alphanew_var = np.var(x)*alpha*alphaprint ("Mean: {0:.3}, std: {1:.3}, Var: {2:.3}".format(new_mean,new_std,new_var))

输出:

Mean: 0.2, std: 0.864, Var: 0.747Mean: 0.2, std: 0.864, Var: 0.747

因此,y的均值取决于x的均值以及上述方程中的alpha和beta。

我想补充说明为什么数据标准化会产生均值为零的数据。enter image description here

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中创建了一个多类分类项目。该项目可以对…

发表回复

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