题解 | 损失函数
损失函数
https://www.nowcoder.com/practice/418d79c914b24329a9ce2763a33f3bf0
import numpy as np
def calculate_loss(real_values, predicted_values, delta):
mse = np.mean((real_values - predicted_values) ** 2)
mae = np.mean(np.abs(real_values - predicted_values))
huber_loss = np.where(np.abs(real_values - predicted_values) <= delta, mse, mae)
cosine_loss = 1 - np.dot(real_values, predicted_values) / (
np.linalg.norm(real_values) * np.linalg.norm(predicted_values)
)
return (
round(mse, 6),
round(mae, 6),
round(np.mean(huber_loss), 6),
round(cosine_loss, 6),
)
# 从标准输入读取数据
n = int(input())
real_values = []
predicted_values = []
for _ in range(n):
real, predicted = map(float, input().split())
real_values.append(real)
predicted_values.append(predicted)
delta = float(input()) # 读取阈值
# 调用计算损失函数的函数
results = calculate_loss(np.array(real_values), np.array(predicted_values), delta)
# 输出结果
for value in results:
print(f"{value:.6f}")

