📜  如何在Python中实现加权均方误差?

📅  最后修改于: 2022-05-13 01:55:41.311000             🧑  作者: Mango

如何在Python中实现加权均方误差?

在本文中,我们讨论了使用Python实现加权均方误差。

均方误差是一个重要的统计概念,如今广泛用于机器学习和深度学习算法。均方误差基本上是估计值与实际值之间的均方差的度量。它也称为均方偏差,大部分时间用于校准预测输出的准确性。在本文中,让我们讨论称为加权均方误差的各种均方误差。

与其他点相比,加权均方误差能够为特定的一组点(兴趣点)提供更多的重要性或额外的权重。在处理不平衡数据时,加权均方误差可能是一个重要的性能指标。 Python提供了各种各样的包来一次性实现均方和加权均方,这里我们可以利用简单的函数来实现加权均方误差。

计算加权均方误差的公式:

加权均方误差的实现

  • 出于演示目的,让我们创建一个示例数据框,其中包含增强的实际值和预测值,如图所示。
  • 计算实际值和预测值之间的平方差。
  • 根据重要性定义每个数据点的权重
  • 现在,使用权重计算加权均方误差,如图所示

代码实现:

Python3
import pandas as pd
import numpy as np
import random
  
# create a dataset with actual and
# predicted values
d = {'Actual': np.arange(0, 20, 2)*np.sin(2),
     'Predicted': np.arange(0, 20, 2)*np.cos(2)}
  
# convert the data to pandas dataframe
data = pd.DataFrame(data=d)
  
# create a weights array based on 
# the importance
y_weights = np.arange(2, 4, 0.2)
  
# calculate the squared difference
diff = (data['Actual']-data['Predicted'])**2
  
# compute the weighted mean square error
weighted_mean_sq_error = np.sum(diff * y_weights) / np.sum(y_weights)


Python3
# compare the results with sklearn package
weighted_mean_sq_error_sklearn = np.average(
    (data['Actual']-data['Predicted'])**2, axis=0, weights=y_weights)
  
weighted_mean_sq_error_sklearn


输出:

加权均方误差

让我们将结果与 scikit-learn 包的结果进行交叉验证。验证正确性,

代码:

Python3

# compare the results with sklearn package
weighted_mean_sq_error_sklearn = np.average(
    (data['Actual']-data['Predicted'])**2, axis=0, weights=y_weights)
  
weighted_mean_sq_error_sklearn

输出:

验证结果