使用numpy随机打散训练数据

好久没写东西了……有必要放一些东西撑撑场面了……

在机器学习中,如果训练数据之间相关性很大(例如连续的语音分帧),可能会让结果很差(泛化能力得不到训练)。这时通常需要将训练数据打散。

在python中可以使用numpy.random.shuffle(x)的方式打散数据,也就是说将x中得数据按照随机顺序重排。但是这会遇到一个问题:训练集中包括输入x和输出y。x和y在打散前是一一对应的,打散后不能破坏这种对应关系,所以我们可以使用numpy.random.permutation()来帮忙。

numpy.random.permutation(length)用来产生一个随机序列作为索引,再使用这个序列从原来的数据集中按照新的随机顺序产生随机数据集。

代码很简单:

indices = numpy.random.permutation(data_x.shape[0]) # shape[0]表示第0轴的长度,通常是训练数据的数量  
rand_data_x = data_x[indices]  
rand_data_y = data_y[indices] # data_y就是标记(label)  

这样就能把训练样本随机打散了……

Friskit

继续阅读此作者的更多文章