换一种写法
时间: 2023-08-08 19:04:24 浏览: 58
以下是另一种使用最小二乘法的线性模型的写法:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
# 读取数据
data = pd.read_csv('data.csv')
data['time'] = pd.to_datetime(data['time'], format='%Y-%m')
data['xiaoliang'] = data['xiaoliang'].astype(int)
data = data.set_index('time')
data = data.sort_index()
# 定义线性模型
def linear_model(x, a, b):
return a * x + b
# 使用最小二乘法拟合线性模型
popt, pcov = curve_fit(linear_model, np.arange(len(data)), data['xiaoliang'])
# 计算拟合结果
forecast = linear_model(np.arange(len(data), len(data) + 12), *popt)
# 绘制拟合图像
idx = pd.date_range(start=data.index[-1], periods=12, freq='M')
forecast = pd.Series(forecast, index=idx)
plt.figure(figsize=(9.62,8.62))
plt.plot(data, label='Original Data')
plt.plot(forecast, label='Forecasted Data')
plt.xlabel('日期', fontproperties=font, fontsize=16)
plt.ylabel('销量', fontproperties=font, fontsize=16)
plt.title('销量变化', fontproperties=font, fontsize=16)
plt.xticks(fontproperties=font, fontsize=14)
plt.yticks(fontproperties=font, fontsize=14)
plt.savefig('extract.png', dpi=300)
```
这里使用了`curve_fit`函数进行最小二乘法拟合,其中`linear_model`函数定义了线性模型,`popt`存储了最佳拟合参数,`pcov`存储了拟合参数的协方差矩阵。拟合结果可以直接使用线性模型计算得到,然后绘制拟合图像即可。这种写法和前面的写法基本相同,只是使用了不同的函数库。