Python最小二乘法拟合直线、二次曲线和三次曲线模型

本文将使用Python代码演示如何使用最小二乘法拟合直线、二次曲线和三次曲线模型。代码包含模型表达式输出和RMSE计算。

直线模型的最小二乘法

import numpy as np

# 输入数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([2.5, 3.7, 4.8, 6.2, 7.5])

# 求解最小二乘法
n = len(x)
sum_x = np.sum(x)
sum_y = np.sum(y)
sum_xy = np.sum(x * y)
sum_x2 = np.sum(x ** 2)

a = (n * sum_xy - sum_x * sum_y) / (n * sum_x2 - sum_x ** 2)
b = (sum_y - a * sum_x) / n

# 输出模型表达式
print(f'y = {a}x + {b}')

# 计算RMSE
y_pred = a * x + b
rmse = np.sqrt(np.mean((y - y_pred) ** 2))
print(f'RMSE: {rmse}')

二次曲线模型的最小二乘法

import numpy as np
from scipy.optimize import curve_fit

# 输入数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([2.5, 3.7, 4.8, 6.2, 7.5])

# 定义模型函数
def quadratic(x, a, b, c):
    return a * x ** 2 + b * x + c

# 求解最小二乘法
popt, pcov = curve_fit(quadratic, x, y)

# 输出模型表达式
a, b, c = popt
print(f'y = {a}x^2 + {b}x + {c}')

# 计算RMSE
y_pred = quadratic(x, a, b, c)
rmse = np.sqrt(np.mean((y - y_pred) ** 2))
print(f'RMSE: {rmse}')

三次曲线模型的最小二乘法

import numpy as np
from scipy.optimize import curve_fit

# 输入数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([2.5, 3.7, 4.8, 6.2, 7.5])

# 定义模型函数
def cubic(x, a, b, c, d):
    return a * x ** 3 + b * x ** 2 + c * x + d

# 求解最小二乘法
popt, pcov = curve_fit(cubic, x, y)

# 输出模型表达式
a, b, c, d = popt
print(f'y = {a}x^3 + {b}x^2 + {c}x + {d}')

# 计算RMSE
y_pred = cubic(x, a, b, c, d)
rmse = np.sqrt(np.mean((y - y_pred) ** 2))
print(f'RMSE: {rmse}')
Python最小二乘法拟合直线、二次曲线和三次曲线模型

原文地址: https://www.cveoy.top/t/topic/nad9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录