概率变异数据框

Posted

技术标签:

【中文标题】概率变异数据框【英文标题】:Probabilistically mutate dataframe 【发布时间】:2021-10-19 08:33:10 【问题描述】:

给定

pd.DataFrame('feature': [0.5,0.1,0.3,0.2,0.6,0.4,0.3], 'label': [0,1,2,2,1,2,0])

我想应用以下规则:对于所有 feature 大于 0.2 的行,它们的标签有 60% 的机会更改为 2。否则它将保持不变。

我的解决方案是:

df.loc[df.feature > 0.2, 'label'] = [
    np.random.choice(x, p=(0.6,0.4)) for x in zip(np.full(len(df.feature > 0.2), fill_value=2), df.loc[df.feature > 0.2, 'label'])]

有没有更简单的矢量化方法来做到这一点?

【问题讨论】:

【参考方案1】:

想法是按百分比设置掩码,如this 解决方案,并仅设置更大的选定值,如0.2

N = 2
m = df.feature > 0.2
mask = np.random.choice([True, False], m.sum(), p=[0.6, 0.4])

df.loc[m, 'label'] = np.where(mask, N, df.loc[m, 'label'])

【讨论】:

以上是关于概率变异数据框的主要内容,如果未能解决你的问题,请参考以下文章

谁给我解释下遗传算法中的交叉概率,变异概率和代沟?

简要说明遗传算法中交叉和变异概率是如何设定的?

遗传算法,交叉概率,和变异概率,选择,通常在多少值,合适?

计算数据框中每一行的概率

使用过滤器/变异和 dplyr/tidyverse 逻辑对数据库进行分类[重复]

Ranger 预测数据框中每一行的类别概率