【问题标题】:Calculate Multiple Information Value in R计算R中的多个信息值
【发布时间】:2021-11-21 14:15:42
【问题描述】:

我是 R 编程的新手,正在尝试兼职学习,所以提前为幼稚的编码和问题道歉。我花了大约 1 天的时间试图找出代码,但无法这样做,因此在这里询问。

https://www.kaggle.com/c/titanic/data?select=train.csv

我正在研究从 Kaggle 导入为 train_data 的火车 Titanic 数据集。我已经清理了所有 col 并在需要时将它们转换为因子。

我的问题是 2 倍:

1. 无法理解为什么这个公式将所有内容的 IV 值都设为 0。我做错了什么?

factor_vars <- colnames(train_data) 
all_iv <- data.frame(VARS=factor_vars, IV=numeric(length(factor_vars)),STRENGTH=character(length(factor_vars)),stringsAsFactors = F)
for (factor_var in factor_vars){


all_iv[all_iv$VARS == factor_var, "IV"] <- 
InformationValue::IV(X=train_data[, factor_var], Y=train_data$Survived)


 all_iv[all_iv$VARS == factor_var, "STRENGTH"] <- 
attr(InformationValue::IV(X=train_data[, factor_var], Y=train_data$Survived), "howgood")
}

all_iv <- all_iv[order(-all_iv$IV), ]

2. 我正在尝试创建自己的函数来计算 1 go 中多列的 IV 值,这样我就不必执行重复性任务,但是当我运行以下公式时,我得到了计数总计 0 和总计 1,而不是像我要求的那样分组的项目。同样,在这个例子中我做错了什么?

train_data %>% group_by(train_data[[3]]) %>%


summarise(zero = sum(train_data[[2]]==0),
one = sum(train_data[[2]]==1))

我得到输出

               zero   one
           
1                   549   342
2                   549   342
3                   549   342

我预计会有这样的答案:

    zero one



 1  80 136



 2  97  87



3 372 119

我的代码有什么问题?

3. 是否有任何可以为所有列提供 IV 值的预构建函数?在搜索时,我发现了 iv.mult 函数,但我无法让它工作。任何建议都会很棒。

【问题讨论】:

  • (1) 请看一下如何制作great reproducible example。 (2) 你认为IV 是什么?
  • @MartinGal:感谢您对可重现示例的建议。我已经完成了它,下次我会确保尽可能多地遵循,但是在这种情况下,我不知道如何附加 CSV 数据文件。

标签: r function dplyr formula


【解决方案1】:

让我们来看看你的问题:

1.

length(factor_vars)
#> [1] 12

length() 返回向量 factor_vars 的元素数。因此,您的代码 numeric(length(factor_vars)) 被评估为 numeric(12),它返回一个长度为 12 的数字向量,默认填充为零。

这同样适用于character(length(factor_vars)),它返回一个长度为 12 的字符向量,其中填充了空字符串 ""

  1. 您的代码未使用正确的 dplyr 语法。
library(dplyr)

library(dplyr)

train_data %>% 
  group_by(Pclass) %>%
  summarise(zero = sum(Survived == 0),
            one = sum(Survived == 1))

返回

# A tibble: 3 x 3
  Pclass  zero   one
   <dbl> <int> <int>
1      1    80   136
2      2    97    87
3      3   372   119

这很可能是您要查找的内容。

  1. 不知道IV的意思。

【讨论】:

  • 感谢您抽出宝贵时间指导我的查询 :) IV 表示信息价值。我目前正在使用库(信息值)和命令 IV。但是,这只能让我一次评估 1 个自变量的 IV,并且我不想输入 15 个自变量的代码,因此我试图找到一个库/命令,它可以让我创建一个包含所有自变量与依赖项的表1 次变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-15
  • 1970-01-01
  • 2015-01-04
  • 2016-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多