首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定用于删除低方差特性的阈值?

如何确定用于删除低方差特性的阈值?
EN

Data Science用户
提问于 2018-05-09 18:35:27
回答 2查看 11.6K关注 0票数 5

如何确定用于删除低方差特性的阈值?

特别是,我有100000个特性,差异看起来如下:

我可以拿平均值,用它来把这个平分到一半吗?

或者其他的分组方法?

EN

回答 2

Data Science用户

发布于 2018-05-09 23:53:41

您可以这样做几种方法,我可以按努力的升序列出:

  1. 选择一个对您和您的数据集来说似乎没有问题的值,然后将其从数据集中剪切到数据集中下面的变量。
  2. 创建一个给定阈值的函数,告诉您如果使用该阈值,将删除多少变量。然后创建一个简单的图,看看是否有某种层次的吸引力(这取决于您的目标模型,一旦数据准备好)。
  3. 使用一些更智能的函数,比如R中卡雷特包中的NearZeroVar函数

然而,对于这些方法总体上是否是最佳办法,有一些争论。看一下关于这个线程在交叉验证的一些讨论。引用那篇文章中的观点,如果是从写上述卡莱特包裹的人的书中引用的话--马克斯·库恩。

反对这种方法的论据说,您可能正在移动变量,尽管它们的方差很低,但实际上在解释目标(因变量)时可能非常强大。

我建议的最后一种方法是进入协方差领域,即查看变量对之间的这个共线性。我过去做过这件事,对我来说效果很好。基本算法如下所示:

  1. 计算所有变量之间的协方差矩阵。
  2. 找到协方差最大的对
    • 相关性(如果您更喜欢这种度量)
    • 计划是删除这两个变量中的一个

  3. 使用步骤1中的协方差矩阵,计算步骤2中这两个变量中哪一个与其余变量的协方差之和最高。
  4. 删除具有最大协方差和的变量。
  5. 重复步骤1-4,直到您达到所需的变量数,或者达到协方差或单个变量方差的阈值。

编辑:

这里是科学学习课吗,可以为您做基本的方差阈值-也有简短的教程。它们还提供了一些方法来进行递归特性选择,本质上类似于我前面概述的最后一种方法。

票数 2
EN

Data Science用户

发布于 2023-01-30 15:00:38

使用一个简单的熊猫函数,Dataframe.var() in for循环。

代码段

步骤-i(创建一个仅包含数值列的新数据)

代码语言:javascript
复制
df_num = df.select_dtypes(include ='number')

步骤- II (使用循环函数的过滤器列)

代码语言:javascript
复制
for col in df_num:
    if df_num[col].var() < 10:
        print(col,"----->", df_num[col].var())
票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/31453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档