def choose_best_lag(seq, pre_period, lags = range(1,30), Kmax = 200):
"""
????lazzy model,?????
???(?????????)
"""
models = []
# ???
std_sca = StandardScaler().fit(np.array(seq).reshape(-1,1))
# rob_sca = RobustScaler().fit(np.array(seq).reshape(-1,1))
seq = std_sca.transform(np.array(seq).reshape(-1,1))
# ????????????,???????
from sklearn.model_selection import train_test_split
for input_lag in lags:
# window = input_lag + pre_period
X, Y = create_dataset(seq.flatten(), input_lag, pre_period)
# lazzy_models = lazzy_loo(X[-1], X[0:-1], Y[:-1], Kmax)
# y_pred = lazzy_prediction(X[-1], X[0:-1], Y[:-1], lazzy_models)
# err = err_evaluation(y_pred.flatten(), Y[-1])
#
# lazzy_models.sort()
# models.append((err, input_lag, lazzy_models[0][1]))
# do more cv
# for state in range(0,3):
err = 0.0
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.01, random_state=0)
for x_q,y_q in zip(X_test,y_test):
lazzy_models = lazzy_loo(x_q, X_train, y_train, Kmax)
y_pred = lazzy_prediction(x_q, X_train, y_train, lazzy_models)
err += err_evaluation(y_pred.flatten(), y_q)
lazzy_models.sort()
models.append((err/len(X_test), input_lag, lazzy_models[0][1]))
models.sort()
best_lag = models[0][1]
best_k = models[0][2]
# fig, ax = plt.subplots()
# ax.plot(y_pred.flatten(),label='prediction')
# ax.plot(Y[-1],label='real')
# ax.set_title('best cv lags')
return models, best_lag, best_k
lazzy_decomposion.py 文件源码
python
阅读 21
收藏 0
点赞 0
评论 0
评论列表
文章目录