我有一个观察表,或者更确切地说是“分组”观察表,其中每个组代表一笔交易,每行代表一个产品。但预测是在交易层面进行的。以下是示例数据集。
样本数据集:
df = pd.DataFrame({'deal': ['deal1', 'deal1', 'deal2', 'deal2', 'deal3', 'deal3'],
'product': ['prd_1', 'prd_2', 'prd_1', 'prd_2', 'prd_1', 'prd_2'],
'Quantity': [2, 1, 5, 3, 6, 7],
'Total Price': [10, 7, 25, 24, 30, 56],
'Result': ['Won', 'Won', 'Lost','Lost', 'Won', 'Won']})
我的方法: 使用
pivot_table
展平数据以获得每行一个观察值,这样我们每个交易就获得一行,然后继续进行分类建模,可能是逻辑回归或梯度提升。
但是在上面的例子中我们有: 要旋转的 1 列(产品,具有 2 个唯一值) 2 个衡量标准(数量和价格)作为系列/值。
结果有 4 列。宽格式表如下所示:
问题/问题/想法:
在这种情况下,这总是最好的方法吗?我看到的问题(或者也许不是?)是当要旋转的列数超过 1 时,并且如果其中唯一值的组合更多,则表可能会变得非常非常宽!
如果有的话,我将很高兴听到准备训练数据集的其他有效方法!
这似乎是一种非常有效的方法,因为您说预测是在“交易”级别上完成的,而不是在单个“交易+产品”级别上完成的。
如果表变宽,如果这实际上是您在推理时需要进行预测的方式,那么这应该不是问题。
如果您可以根据所使用的功能对交易进行分组(例如,交易中包含哪些产品组合),您也许可以创建多个较小的模型,而不是单个大模型。