【发布时间】:2021-09-29 23:48:12
【问题描述】:
我有一个时间序列数据集,它由均匀间隔的时间步长和另一个参数(比如音量)组成。我想将数据集切割/拆分为 X 和 Y 参数来训练我的 ML 模型。我正在寻找一种适用于 Python 的逻辑/算法,可用于处理下面的简化版本。
我有一个偶数时间步长数组(1 个时间步长 = 1 天),范围从 1 到 100:
array = [1,2,3,...,100]
我还想出了以下参数:N 和 K。 N用于X参数,K用于Y参数。
如果N = 5,则在第一次迭代X = [1,2,3,4,5],在第二次迭代X = [2,3,4,5,6]和第三次迭代X = [3,4,5,6,7]等等。所以,一个X的长度等于N的个数。如果N = 10,则在第一次迭代时X = [1,2,3,...,10],在第二次迭代时X = [2,3,4...,11],依此类推。
K参数表示几何序列的长度。例如:k =5 表示k = (1,2,4,8,16),k = 3 表示k = (1,2,4),k = 7 表示k = (1,2,4,8,16,32,64)。 Y 参数在每次迭代中使用 X 数组的最后一个元素,并将几何序列中的值添加到其中。所以,一个Y的长度等于K的个数。如果len(K) = 5 -> len(Y)=5,如果len(K) = 3 -> len(Y)=3等等。
示例 1:N=5,K=5:
第一步:
X = [1,2,3,4,5] and Y = [6,7,9,13, 21]
because K = (1,2,4,8, 16) and Y = [5+1, 5+2, 5+4, 5+8, 5+16] with 5 being the last element of an array X
第二步:
X = [2,3,4,5, 6] and Y = [7,8,10,14, 22]
because K = (1,2,4,8, 16) and Y = [6+1, 6+2, 6+4, 6+8, 6+16] with 6 being the last element of an array X
第三步:
X = [3,4,5, 6, 7] and Y = [8,9,11,15, 23]
because K = (1,2,4,8, 16) and Y = [7+1, 7+2, 7+4, 7+8, 7+16] with 7 being the last element of an array X
**Other steps**
最后一步:
X = [?,?,?,?,?]; Y = [?,?,?,?,100]
k = (1,2,4,8,16) because 100 is the last element of an array
示例 2:N = 6,K = 3: 第一步:
X = [1,2,3,4,5, 6] and Y = [7,8,10] Because K = (1,2,4) and Y = [6+1, 6+2, 6+4]
第二步:
X = [2,3,4,5,6, 7] and Y = [8,9,11] Because K = (1,2,4) and Y = [7+1, 7+2, 7+4]
第三步:
X = [3,4,5,6,7,8] and Y = [9,10,12] Because K = (1,2,4) and Y = [8+1, 8+2, 8+4]
**Other steps**
最后一步:
X = [92,93,94,95,96]; Y = [97,98,100], k = (1,2,4) because 100 is the last element of an array
编辑
我希望函数看起来像:
def dataset_split(array, N, K):
它应该基于 1 到 100 之间的输入数组返回多个 X 和 Y 数组(基本上是块)。基本上它应该遍历步骤并将 X 和 Y 的结果以矩阵或数组的形式保存。根据我上面的示例 1,前三个步骤后我的 X 数组将是
X = [[1,2,3,4,5], [2,3,4,5,6], [3,4,5, 6, 7]]
前三步后我的 Y 数组将是
Y = [[6,7,9,13, 21], [7,8,10,14, 22], [8,9,11,15, 23]]
该过程应该一直持续到到达数组的最后一个元素,在这种情况下为 100
【问题讨论】:
-
函数应该返回什么?
-
函数应该根据 N 和 K 的输入值返回 X 和 Y 数组。如果我返回示例 1,输入 N = 5 和 K = 5,函数应该返回大小为 X 的数组在 (83,5) 附近,其中 83 是切割次数,5 是每次切割的长度。与 Y 数组类似
标签: python arrays python-3.x algorithm numpy