因此,我正在尝试使用LIME来理解R中logit模型的预测。我知道我“不需要”,但是我试图说明该模型可以简单地理解为一个模型的作用。演示的起点。
但是我很难使它正常工作。我确信这是由于model.predict方面造成的,但是我的一些解决方案没有用。
基本上,这就是我想做的:
model.logit <- glm(formula = formula, data = build.dat, family = binomial(link = "logit"))
train.x <- build.dat[ , all.vars(formula[[3]])]
test.x <- reject.dat[1:100, all.vars(formula[[3]])]
explainer <- lime(train.x, as_classifier(model.logit ), n_bins = 20, quantile_bins = TRUE)
explain.me <- lime::explain(test.x[2 , ], explainer, n_labels = 1, n_features = 8, n_permutations = 5000,
feature_select = "forward_selection", type = "response" )
现在我得到了错误
Error in match.arg(type) :'arg' should be one of “link”, “response”, “terms”
但是在“石灰”代码中移动我的“类型=“响应””并不能解决问题。
并且我尝试创建一个函数“ predict_model.glm”,由于我在使用randomForest并使其正常工作时所发生的事情,因此我认为可以纠正此问题:
predict_model.glm <- function(x, newdata, type = "response" ) {
res <- as.data.frame(c(predict(x, newdata = newdata, type = type), 1-predict(x, newdata = newdata, type = type)))
}
但这似乎只会增加错误。
我确信这是由于我缺少“石灰”方面正在寻找的内容(因此我无法使用“ predict_model.glm”函数进行更正),但是我似乎在任何地方都找不到澄清之处。
任何帮助都会很棒,谢谢!
答案 0 :(得分:0)
您必须在predict_model.glm
中转换预测的输出。第一步,我建议打印type
和调用predict
的结果的第一行。取决于传入的类型,对glm的调用和返回的结果将有所不同-?predict_model
对此进行了提示:对于'raw',它是一个res,对于'prob',它是几率(或者对于线性而言型号:数值结果。)
总体而言,据我(希望)了解您的情况,类似于该功能的功能可能会让您迈出一步:
predict_model.glm <- function(x, newdata, type, ...) {
print(type)
res <- predict(x, newdata);
print(res[1])
data.frame(Response = res)
}