为了账号安全,请及时绑定邮箱和手机立即绑定

将非线性单变量回归拟合到Python中的时间序列数据

将非线性单变量回归拟合到Python中的时间序列数据

PIPIONE 2021-04-02 18:15:42
我最近开始使用python进行机器学习。以下是我作为示例获取的数据集,以及到目前为止一直在研究的代码。选择[2000 .... 2015]作为测试数据和训练数据[2016,2017]。Dataset        Years        Values    0    2000      23.0    1    2001      27.5    2    2002      46.0    3    2003      56.0    4    2004      64.8    5    2005      71.2    6    2006      80.2    7    2007      98.0    8    2008     113.0    9    2009     155.8    10   2010     414.0    11   2011    2297.8    12   2012    3628.4    13   2013   16187.8    14   2014   25197.8    15   2015   42987.8    16   2016   77555.5    17   2017  130631.9import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom sklearn.model_selection import train_test_splitfrom sklearn.ensemble import RandomForestClassifierdf = pd.DataFrame([[i for i in range(2000,2018)], [23.0,27.5,46.0,56.0,64.8,71.2,80.2,98.0,113.0,155.8,414.0,2297.8,3628.4,16187.8,25197.8,42987.8,77555.5,130631.9]])df = df.Tdf.columns = ['Years', 'Values']上面的代码创建了DataFrame。要记住的另一件重要事情是,我的Years专栏文章是一个时间序列,而不仅仅是一个连续的值。为了适应这一点,我没有做任何更改。我想拟合非线性模型,这可能会像我在线性模型示例中所做的那样,可以帮助打印图表。这是我使用线性模型尝试过的方法。同样,在我自己的示例中,我似乎并没有考虑到我的Years专栏是一个时间序列,而不是连续的事实。一次,我们有了模型,希望将其用于至少预测未来几年的价值。X = df.iloc[:, :-1].valuesy = df.iloc[:, 1].valuesX_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.1, random_state = 0, shuffle = False)lm = LinearRegression()lm.fit(X_train, y_train)y_pred = lm.predict(X_test)plt.scatter(X_train, y_train, color = 'red')plt.plot(X_train, lm.predict(X_train), color = 'blue')plt.title('Years vs Values (training set)')plt.xlabel('Years')plt.ylabel('Values')plt.show()
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 237 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信