当前位置: 代码迷 >> python >> 在Python中连接两个大小不同的列表列表
  详细解决方案

在Python中连接两个大小不同的列表列表

热度:51   发布时间:2023-06-19 09:20:45.0

我正在尝试编写10倍交叉验证的代码。

也就是说,将数据分成10个大小相等的块,然后对于10个迭代中的每个迭代,取出第i个块,并将其余90%用于测试数据。

对于第二次迭代,我需要将前10%与后80%结合在一起。 对于第三次迭代,我将前20%加入后70%。 等等。

(因此,第一次迭代将删除第一个10%,第二次迭代将第二个10%删除,依此类推)

我的数据包含1000个项目,每个项目都是np.float类型的70个值的数组

将为10个验证中的每一个调用此循环,其中i = 0,i = 1 .... i = 9:

def get_training(input_array, i):
    training = (input_array[:i*subset_size] + input_array[(i+1)*subset_size:])
    return training

它早先起作用了,但是现在我得到了错误:

operands could not be broadcast together with shapes (100,70) (800,70)

我认为这可能是由于np.float数据类型所致; 它之前使用的是另一种数据类型。

谢谢

不要重新发明轮子。 您可以在sklearn.cross_validation模块中使用功能和 。

参见文档:

K折交叉验证迭代器。

提供训练/测试索引以将数据拆分为训练测试集中的数据。 将数据集拆分为k个连续的折叠(不带混排)。

然后将每个折痕用于一次验证集,而剩下的k-1个折痕则来自训练集。

尝试:

training = np.concatenate((input_array[:i*subset_size], input_array[(i+1)*subset_size:]))

(对于numpy数组,+运算符将值加在一起,并假设它们的形状相同:)

a = np.array(range(10))
print a + a                 # => [ 0  2  4  6  8 10 12 14 16 18]
  相关解决方案