通过针对 DataFrame 中特定列的不存在的特殊值生成合成数据样本

Generating systhetic data samples by targeting a non-existing special value for a certain colunm in a DataFrame

假设我们有以下DataFrame;

    Age   Weight  Gender  Marks
0    10      20       0      5      
1    11      19       1      4
2    15      25       0      2

此处,Marks 列只有值:245。但是,我需要额外的数据行,其 Marks 值将等于,例如 1。因此,具有综合生成的行的最终数据集就像,

    Age   Weight  Gender  Marks
0    10      20       0      5      
1    11      19       1      4
2    15      25       0      2
3     ?       ?       ?      1
4     ?       ?       ?      1
5     ?       ?       ?      1

我们如何生成这样的合成数据,同时保持 AgeWeightGender 等列中的原始数据特征?

您可以复制原始数据并与原始数据进行拼接,例如:

new_df = pd.concat([df, df.assign(Marks=1)], ignore_index=True)

首先,最好质疑为什么需要这些合成数据。例如,如果您希望将最终数据集用于预测 Marks 列的分类问题,那么您的意图根本不合适。因为您正试图根据 'Marks' 生成一些列集,然后您正试图使用​​这些列来预测 'Marks';由于过度拟合,这将是一个非常糟糕的主意。

如上所述,如果您仍然需要生成这样的数据集,一种方法是使用逻辑回归等技术。但是,这并不像 典型 逻辑回归解决方案那样容易。这里的主要问题是列丢失(即你只有一个列 Marks)。我想到的是这个过程:你还有 3 列 AgeWeightMarks。首先,您可以找到这些列与 Marks 列的相关性。然后选择与 Marks 相关性最高的列,假设它是 Age。然后通过仅使用 MarksAge 列创建预测模型来预测 Age 的值。现在您有一个包含 MarksAge 列的数据集。现在获取下一个相关性最高的列并执行相同的过程,直到使用完所有剩余的列。这将创建一个有点公平的数据集,但我认为这不是一个很好的解决方案。

最后,在这个问题上我最喜欢的是随机生成数据,无论如何这将是公平