利用pandas计算概率

上次从51job上爬取数据存储到51job.txt上后我们对数据进行处理,计算最小工资为1万的Java工作在哪个城市比较容易找到工作(求概率)p=p(北京)*p(Java|北京)*p(min=1万|北京)

 

import pandas as pd
df = pd.read_csv('51.txt', sep='\t')

# 计算类别的先验概率
pc = df['addr'].value_counts() / df['addr'].size

# 计算每个特征属性条件概率
pa = pd.crosstab(df['addr'], df['key'], margins=True).apply(lambda x:x/x[-1], axis=1)

# 通过样本计算出均值和方差,也就是得到正态分布的密度函数。有了密度函数,就可以把值代入,算出某一点的密度函数的值
import numpy as np
df2 = df.groupby('addr').agg([np.mean, np.var])
df2['x'] = 1

from math import pi, exp, sqrt
def f(x, mean, var):
    return exp(-(x-mean)**2/(2*var))/sqrt(2*pi*var)

df2['p_x_min']=df2[['min','x']].apply(lambda 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python 是一种广泛应用于数据分析和科学计算的编程语言,可以利用它进行计算IV(Information Value)和WOE(Weight of Evidence)。 IV 是一种常用于评估变量的预测能力的指标。它衡量了自变量与因变量之间的相关性,也可以用于特征选择。计算 IV 的一般步骤如下: 1. 对于某个自变量,根据其不同取值将数据集划分成多个子集。 2. 在每个子集中,计算该子集中因变量的事件发生率和非事件发生率。 3. 根据每个子集中的事件发生率和非事件发生率计算每个子集的 IV 值。 4. 将每个子集的 IV 值相加得到最终的 IV 值。 下面是一个计算 IV 值的示例代码: ```python import pandas as pd import numpy as np def calculate_iv(dataset, feature, target): dataset['Event'] = np.where(dataset[target] == 1, 1, 0) dataset['NonEvent'] = np.where(dataset[target] == 0, 1, 0) event_total = dataset['Event'].sum() nonevent_total = dataset['NonEvent'].sum() dataset['EventRate'] = dataset['Event'] / event_total dataset['NonEventRate'] = dataset['NonEvent'] / nonevent_total dataset['WOE'] = np.log(dataset['EventRate'] / dataset['NonEventRate']) dataset['IV'] = (dataset['EventRate'] - dataset['NonEventRate']) * dataset['WOE'] iv = dataset['IV'].sum() return iv # 使用示例 dataset = pd.read_csv('data.csv') iv_value = calculate_iv(dataset, 'feature', 'target') print("IV value:", iv_value) ``` WOE 是一种衡量特征的预测能力的指标,它将每个特征的每个取值映射到一个权重值。计算 WOE 的一般步骤如下: 1. 对于某个自变量,根据其不同取值将数据集划分成多个子集。 2. 在每个子集中,计算该子集中事件发生的概率和非事件发生的概率。 3. 根据每个子集中事件发生的概率和非事件发生的概率计算每个子集的 WOE 值。 4. 将每个子集的 WOE 值相加得到最终的 WOE 值。 下面是一个计算 WOE 值的示例代码: ```python import pandas as pd import numpy as np def calculate_woe(dataset, feature, target): dataset['Event'] = np.where(dataset[target] == 1, 1, 0) dataset['NonEvent'] = np.where(dataset[target] == 0, 1, 0) event_total = dataset['Event'].sum() nonevent_total = dataset['NonEvent'].sum() dataset['EventRate'] = dataset['Event'] / event_total dataset['NonEventRate'] = dataset['NonEvent'] / nonevent_total dataset['WOE'] = np.log(dataset['EventRate'] / dataset['NonEventRate']) return dataset['WOE'] # 使用示例 dataset = pd.read_csv('data.csv') woe_values = calculate_woe(dataset, 'feature', 'target') print("WOE values:", woe_values) ``` 以上就是利用 Python 计算 IV 和 WOE 的简单示例,根据数据的不同特点和需求,可以对代码进行相应的修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值