python中带有移动窗口的线性回归

时间:2018-11-14 22:59:36

标签: python

我正在尝试编写一个程序来确定线性回归模型在点的移动窗口上的斜率和截距,即从(x1,y1)到(x2,y2),然后从(x2,y2)到(x3,y3)。我已经成功地对两个numpy数组(x和y)进行了线性回归,但是我不确定如何处理这个项目。我希望窗口大小是用户输入的参数。我可以使用数组子集重塑两个数组的形状,并获得一个在其上进行线性回归的窗口,但是我不知道如何使它自动化以及如何保存每个斜率并截取到文件中。我已经尽力了,但是我是一名新程序员,不知道在哪里看。有人可以指出我正确的方向吗?谢谢!

下面是我的代码:

/etc/kubernetes/addons

2 个答案:

答案 0 :(得分:1)

这就是我最终得到的:

data = np.genfromtxt('data.csv', delimiter=',')

w = data[:,0]
x = data[:,1]
y = data[:,2]
z = data[:,3]


lenw = int(len(w))
lenx = int(len(x))    #change the value within inner parenthesis to suit different dataset

window = int(6)      #change window size
wdata_avg = np.zeros(lenw - window + 1)
a = np.zeros(lenw-window+1)
b = np.zeros(lenx-window + 1)

for i in np.arange(len(w)):
    wdata = w[i:i + window]
    xdata = x[i:i+window]
    a[i], b[i] = np.polyfit(wdata, xdata,1)
    wdata_avg[i] = np.mean(wdata)
    if i == (lenw - window):
        break

代码中可能存在一些不一致之处,因为我尝试对其进行格式化,因此它是通用的而不是特定于我的数据的。

答案 1 :(得分:0)

  1. 将建模和绘图包装在函数中。

  2. 然后从另一个将数组子集到用户指定范围的函数调用此函数,然后再将“清除的”数据馈送到预测函数。

伪代码:

def select_window(data, start, stop): 
    clean data = data[start:stop,:]
    X = clean_data[without_y]
    y = clean_data[y]

    prediction_function(X, y)

def prediction_function(X,y):
   predict_on_X_and_y_and_plot_as_you_desire