基于月的梯度推进价格预测

2024-04-29 04:54:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力实现的目标

我想根据以下数据集中的其他参数,在“天然气开放”一栏中预测所有合同月份的天然气价格。我使用的是XG Boosting算法,在输出时,我只能看到25个预测值,无法解释它们将应用于哪个合同月。为了安全起见,我使用KFold验证,而不是train_test_split

  Contracts     NG Open  NGHigh  NGLow   NGLast    NGVolumes   

  2018-12-01    3.907   4.384   3.907   4.272       0 
  2019-01-01    3.917   4.408   3.917   4.291       264295  
  2019-02-01    3.800   4.267   3.785   4.148       155303          
  2019-03-01    3.515   4.007   3.496   3.865       51299       
  2019-04-01    2.735   2.829   2.704   2.793       73226           
  2019-05-01    2.632   2.691   2.602   2.667       54540       
  2019-06-01    2.638   2.719   2.634   2.692       34269   

代码

  import pandas as pd
  from sklearn.ensemble import GradientBoostingRegressor 
  from sklearn.model_selection import KFold
  from sklearn.model_selection import cross_val_score

  dataset = pd.read_excel("C:\Futures\Futures.xls")
  dataset['Contracts'] = dataset['Contracts'].str.rstrip('(E)')
  dataset['Contracts'] = pd.to_datetime(dataset['Contracts'])
  dataset  = dataset.set_index('Contracts')
  dataset1 = dataset.values

  X = dataset1[:,0:5]
  y = dataset1[:,0]

  gbrt=GradientBoostingRegressor(n_estimators=100) 
  kfold = KFold(n_splits=10, random_state=7, shuffle = True)
  results = cross_val_score(gbrt, X, y, cv=kfold)
  print("Accuracy: %.2f%% (%.2f%%)" % (results.mean()*100, results.std()*100))

 gbrt.fit(X_train, y_train)
 predictions = gbrt.predict(X_test)
 print(predictions)

代码输出

准确率:99.16%(1.51%)

[2.90288328 2.48242494 2.63815259 2.56852281 2.56852281 2.74960132 2.58107653 2.80135512 2.67153137 3.54629023 2.50640456 2.5038906 3.05384458 2.55023831 2.85925744 2.73849325 2.74080839 2.79646487 2.89086965 2.52839402 2.63251226 2.85012468 2.87403014 2.52685035 2.73180843]

如何关联2.9028838,2.482494的输出。。我的第一个问题是缩短月份和第二个月,依此类推,第二个问题是如何为所有行生成相同的输出。截至2027年3月1日的合同月数总计为100行

多谢各位


Tags: 代码fromtestimporttrainsklearnresultsdataset