如何针对具有不同值的相同ID进行正确的预测

时间:2019-11-27 14:30:03

标签: python machine-learning

我找不到有关如何做出正确预测的信息 对于以下数据帧:


train data:

id   variable   value    statement 

1       x1        431       1
1       x2        11        1
1       x3        65        1
2       x1        33        0
2       x2        2         0
3       x3        58        1
3       x1        22        1
.
.
.

need to predict:

id   variable      value    statement 

996       x1        431        ?
996       x2        131        ?
997       x3        62         ?
997       x1        33         ?
997       x2        23         ?
998       x1        18         ?
999       x1        26         ?

我想知道如果我获得相同ID的不同语句该怎么办,例如:

 id         statement 

 997           0.66
 997           0.95
 997           0.34

在这种情况下,我应该怎么做,我应该按ID分组并获得最大值,还是应该是平均水平……正确的选择是什么? 谢谢...

1 个答案:

答案 0 :(得分:0)

@@АндрейАлексеевич我会说这取决于ID在您的DF中的含义。

在大多数情况下,由于您必须拥有许多ID,而ID并不是一个数字,所以在预测时并不会考虑ID。

因此,您必须使用get_dummies将ID分成不同的列

df_ohe = pd.get_dummies(df, prefix_sep="__")
df_ohe.head()
out:
id_0   id_1   id_2 ...
 0      1     0 
 0      0     1
 1      0     0

总结:

  • 如果该ID确实是一个ID(例如,每个组件一个ID),我将删除此功能。
  • 如果ID提供了一些有用的信息,例如id 1 =大客户,id2 =中型客户...,我将保留此功能并使用get_dummies进行拆分。

编辑您的问题

@АндрейАлексеевич

假设每个ID代表一个客户端(id 1 =客户端1,...)

如果保留此功能,则将尝试预测客户端是否吸烟(是或否)。您的模型将了解(有点过拟合)客户端ID 1是吸烟者,依此类推。

因此,您的模型不会真正推广到新数据(您不知道新客户是否吸烟的新客户)

此外,正如我所说,ID不是数字(即使它写为0,1,2,..)。如果保留它们,则模型会将这些ID解释为数字。因此,它会说,id 100> id 20,依此类推。