Python 我们能根据一列数字预测序列中的下一个数字吗?

Python 我们能根据一列数字预测序列中的下一个数字吗?,python,python-3.x,prediction,Python,Python 3.x,Prediction,我试图找到一种方法来预测一系列数字中的下一个数字。通常我会使用线性回归,但正如你所看到的,有日期和一列数据。没有因变量,只有一个自变量(贷款)。有没有一种简单的方法可以根据已知的数字序列预测下一个数字,或者两个数字的范围?还有,有没有办法得到结果的概率,比如90%或95%的信心 这是我的数据 Account Loans 2019 Aug 393.3 2020 Feb

我试图找到一种方法来预测一系列数字中的下一个数字。通常我会使用线性回归,但正如你所看到的,有日期和一列数据。没有因变量,只有一个自变量(贷款)。有没有一种简单的方法可以根据已知的数字序列预测下一个数字,或者两个数字的范围?还有,有没有办法得到结果的概率,比如90%或95%的信心

这是我的数据

Account                            Loans
2019 Aug                           393.3
2020 Feb                           383.2
2020 Mar                           455.4
2020 Apr                           542.0
2020 May                           510.0
2020 Jun                           483.5
2020 Jul                           465.5
2020 Aug                           448.2
Aug 12                             451.1
Aug 19                             447.5
Aug 26                             442.3
Sep 02                             444.7
最终,我希望看到像这样的东西:有95%的信心的443到445。这可能吗?

解决方案 选项1-滚动平均 取最后n个值(a)的平均值。从最后一个数字(l)中减去
a
,作为(s)。最终结果应该是
l-s
l+s

例子 选项2-指数平滑 考虑使用统计模型的指数平滑

例子 工具书类 statsmodels(简单指数平滑):


首先,您需要进行一些预处理,将自变量转换为一些数字比例。可能是2019年8月1日起的天数。然后你可以进行回归。

你使用的标准是什么,假设443到445具有95%的置信度?你可以对以前的值进行简单的滚动平均或指数平滑,以粗略预测下一个值。我更新了我的答案。让我知道这两种解决方案是否都是您想要的。一般来说,你所寻找的可能在statsmodels中可用。滚动平均完全有意义。我想得太多了。我有一个相关的问题。我在这里找到了一个很好的解决方案:我试图将我的'Loans'变量输入'Numbers'变量。我试着像这样分割数据帧:numbers=df.loc[:,['Commercial and industrial loans']]现在,我得到了这个错误:TypeError:+:'int'和'str'的不支持的操作数类型我考虑过了,但我觉得日期的选择几乎是任意的。或者,不管怎样,他们肯定会跳很多次。时间为2019年8月至2022年2月至2020年3月。在我看来,这不是1,2,3。如果你忽略自变量,你将无法得到一个有意义的正确预测,也许你可以使用每月平均贷款或总贷款。我认为这绝对是一个选择。如何将“Loans”变量作为数组输入?@ASH它是csv文件还是文本文件?只需要通过拆分将其解析为一个数组,它只是一个带有索引和一列的小数据帧。我这样做了:arr=new_df.iloc[:,0:]。我得到的值是:数组([[393.3],[383.2],[455.4],[542.4],[510.],[483.5],[465.5],[448.2],[451.1],[447.5],[442.3]),我将您的函数复制/粘贴到我的IDE中,然后像这样调用它:print(predict,3)这是我得到的结果:3@ASH使用以下分层工具展平阵列:

def predict(arr, n):
  l = arr[-1]
  a = sum(arr[:n]) / n
  s = abs(a - l)
  lower_bounds = l - s
  upper_bounds = l + s
  
  return (upper_bounds, lower_bounds)
  
from statsmodels.tsa.api import SimpleExpSmoothing

def predict(arr, sl)
    return SimpleExpSmoothing(arr).fit(smoothing_level=sl).fitted_values