用python手动编写均方误差,均方根误差,平均绝对误差,R方各自函数的代码.编写函数用数学公式编写,并标注每行代码的意思
时间: 2024-09-18 18:14:03 浏览: 74
当然可以,以下是Python代码示例,分别展示了如何手动计算均方误差(Mean Squared Error, MSE)、均方根误差(Root Mean Square Error, RMSE),平均绝对误差(Mean Absolute Error, MAE)以及R方(R-squared):
```python
import math
# 定义数据点列表
data_points = [1, 2, 3, 4, 5]
# 计算预测值和真实值之间的差
def calculate_errors(predicted_values, actual_values):
errors = predicted_values - actual_values
return errors
# 计算MSE
def mean_squared_error(predicted, actual):
squared_errors = [e**2 for e in calculate_errors(predicted, actual)]
mse = sum(squared_errors) / len(squared_errors)
return mse
# 计算RMSE
def root_mean_square_error(mse):
rmse = math.sqrt(mse)
return rmse
# 计算MAE
def mean_absolute_error(predicted, actual):
absolute_errors = [abs(e) for e in calculate_errors(predicted, actual)]
mae = sum(absolute_errors) / len(absolute_errors)
return mae
# 假设我们有一个简单的线性模型预测值
predicted_values = [i + 0.1 * i for i in range(len(data_points))]
# 计算R方,需要先计算总平方和、回归平方和和残差平方和
def r_squared(y_true, y_pred):
n = len(y_true)
ss_tot = sum((y_true - sum(y_true) / n)**2)
ss_res = sum((y_true - y_pred)**2)
r_squared = 1 - (ss_res / ss_tot)
return r_squared, ss_tot, ss_res
# 调用函数并打印结果
mse_value = mean_squared_error(predicted_values, data_points)
rmse_value = root_mean_square_error(mse_value)
mae_value = mean_absolute_error(predicted_values, data_points)
r_squared_value, ss_tot, ss_res = r_squared(data_points, predicted_values)
print(f"Mean Squared Error (MSE): {mse_value}")
print(f"Root Mean Square Error (RMSE): {rmse_value}")
print(f"Mean Absolute Error (MAE): {mae_value}")
print(f"R^2: {r_squared_value}")
```
每一行代码的意思是:
1. 引入了必要的数学模块。
2. 定义了数据点列表。
3. 函数`calculate_errors`用于计算预测值与实际值的差。
4-6. 分别定义了MSE、RMSE和MAE的计算函数,通过差值的平方或绝对值求和然后除以数据点数量得到结果。
7. 创建了一个简单的线性模型预测值。
8. 定义R方的计算函数,包括总平方和、回归平方和和残差平方和。
9. 调用所有函数并打印结果。
阅读全文