Python计算拟合优度R^2值及3D可视化
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
def __sst(y_no_fitting):
'''
计算SST(total sum of squares) 总平方和
:param y_no_predicted: List[int] or array[int] 待拟合的y
:return: 总平方和SST
'''
y_mean = sum(y_no_fitting) / len(y_no_fitting)
s_list =[(y - y_mean)**2 for y in y_no_fitting]
sst = sum(s_list)
return sst
def __ssr(y_fitting, y_no_fitting):
'''
计算SSR(regression sum of squares) 回归平方和
:param y_fitting: List[int] or array[int] 拟合好的y值
:param y_no_fitting: List[int] or array[int] 待拟合y值
:return: 回归平方和SSR
'''
y_mean = sum(y_no_fitting) / len(y_no_fitting)
s_list =[(y - y_mean)**2 for y in y_fitting]
ssr = sum(s_list)
return ssr
def __sse(y_fitting, y_no_fitting):
'''
计算SSE(error sum of squares) 残差平方和
:param y_fitting: List[int] or array[int] 拟合好的y值
:param y_no_fitting: List[int] or array[int] 待拟合y值
:return: 残差平方和SSE
'''
s_list = [(y_fitting[i] - y_no_fitting[i])**2 for i in range(len(y_fitting))]
sse = sum(s_list)
return sse
def goodness_of_fit(y_fitting, y_no_fitting):
'''
计算拟合优度R^2
:param y_fitting: List[int] or array[int] 拟合好的y值
:param y_no_fitting: List[int] or array[int] 待拟合y值
:return: 拟合优度R^2
'''
SSR = __ssr(y_fitting, y_no_fitting)
SST = __sst(y_no_fitting)
rr = SSR /SST
return rr
# 此处应插入你的数据和模型拟合代码,例如:
# y2 = ... # 拟合后的y值
# myz = ... # 原始的y值
# ...
# 计算并打印R^2
print(goodness_of_fit(y2, myz))
# 以下代码用于3D可视化,你需要根据你的数据和模型修改
# ...
# 读取待预测数据
pre = pd.read_excel('待测.xlsx', header=None)
pre = pre.values
# 预测结果
pre_results = np.zeros([8])
for i in range(8):
x = pre[i, 0]
y = pre[i, 1]
pre_results[i] = p00 * x + p10 * y + p01
# ...
# 保存预测结果
np.savetxt('厚度预测结果.csv', pre_results, delimiter=',')
原文地址: https://www.cveoy.top/t/topic/fNn2 著作权归作者所有。请勿转载和采集!