洗牌训练数据对机器学习有益吗?

数据挖掘 机器学习 Python scikit-学习 熊猫
2021-10-10 03:04:45

我很想知道改组 ML 训练数据是否有助于获得更好的结果?

抱歉,这里没有太多智慧,但我一直在阅读pythonprogramming.net 上关于这个主题的帖子。

我从帖子中复制了这个函数并修改为只是将我的洗牌数据保存到 csv 文件中。

def Randomizing():
    df2 = df.reindex(np.random.permutation(df.index))
    df2.to_csv('C:\\Users\\Machine-Learning-Electric-Data\\randomized.csv')

Randomizing()

似乎发生的只是索引被打乱,所有其他数据保持不变。我的 pd 数据框中有很多列,我需要保持所有行相同。(随机打乱所有行,它的时间序列数据)如果这是有益的,有人可以给我一个关于如何随机打乱我的数据而不仅仅是索引的提示吗?

1个回答

在初始预处理步骤中,对训练数据进行洗牌通常是一种很好的做法。

当您执行 normaltrain_test_split时,您将有 75% / 25% 的拆分,您的拆分可能会忽略原始数据集中的类别顺序。例如,可能类似于类似于数据集的数据集的类标签iris将包括类似于以下内容的目标变量:

例如:[0, 0, 0, 1, 2, 2, 2, 3, 3, 3, 3, 3]

您可以从上面的示例中看到,在不进行混洗的情况下拆分数据可能会导致测试集评估的性能非常差。换句话说,您可能只在训练数据中捕获类 0、1 和 2,而在您的测试数据中只会表示 3。特别是对于分类任务,但对于其他 ML 任务,打乱您的数据可能很有用。然而,每种情况都是不同的,所以最好的办法是尝试两种方法,看看你是否看到了显着的改进。

希望这能回答你的问题。如果您想进一步澄清,请发表评论。