簡體   English   中英

Python中的趨勢“預測變量”?

[英]Trend “Predictor” in Python?

我目前正在使用具有2列的數據框(以pandas ):第一列是一些數字定量數據,例如重量,某天花費的金額,GPA等;第二列是日期值,即添加相應的第1列條目的日期。

我想知道,有沒有一種方法可以“預測”在X時間之后Python中的下一個值? 例如,如果我有100個體重條目跨越2-3個月(並非所有條目都具有相同的時差,那么1個條目可能在第3天,下一個第5天和下一個第10天),並且想“預測”我在1個月后的下一個錄入內容,有什么辦法嗎?

我認為這與“時間序列分析”有關,但是我的統計背景不是很強,所以我不知道這是否是正確的方法。 如果是,該如何將其應用於數據框(即哪些包)? 它可能返回的值是否具有任何意義,或者在我正在使用的上下文中它毫無意義? 謝謝。

對於預測時序數據,我覺得最好的選擇是LSTM,這是一種遞歸神經網絡,非常適合時序回歸。

如果您不想深入了解神經網絡的后端,建議使用Keras庫,該庫是Tensorflow框架的包裝。

假設您有一個一維值數組,並且想要預測下一個值。 Keras中的代碼可能類似於:

#start off by building the training data, let arr = the list of values
X = []
y = []
for i in range(len(arr)-100-1):
    X.append(arr[i:i+100]) #get prev 100 values for the X
    y.append(arr[i+100])   # predict next value for Y

由於LSTM需要3D輸入,因此我們希望將X數據重塑為3維:

import numpy as np
X = np.array(X)
X = X.reshape(len(X), len(X[0]), 1)

現在,X的形式為(樣本,時間步長,特征)

在這里,我們可以使用keras構建神經網絡:

from keras.models import Sequential
from keras.layers import Dense, LSTM

model = Sequential()
model.add(LSTM(input_shape = (len(X[0], 1)) #input 3-D timeseries data
model.add(Dense(1)) #output 1-D vector of predicted values
model.compile(loss='mean_squared_error', optimizer='adam')
model.fit(X, y)

中提琴,您可以使用模型來預測數據中的下一個值

Statsmodels是一個python模塊,提供時間序列預測(Arima)中“最著名的”方法之一。

可以在以下鏈接中看到一個示例: https : //machinelearningmastery.com/arima-for-time-series-forecasting-with-python/

一些庫中提供了其他時間序列預測方法,例如支持向量回歸,Holt-Winters和簡單指數平滑。

Spark-ts( https://github.com/sryza/spark-timeseries )是一個支持Python的時間序列庫,並提供Arima,Holt-Winters和指數加權移動平均值之類的方法。

Libsvm( https://github.com/cjlin1/libsvm )提供了支持向量回歸方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM