Python批量计算Pearson相关系数和RMSE

it2024-03-11  62

源数据在结尾处:

import math import numpy as np import xlrd import scipy.stats as stats from sklearn.metrics import mean_squared_error # 用于评估模型 from sklearn.metrics import r2_score workbook = xlrd.open_workbook('F:\\2020TreeClassification\\GFS2Analyze\\20201215R2RMSE.xlsx', 'r') sheet1 = workbook.sheet_by_index(0) for i in range(6): if i<=2: a = sheet1.col_values(i+3)[2:] #计算第二行以后的数据 b = sheet1.col_values(i+9)[2:] GF_RMSE = math.sqrt(mean_squared_error(a, b)) print('The GF_B' + str(i+1) + ' rmse is', GF_RMSE) Per = stats.pearsonr(a, b) print('The GF_B' + str(i + 1) + 'persson is', Per) elif i==3: a = sheet1.col_values(i + 3)[2:] b = sheet1.col_values(i + 10)[2:] GF_RMSE = math.sqrt(mean_squared_error(a, b)) print('The GF_B' + str(i + 1) + ' rmse is', GF_RMSE) Per = stats.pearsonr(a, b) print('The GF_B' + str(i + 1) + 'persson is', Per) elif i==4: a = sheet1.col_values(i + 3)[2:] b = sheet1.col_values(i + 8)[2:] GF_RMSE = math.sqrt(mean_squared_error(a, b)) print('The GF_B' + str(i + 1) + ' rmse is', GF_RMSE) Per = stats.pearsonr(a, b) print('The GF_B' + str(i + 1) + 'persson is', Per) else: a = sheet1.col_values(i + 3)[2:] b = sheet1.col_values(i + 10)[2:] GF_RMSE = math.sqrt(mean_squared_error(a, b)) print('The GF_B' + str(i + 1) + ' rmse is', GF_RMSE) Per = stats.pearsonr(a, b) print('The GF_B' + str(i + 1) + 'persson is', Per) print(u'结束!')

输出结果: Pearson系数为一个元组,包括两个值,第一个值为相关系数,值越接近1,表明两组数据拟合结果越好;第二个值为显著性,值越小,表明显著性越强

源数据为:

最新回复(0)