我正在尝试在 R 软件中使用 smbinning 包来找到某个变量的最佳分箱。运行命令
result=smbinning(df=bop,y="FLAG_TARGET",x="VL_TOTL_REND",p=0.05)
返回以下错误消息:
“未找到目标 (y) 或它不是数字”
这里发生了什么?FLAG_TARGET
是数字,我已经尝试将数据格式更改为整数,但它不起作用。
这个问题有解决方案吗?
我正在尝试在 R 软件中使用 smbinning 包来找到某个变量的最佳分箱。运行命令
result=smbinning(df=bop,y="FLAG_TARGET",x="VL_TOTL_REND",p=0.05)
返回以下错误消息:
“未找到目标 (y) 或它不是数字”
这里发生了什么?FLAG_TARGET
是数字,我已经尝试将数据格式更改为整数,但它不起作用。
这个问题有解决方案吗?
这是因为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