mae与rmse公式 python
时间: 2023-10-16 08:07:15 浏览: 88
MAE和RMSE是用于衡量模型预测误差的指标,它们的公式如下:
MAE(平均绝对误差):
$$MAE = \frac{1}{n}\sum_{i=1}^n|y_i - \hat{y_i}|$$
RMSE(均方根误差):
$$RMSE = \sqrt{\frac{1}{n}\sum_{i=1}^n(y_i - \hat{y_i})^2}$$
其中,$n$表示样本数量,$y_i$表示真实值,$\hat{y_i}$表示预测值。
下面是Python的实现代码:
```python
import numpy as np
# 计算MAE
def mae(y_true, y_pred):
return np.mean(np.abs(y_true - y_pred))
# 计算RMSE
def rmse(y_true, y_pred):
return np.sqrt(np.mean(np.square(y_true - y_pred)))
```
其中,`y_true`和`y_pred`分别表示真实值和预测值。可以使用numpy库中的函数来计算平均值和平方等操作。
相关问题
psnr和ssim MAE RMSE计算公式
### PSNR、SSIM、MAE、RMSE 的计算公式
#### 峰值信噪比 (PSNR)
峰值信噪比是一种常用的图像质量评估指标,用于衡量重建图像的质量。其定义为:
\[ \text{PSNR} = 10 \cdot \log_{10}\left(\frac{\text{MAX}_I^2}{\text{MSE}}\right) \]
其中,
- \( \text{MAX}_I \) 是像素的最大可能强度值(对于8位灰度图像是255)
- \( \text{MSE} \) 表示均方误差。
该公式的推导基于信号处理理论中的信噪比概念[^4]。
```python
import numpy as np
def psnr(original_image, noisy_image):
mse_value = np.mean((original_image - noisy_image)**2)
max_pixel_value = 255.0
psnr_result = 20 * np.log10(max_pixel_value / np.sqrt(mse_value))
return psnr_result
```
#### 结构相似性指数 (SSIM)
结构相似性指数测量两个图像之间的感知差异,考虑亮度、对比度和结构三方面的变化。基本形式如下所示:
\[ \text{SSIM}(x,y)=\frac{(2\mu_x\mu_y+C_1)(2\sigma_{xy}+C_2)}{(\mu_x^2+\mu_y^2+C_1)(\sigma_x^2+\sigma_y^2+C_2)} \]
这里 \( C_1=(K_1L)^2,C_2=(K_2L)^2 \),\( L \) 是动态范围,\( K_1,K_2 << 1 \)[^2]。
```python
from skimage.metrics import structural_similarity as ssim
ssim_index, diff = ssim(imageA, imageB, full=True)
```
#### 平均绝对误差 (MAE)
平均绝对误差是指预测值与实际观测值之间差额的绝对值的平均数:
\[ \text{MAE}=\frac{1}{n}\sum^n_{i=1}|y_i-\hat y_i| \]
此表达式适用于任何类型的数值数据集,在图像领域则指代像素级偏差[^3]。
```python
def mae(img1, img2):
absolute_error_sum = np.sum(np.abs(img1.astype('float') - img2.astype('float')))
mean_absolute_error = absolute_error_sum / float(img1.shape[0] * img1.shape[1])
return mean_absolute_error
```
#### 均方根误差 (RMSE)
均方根误差是各数据偏离真实值之平方和的平均数再开平方的结果,即标准差的一种变形:
\[ \text{RMSE}= \sqrt{\frac{1}{N}\sum^{N}_{i=1}(Y_i-Y'_i)^2 } \]
它反映了估计量与被估计量间的离散程度。
```python
def rmse(predictions, targets):
differences = predictions - targets
differences_squared = differences ** 2
mean_of_differences_squared = differences_squared.mean()
rmse_val = np.sqrt(mean_of_differences_squared)
return rmse_val
```
mae, mse, rmse, r2
在Python中,MAE(Mean Absolute Error)、MSE(Mean Squared Error)、RMSE(Root Mean Squared Error)和R²(R-squared)都是评估模型预测性能的指标,通常用于回归分析。
1. **MAE (Mean Absolute Error)**:平均绝对误差,计算的是每个预测值与真实值之间的绝对差的平均值。它对异常值不敏感,因为没有平方项,所以较小的数据偏差不会被放大。
```python
from sklearn.metrics import mean_absolute_error
y_true = [1, 2, 3, 4]
y_pred = [1.5, 2.8, 2.9, 4.0]
mae = mean_absolute_error(y_true, y_pred)
```
2. **MSE (Mean Squared Error)**:均方误差,计算的是每个预测值与真实值之间差的平方的平均值。由于平方的存在,较大的偏差会被放大,因此MSE更侧重于惩罚大的错误。
```python
from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_true, y_pred)
```
3. **RMSE (Root Mean Squared Error)**:根均方误差,是MSE的平方根,它提供了MSE的一个直观尺度,单位与原始数据相同。计算公式是MSE的平方根,使得结果更容易理解。
```python
rmse = np.sqrt(mean_squared_error(y_true, y_pred))
```
4. **R² (R-squared or Coefficient of Determination)**:决定系数或R方,衡量了模型能够解释因变量变异性的比例。它的取值范围在0到1之间,越接近1表示模型拟合得越好;0则表示模型没有任何解释能力。
```python
from sklearn.metrics import r2_score
r2 = r2_score(y_true, y_pred)
```
这些指标在选择和比较模型时非常有用,可以帮助我们了解哪些模型更好地捕捉到了数据中的模式。使用哪个指标取决于具体的问题和偏好,比如对于稳健度要求较高的情况,可能更倾向于使用MAE,而对于追求高精度的情况,则可能关注RMSE和R²。
阅读全文