使用Python SciKit进行随机森林回归了解具有多个通道的时间序列列表

时间:2018-06-08 01:44:07

标签: python arrays scikit-learn time-series random-forest

我正在Python中构建一个随机森林模型,并将sklearn作为基线,与来自内置kera的RNN的预测进行比较(已经完成了RNN的预测......耶!)。数据是时间序列。从概念上讲,它是623个段,每个段包含180个连续数据点(填充以创建相等长度的段),每个段具有7个特征通道和一个目标通道。

我已准备好数据并分成训练和测试组。当前数据包含在numpy.ndarray容器中,其形状如下。

X.shape: (623, 180, 7)
y.shape: (623, 180, 1)
X_train.shape.: (498, 180, 7)
y_train.shape: (498, 180, 1)
X_test.shape: (125, 180, 7)
y_test.shape: (125, 180, 1)

由于我正在做回归模型,我正在尝试使用randomforestregressor,如下所示。但是,我不能因为它需要2D阵列。

from sklearn.ensemble import RandomForestRegressor
rf = RandomForestRegressor(n_estimators = 1000)
rf.fit(X_train, y_train);

所以我需要重塑或以某种方式将数据重组为2D格式。现在我正在考虑迭代3D数组以创建2D数组。对于要素,2D数组将为7列(每个通道一列),每列的每行包含时间序列数据作为列表或系列。

有关如何重组此数据的其他任何想法?任何其他建议表示赞赏。

提前致谢。

作为参考,我查看了这些链接:

Reshaping 3D Numpy Array to a 2D array

numpy with python: convert 3d array to 2d

Sklearn Error, array with 4 dim. Estimator <=2

https://machinelearningmastery.com/index-slice-reshape-numpy-arrays-machine-learning-python/

2 个答案:

答案 0 :(得分:0)

另一个选择是创建一维数组,然后使用np.c_ [variable_1,variable_2,variable_n]连接您想要在训练数据中考虑的变量:

my_regressor_forest.fit(np.c_[column1, column2], my_class_column)

答案 1 :(得分:0)

我会自动执行以下两项操作之一

  1. 连接。 (您将使用180 * 7维数组。)
  2. 使用降维(PCA为您提供最能说明数据差异的维)。