如何根据 pandas 上的数值数据(cdf 和 pdf 样式)进行概率特征工程

How to do probit feature engineering from numerical data (cdf and pdf style) on pandas

这个问题是基于我目前的理解(编辑更准确的统计术语非常惠康)。在我看来,probit 是正确的术语。我想做 probit_pdfprobit_cdf

probit_pdf是变量等于某个值的概率 probit_cdf是变量小于或等于value

的概率

这是我的数据

   Id  Value  
    1   2    
    2   4    
    3   2       
    4   6     
    5   5      
    6   4      
    7   2    
    8   4     
    9   2
    10  5

为了让问题更清楚,我举几个Id的例子

probit_pdf 示例,对于 Id = 1 : 这是预期的输出,因为 Value = 2 的概率是 0.40410 中),所以 probit_pdf0.40.

probit_cdf 示例,对于 Id = 5: 因为Value >= 5的概率是0.90910),所以probit_cdf0.90

所以我的预期输出是

Id  Value  probit_pdf   probit_cdf
1   2           0.40         0.40
2   4           0.30         0.70
3   2           0.40         0.40    
4   6           0.10         1.00
5   5           0.20         0.90
6   4           0.30         0.70
7   2           0.40         0.40
8   4           0.30         0.70
9   2           0.40         0.40
10  5           0.20         0.90

首先对于 probit_pdf 使用 GroupBy.transformsize 并除以 DataFrame 的长度,对于 probit_cdf 将每个值与所有值进行比较,得到 sums 并以相同的方式划分:

lens = len(df)
df['probit_pdf'] = df.groupby('Value')['Value'].transform('size').div(lens)
df['probit_cdf'] = df['probit_pdf'].apply(lambda x: df['probit_pdf'].ge(x).sum()).div(lens)
print (df)
   Id  Value  probit_pdf  probit_cdf
0   1      2         0.4         0.4
1   2      4         0.3         0.7
2   3      2         0.4         0.4
3   4      6         0.1         1.0
4   5      5         0.2         0.9
5   6      4         0.3         0.7
6   7      2         0.4         0.4
7   8      4         0.3         0.7
8   9      2         0.4         0.4
9  10      5         0.2         0.9