python做线性拟合
时间: 2023-10-03 15:01:48 浏览: 91
使用Python进行线性拟合通常需要使用NumPy和SciPy库中的一些函数。
首先,我们需要导入这些库:
```python
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
```
然后,我们可以创建一个数据集,使用NumPy的`linspace`函数生成一些随机的x值和对应的y值:
```python
x = np.linspace(0, 10, 50)
y = 2 * x + 1 + np.random.randn(50)
```
这里的y值是2x+1再加上一些随机噪声。
我们可以使用`stats.linregress`函数来计算斜率、截距、相关系数、p值和标准误差:
```python
slope, intercept, r_value, p_value, std_err = stats.linregress(x, y)
```
然后,我们可以使用这些值来绘制数据和线性拟合直线:
```python
plt.plot(x, y, 'o', label='original data')
plt.plot(x, intercept + slope*x, 'r', label='fitted line')
plt.legend()
plt.show()
```
这里的`'o'`表示使用圆点标记绘制原始数据,`'r'`表示使用红色直线绘制拟合直线。
完整代码如下:
```python
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
# 生成数据
x = np.linspace(0, 10, 50)
y = 2 * x + 1 + np.random.randn(50)
# 计算线性拟合
slope, intercept, r_value, p_value, std_err = stats.linregress(x, y)
# 绘图
plt.plot(x, y, 'o', label='original data')
plt.plot(x, intercept + slope*x, 'r', label='fitted line')
plt.legend()
plt.show()
```
运行后,会得到一张带有拟合直线的散点图。
阅读全文