通过针对 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
列只有值:2
、4
和 5
。但是,我需要额外的数据行,其 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
我们如何生成这样的合成数据,同时保持 Age
、Weight
、Gender
等列中的原始数据特征?
您可以复制原始数据并与原始数据进行拼接,例如:
new_df = pd.concat([df, df.assign(Marks=1)], ignore_index=True)
首先,最好质疑为什么需要这些合成数据。例如,如果您希望将最终数据集用于预测 Marks
列的分类问题,那么您的意图根本不合适。因为您正试图根据 'Marks' 生成一些列集,然后您正试图使用这些列来预测 'Marks';由于过度拟合,这将是一个非常糟糕的主意。
如上所述,如果您仍然需要生成这样的数据集,一种方法是使用逻辑回归等技术。但是,这并不像 典型 逻辑回归解决方案那样容易。这里的主要问题是列丢失(即你只有一个列 Marks
)。我想到的是这个过程:你还有 3 列 Age
、Weight
和 Marks
。首先,您可以找到这些列与 Marks
列的相关性。然后选择与 Marks
相关性最高的列,假设它是 Age
。然后通过仅使用 Marks
和 Age
列创建预测模型来预测 Age
的值。现在您有一个包含 Marks
和 Age
列的数据集。现在获取下一个相关性最高的列并执行相同的过程,直到使用完所有剩余的列。这将创建一个有点公平的数据集,但我认为这不是一个很好的解决方案。
最后,在这个问题上我最喜欢的是随机生成数据,无论如何这将是公平。
假设我们有以下DataFrame;
Age Weight Gender Marks
0 10 20 0 5
1 11 19 1 4
2 15 25 0 2
此处,Marks
列只有值:2
、4
和 5
。但是,我需要额外的数据行,其 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
我们如何生成这样的合成数据,同时保持 Age
、Weight
、Gender
等列中的原始数据特征?
您可以复制原始数据并与原始数据进行拼接,例如:
new_df = pd.concat([df, df.assign(Marks=1)], ignore_index=True)
首先,最好质疑为什么需要这些合成数据。例如,如果您希望将最终数据集用于预测 Marks
列的分类问题,那么您的意图根本不合适。因为您正试图根据 'Marks' 生成一些列集,然后您正试图使用这些列来预测 'Marks';由于过度拟合,这将是一个非常糟糕的主意。
如上所述,如果您仍然需要生成这样的数据集,一种方法是使用逻辑回归等技术。但是,这并不像 典型 逻辑回归解决方案那样容易。这里的主要问题是列丢失(即你只有一个列 Marks
)。我想到的是这个过程:你还有 3 列 Age
、Weight
和 Marks
。首先,您可以找到这些列与 Marks
列的相关性。然后选择与 Marks
相关性最高的列,假设它是 Age
。然后通过仅使用 Marks
和 Age
列创建预测模型来预测 Age
的值。现在您有一个包含 Marks
和 Age
列的数据集。现在获取下一个相关性最高的列并执行相同的过程,直到使用完所有剩余的列。这将创建一个有点公平的数据集,但我认为这不是一个很好的解决方案。
最后,在这个问题上我最喜欢的是随机生成数据,无论如何这将是公平。