如何修复Python中statsmodels的Holt和Holt Winters函数中的“TypeError”
我使用这样的数据如何修复Python中statsmodels的Holt和Holt Winters函数中的“TypeError”,python,statsmodels,holtwinters,Python,Statsmodels,Holtwinters,我使用这样的数据 data = [253993,275396.2,315229.5,356949.6,400158.2,442431.7,495102.9,570164.8,\ 640993.1,704250.4,767455.4,781807.8,776332.3,794161.7,834177.7,931651.5,\ 1028390,1114914] 然后,我导入statsmodels并使用Holt的方法 将matplotlib.pyplot作为plt导入 从statsmodels.ts
data = [253993,275396.2,315229.5,356949.6,400158.2,442431.7,495102.9,570164.8,\
640993.1,704250.4,767455.4,781807.8,776332.3,794161.7,834177.7,931651.5,\
1028390,1114914]
然后,我导入statsmodels并使用Holt的方法
将matplotlib.pyplot作为plt导入
从statsmodels.tsa.Holt导入指数平滑、SimpleExpSmoothing、Holt
霍尔特法
fit1=Holtdata。fitsmoothing_level=0.8,smoothing_slope=0.2,optimized=False
l1,=plt.plotlistfit1.fittedvalues+listfit1.forecast5,标记='o'
fit2=Holtdata,指数=真。fitsmoothing_level=0.8,smoothing_slope=0.2,optimized=假
l2,=plt.plotlistfit2.fittedvalues+listfit2.forecast5,marker='o'
fit3=孔数据,阻尼=真。fit3=平滑水平=0.8,平滑斜率=0.2
l3,=plt.plotlistfit3.fittedvalues+listfit3.forecast5,marker='o'
l4,=plt.plotdata,标记='o'
plt.legendhandles=[l1,l2,l3,l4],labels=[Holt的线性趋势,指数趋势,加性阻尼趋势,'data',loc='best',prop={'size':7}
节目
fit2中引发了异常
--------------------------------------
TypeError回溯最近一次呼叫last
在里面
3 l1,=plt.plotlistfit1.fittedvalues+listfit1.forecast5,标记='o'
4.
-->5 fit2=Holtdata,指数=真
6 fit2.fitsmoothing_level=0.8,smoothing_slope=0.2,optimized=False
7 l2,=plt.plotlistfit2.fittedvalues+listfit2.forecast5,marker='o'
g:\competition\venv\lib\site packages\statsmodels\tsa\holtwiners.py in\uuuuu init\uuuu self,endog,指数,阻尼
851定义初始自我,结束,指数=假,阻尼=假:
852趋势='mul'如果指数,则为'add'
->853超高压,自启动,趋势=趋势,阻尼=阻尼
854
855 def fitself,平滑度=无,平滑度=无,阻尼度=无,优化度=真:
g:\competition\venv\lib\site packages\statsmodels\tsa\holtwiners.py in\uuuuuu init\uuuu self、endog、趋势、潮湿、季节、季节、时段、日期、频率、缺失
389 self.trending=趋势在['mul','add']
390自调味料=季节性['mul','add']
->391如果self.trend=='mul'或self.self.sequential=='mul'和endog我对这个库不是很有经验,但它似乎想要一个系列而不是数据列表。引入pandas.pd并将数据转换为pd.系列:
import matplotlib.pyplot as plt
from statsmodels.tsa.holtwinters import ExponentialSmoothing, SimpleExpSmoothing, Holt
import pandas as pd
data = [253993,275396.2,315229.5,356949.6,400158.2,442431.7,495102.9,570164.8,\
640993.1,704250.4,767455.4,781807.8,776332.3,794161.7,834177.7,931651.5,\
1028390,1114914]
series = pd.Series(data)
# Holt's Method
fit1 = Holt(series).fit(smoothing_level=0.8, smoothing_slope=0.2, optimized=False)
l1, = plt.plot(list(fit1.fittedvalues) + list(fit1.forecast(5)), marker='o')
fit2 = Holt(series, exponential=True).fit(smoothing_level=0.8, smoothing_slope=0.2, optimized=False)
l2, = plt.plot(list(fit2.fittedvalues) + list(fit2.forecast(5)), marker='o')
fit3 = Holt(series, damped=True).fit(smoothing_level=0.8, smoothing_slope=0.2)
l3, = plt.plot(list(fit3.fittedvalues) + list(fit3.forecast(5)), marker='o')
l4, = plt.plot(series, marker='o')
plt.legend(handles = [l1, l2, l3, l4], labels = ["Holt's linear trend", "Exponential trend", "Additive damped trend", 'data'], loc = 'best', prop={'size': 7})
plt.show()
你是想接受答案还是什么,这样我就可以得到分数了?对不起,我刚刚看到了。谢谢。