BN.FIT()中使用BN.FIT()中的数据类型错误在BNLEARN中不支持变量(类型:整数)



基于给定的网络结构,我为六个二进制变量(x1至x6)创建了100个实例的数据框。因此,它是存储在变量'input_params'中的0/1值的100 x 6数据框架。使用语句创建一个空图:

library(bnlearn) bn_graph = empty.graph(names(input_params))

但是,当我尝试使用

的网络中拟合上述参数('input_params')时

bn_nw <- bn.fit(bn_graph, input_params)

我有一个错误说
Error in data.type(x) : variable x1 is not supported in bnlearn (type: integer).

我应该做什么数据类型转换来避免此错误?目前在值中的0或1。

bnlearn中的函数bn.fit()计算每个变量的局部条件概率分布。

在离散情况下,我们期望categorical(因子函数)参数(在列中"fac1","fac2","fac3"):
fac_cols <- c("fac1","fac2","fac3")

是数据持续的数据(例如,来自传感器的测量值)数据需要为numeric类型(数字函数):
num_cols <- c("num1","num2","num3")

假设input_params是一个data.frame,我们需要通过以下方式转换两组列(fac_colsnum_cols):

input_params[,fac_cols] <- lapply(input_params[,fac_cols], as.factor)
input_params[,num_cols] <- lapply(input_params[,num_cols], as.numeric)

或使用dplyr

input_params <- input_params %>% mutate_at(vars(fac_cols), funs(as.factor)) %>% mutate_at(vars(num_cols), funs(as.numeric))

您需要将定性变量名称更改为一个字符,例如,您的名称年龄是年轻,成人,老年人的类别。现在将子组的名称更改为y,a,o我有一个像你这样的问题,并解决了

相关内容

  • 没有找到相关文章

最新更新