如何在Python中实现加权均方误差
在这篇文章中,我们讨论了用python实现加权均方误差的问题。
平均平方误差是一个重要的统计学概念,如今被广泛用于机器学习和深度学习算法中。平均平方误差基本上是对估计值和实际值之间的平均平方差的一种测量。它也被称为平均平方差,在大多数情况下用于校准预测输出的准确性。在这篇文章中,让我们讨论各种均方误差,称为加权均方误差。
加权均方误差能够为一组特定的点(兴趣点)提供更多的重要性或额外的权重,当与其他点相比。在处理不平衡的数据时,加权均方误差可以成为一个重要的性能指标。Python提供了各种各样的包来一次性实现均方和加权均方,这里我们可以利用简单的函数来实现加权均方误差。
计算加权均方误差的公式
加权均方误差的实现
- 为了演示的目的,让我们创建一个样本数据框架,如图所示,有增强的实际值和预测值。
- 计算实际值和预测值之间的平方差。
- 根据重要性定义每个数据点的权重
- 现在,使用这些权重来计算加权均方误差,如图所示
代码实现:
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)
输出:
加权均方误差
让我们用scikit-learn包的结果进行交叉验证。 来验证正确性。
代码:
# 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
输出:
验证结果