1

我正在尝试在 R 软件中使用 smbinning 包来找到某个变量的最佳分箱。运行命令

result=smbinning(df=bop,y="FLAG_TARGET",x="VL_TOTL_REND",p=0.05)

返回以下错误消息:

“未找到目标 (y) 或它不是数字”

这里发生了什么?FLAG_TARGET是数字,我已经尝试将数据格式更改为整数,但它不起作用。

这个问题有解决方案吗?

4

1 回答 1

1

这是因为bop不是数据框,你必须将 bop 转换为数据框as.data.frame(bop)。如果您查看完整的 smbinning 代码(https://github.com/cran/smbinning/blob/master/R/smbinning.R#L490),则有此块

i=which(names(df)==y) # Find Column for dependant
j=which(names(df)==x) # Find Column for independant
if (!is.numeric(df[,i]))
{ 
    return("Target (y) not found or it is not numeric")
} 

在将 y 设置为目标列名并将 x 设置为预测列名后,尝试运行

i = which(names(bop) == y)
j = which(names(bop) == x)
is.numeric(bop[,i])

如果 bop 不是数据框,它将返回FALSE. 跑跑跑完bop_dataframe <- as.data.frame(bop)之后

is.numeric(bop_dataframe[,i])

它应该返回TRUE

于 2017-08-07T07:29:38.307 回答