我正在使用输入到CNN网络的4-D阵列。输入数组具有以下形状
print('X_train shape: ', X_train.shape)
X_train shape: (47204, 1, 100, 4)
数据描述:
输入数据包含47204
个实例(根据CNN要求为固定长度的段)。每个实例(1, 100, 4)
,即1
段包含100-GPS points
,并且对于每个点,存储4-
对应点运动学(max_speed, avg_speed, max_acc, avg_acc)
,因此(1, 100, 4)
。标签存储在5个类别y_train
的形状为(47204,)
的单独[0..4]
数组中。
print(y_train)
[3 3 0 ... 2 3 4]
为了更好地了解我的X_train
数组,我在下面显示前三个元素:
print(X_train[1:3])
[
[[[ 3.82280987e+00 2.16802350e-01 7.49917451e-02 3.44416369e-04]
[ 3.38707371e+00 2.02210055e-01 1.61751110e-03 1.93745950e-03]
[ 2.49202215e+00 1.60605262e-01 8.43561351e-03 2.40057917e-03]
...
[ 2.00022316e+00 2.70020923e-01 5.40441673e-02 3.57212151e-03]
[ 3.25199744e-01 9.06990382e-02 1.46808316e-02 1.65841315e-03]
[2.96587589e-01 0.00000000e+00 6.13293351e-04 4.16518187e-03]]]
[[[ 1.07209176e+00 7.27038312e-02 6.62777026e-03 2.04611951e-04]
[ 1.06194285e+00 5.05005456e-02 4.05676569e-03 3.72293433e-04]
[ 1.02849748e+00 2.12558178e-02 2.95477005e-03 5.56584054e-04]
...
[ 4.51962909e-03 5.63125736e-04 5.98474074e-04 1.63036715e-05]
[ 2.83026181e-03 2.35855075e-03 1.25789358e-03 2.15331510e-06]
[8.49078543e-03 2.16840434e-19 9.43423077e-04 1.29198906e-05]]]
[[[ 7.51127665e+00 3.14033478e-01 6.85170617e-02 7.73415075e-04]
[ 7.42307262e+00 1.33868251e-01 4.10564823e-02 1.16131460e-03]
[ 7.35818066e+00 1.23886976e-02 3.02312582e-02 1.28312101e-03]
...
[ 7.40826167e+00 1.19388656e-01 4.00874715e-02 2.04909489e-04]
[ 7.23779176e+00 1.33269965e-01 1.20430502e-02 1.58195900e-04]
[ 7.11697001e+00 4.68002105e-02 5.42478400e-02 3.58101318e-05]]]
]
任务:
我需要使用4个运动学(max_speed, avg_speed, max_acc, avg_acc)
作为特征来创建机器学习模型(例如,随机森林)。这需要浏览每个实例,并获取实例中100点的这些功能。
显然,样本数将为4720400
(即47204 x 100
),因此还将每个值与其实例的相应标签匹配,即y_train
将为(4720400,)
。
预期输入将是:
max_speed avg_speed max_acc avg_acc class
0 3.82280987e+00 2.16802350e-01 7.49917451e-02 3.44416369e-04 3
1 3.38707371e+00 2.02210055e-01 1.61751110e-03 1.93745950e-03 3
2 2.49202215e+00 1.60605262e-01 8.43561351e-03 2.40057917e-03 3
...
我一直在思考如何在整个星期中做到这一点,所有想法都烟消云散了。请问我该怎么做?
您可以简单地通过以下方法将X_train
数组从(47204, 1, 100, 4)
调整为(4720400, 4)
:
X_train_reshaped = X_train.reshape(4720400, 4)
它将保留数据顺序,并且元素总数将相同。
类似地,您可以使用y_train
命令扩展repeat
数组:
Y_train_reshaped = numpy.repeat(Y_train, 100)
注意100
的repeat
命令。由于您有一个用于100个数据点的标签,因此我们将这些项目扩展100倍。此命令也将保留数据顺序,因此所有实例将具有相同的原始标签。