# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd
from sklearn.metrics import r2_score
import xlrd
# 指定 Excel 文件路径
excel_file_path = 'D:\era\##.xls'
# 读取 Excel 文件
df = pd.read_excel(excel_file_path)
# 选择列作为一个向量
vector1 = df.iloc[:, 1].tolist()
vector2 = df.iloc[:, 9].tolist()
# 随机森林,多元线性回归,LSTM 579
# vector3 = df.iloc[:, 8].tolist()
# 转换为 NumPy 数组
actual_values = np.array(vector1)
predicted_values = np.array(vector2)
absolute_errors = np.abs(actual_values - predicted_values)
# 计算平均绝对误差 (MAE)
mae = np.mean(absolute_errors)
print("平均绝对误差 (MAE):", mae)
# 计算相对误差
relative_errors = np.abs((actual_values - predicted_values) / actual_values)
# 计算 MRE
mre = np.mean(relative_errors) * 100
# 计算R^2
r_squared = r2_score(vector1, vector2)
# 打印R^2
print("R^2:", r_squared)
# 打印向量
print("气象站1:", vector1)
print("RF:", vector2)
# print("多元线性:", vector3)
def calculate_rmse(vector1, vector2):
if len(vector1) != len(vector2):
raise ValueError("Vectors must have the same length")
n = len(vector1)
rmse = np.sqrt(np.sum((np.array(vector1) - np.array(vector2))**2) / n)
return rmse
# 示例
rmse_value = calculate_rmse(vector1, vector2)
print("RMSE:", rmse_value)
print("R^2:", r_squared)
# 打印MRE
print("MRE:", mre)
print("平均绝对误差 (MAE):", mae)
只需要将文件路径改为自己的路径,数据放入表格中的列就可以了