Bp神经网络工具箱预测值反归一化

我想用bp神经网络工具箱做预测,我提前在stata里面标准化处理了,然后预测出来的数据是标准化后的数据,我想给他反标准化处理推出原值,不知道有没有老。师可以教教我😭最好用Matlab代码或者stata代码

该回答通过自己思路及引用到各个渠道搜索综合及思考,得到内容具体如下:
可以使用Matlab或Stata来进行反标准化处理,下面分别给出相应的代码示例。
假设你的数据已经被标准化处理,并且存储在一个向量中。设原始数据的均值为mu,标准差为sigma。Matlab代码示例:

% 假设原始数据存储在一个向量x中
x = [1.2, 3.4, 5.6, 7.8];

% 原始数据的均值和标准差
mu = 4.5;
sigma = 2.3;

% 反标准化处理
x_orig = x * sigma + mu;
Stata代码示例:

// 假设原始数据存储在一个向量x中
local x 1.2 3.4 5.6 7.8

// 原始数据的均值和标准差
local mu 4.5
local sigma 2.3

// 反标准化处理
foreach i of local x {
    local x_orig `x_orig' `i' * `sigma' + `mu'
}
display "`x_orig'"

以上代码示例中,将标准化后的数据乘以标准差sigma并加上均值mu,即可得到反标准化处理后的原始数据。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

该回答引用ChatGPT
可以通过以下步骤反归一化处理预测值:

1. 记录下原始数据的均值和标准差,便于还原数据。假设原始数据为 $X$,标准化后的数据为 $Z$,则均值为 $\mu_X$,标准差为 $\sigma_X$。

2. 进行预测得到标准化后的预测值 $Z_{pred}$。

3. 通过以下公式,将标准化后的预测值还原成原始值 $X_{pred}$:

$$ X_{pred} = Z_{pred} \times \sigma_X + \mu_X $$

下面给出一个 Python 示例代码,假设 $X$ 是一个 $n \times m$ 的数组,其中 $n$ 表示样本数量,$m$ 表示特征数量,$Z_{pred}$ 是一个 $n \times 1$ 的预测结果数组。代码如下:

python
import numpy as np

# X是原始数据,Z是标准化后的数据
mu = np.mean(X, axis=0)
sigma = np.std(X, axis=0)

# 进行预测得到标准化后的预测值
Z_pred = model.predict(Z)

# 将预测值还原成原始值
X_pred = Z_pred * sigma + mu


其中 `model` 是训练好的 BP 神经网络模型,可以使用 `model.predict` 方法得到预测结果。

您可以考虑使用以下的 MATLAB 代码来反标准化处理:

假设您的原始数据为 x,标准化后的数据为 x_std。假设您在进行标准化时使用的均值和标准差分别为 mu 和 sigma。

反标准化处理的公式为:

x = (x_std * sigma) + mu

因此,您可以按照以下步骤来实现反标准化处理:

% 假设您已经将标准化后的数据存储在 x_std 变量中,
% 并且已经计算了原始数据的均值(mu)和标准差(sigma)。
% 下面是反标准化代码

x = (x_std * sigma) + mu;

如果您想使用 Stata,也可以按照以下步骤进行反标准化处理:

* 假设您已经将标准化后的数据存储在 x_std 变量中,
* 并且已经计算了原始数据的均值(mu)和标准差(sigma)。
* 下面是反标准化代码

generate x = x_std * sigma + mu

请确保对两种方法中使用的变量名和公式进行适当修改以适应您自己的情况。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^