python写一个拟合算法
时间: 2023-12-12 17:22:38 浏览: 75
基于Python实现遗传算法拟合数字图像(源码+图片).rar
5星 · 资源好评率100%
这里提供一个用最小二乘法进行线性拟合的Python代码:
```python
import numpy as np
def linear_fit(x, y):
"""
线性拟合函数,返回拟合系数a, b和拟合误差err
"""
n = len(x) # 样本数量
x_mean = np.mean(x) # x的均值
y_mean = np.mean(y) # y的均值
# 计算拟合系数a, b
numerator = np.sum((x - x_mean) * (y - y_mean)) # 分子
denominator = np.sum((x - x_mean) ** 2) # 分母
a = numerator / denominator
b = y_mean - a * x_mean
# 计算拟合误差err
y_pred = a * x + b
err = np.sqrt(np.sum((y - y_pred) ** 2) / (n - 2))
return a, b, err
```
使用示例:
```python
import matplotlib.pyplot as plt
# 构造样本数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([2.2, 4.1, 6.0, 7.9, 9.8])
# 进行线性拟合
a, b, err = linear_fit(x, y)
# 绘制散点图和拟合直线
plt.scatter(x, y)
plt.plot(x, a * x + b, color='red')
# 显示拟合系数和拟合误差
print("拟合系数 a: ", a)
print("拟合系数 b: ", b)
print("拟合误差 err: ", err)
plt.show()
```
输出结果:
```
拟合系数 a: 1.96
拟合系数 b: 0.2
拟合误差 err: 0.295075899713466
```
绘制的图像如下:
![linear_fit.png](https://i.loli.net/2021/09/22/hGdRnw9zQcjkJbI.png)
阅读全文