gpt4 book ai didi

Python:sci-kit 中的特征选择学习正态分布

转载 作者:行者123 更新时间:2023-11-28 19:19:18 24 4
gpt4 key购买 nike

我有一个 pandas DataFrame,其索引是唯一的用户标识符、对应于唯一事件的列以及值 1(参加)、0(未参加)或 NaN(未被邀请/不相关)。对于 NaN,矩阵非常稀疏:有数百个事件,大多数用户最多只被邀请参加几十个。

我创建了一些额外的列来衡量“成功”,我将其定义为相对于邀请的出席率:

my_data['invited'] = my_data.count(axis=1)
my_data['attended'] = my_data.sum(axis=1)-my_data['invited']
my_data['success'] = my_data['attended']/my_data['invited']

假设以下为真:成功数据应服从均值为 0.80 且 s.d. 为正态分布。 0.10。当我查看 my_data['success'] 的直方图时,它不正常并且向左倾斜。这在现实中是否属实并不重要。我只想解决我在下面提出的技术问题。

所以这是我的问题:有些事件我认为不是“好”的,因为它们使成功数据偏离正常。我想对我的事件进行“特征选择”以选择其中的一个子集,这使得 my_data['success'] 的分布在 "convergence in distribution" 的意义上尽可能接近正常。 .

我查看了 scikit-learn“特征选择”方法 here并且“单变量特征选择”似乎很有意义。但我对 pandasscikit-learn 都很陌生,真的可以使用有关如何在代码中实际实现它的帮助。

约束:我需要保留至少一半的原始事件。

如有任何帮助,我们将不胜感激。请尽可能多地分享详细信息,我对这些库还很陌生,很想看看如何使用我的 DataFrame 执行此操作。

谢谢!

编辑:在进一步了解 scikit-learn 特征选择方法后,“递归特征选择”似乎在这里也有意义,但我不是确定如何使用我的“准确度”指标“接近正态分布的均值...”来构建它

最佳答案

请记住,特征选择是选择特征,而不是样本,即(通常)DataFrame 的列,而不是行。因此,我不确定特征选择是否是您想要的:我知道您想删除那些导致分布偏斜的样本?

此外,特征缩放(例如标准化)如何使您的数据变为均值 = 0 和 sd = 1 的正态分布?

等式就是 z = (x - mean)/sd

要将它应用到你的DataFrame,你可以简单地做

my_data['success'] = (my_data['success'] - my_data['success'].mean(axis=0)) / (my_data['success'].std(axis=0))

但是,不要忘记保留均值和标准差参数来转换您的测试数据。或者,您也可以使用 StandardScaler来自 scikit-learn

关于Python:sci-kit 中的特征选择学习正态分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29069909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com