Не в состоянии предсказать горе в R - PullRequest
0 голосов
/ 25 января 2020

Я использовал эту формулу, чтобы получить горе с

library("woe")
woe.object <- woe(data, Dependent="target", FALSE, 
                  Independent="shop_id", C_Bin=20, Bad=0, Good=1)

Тогда я хочу предсказать горе для тестовых данных

test.woe <- predict(woe.object, newdata = test, replace = TRUE)

И это дает мне ошибку

Ошибка в UseMethod («предикат»): нет применимого метода для «предиката», примененного к объекту класса «data.frame»

Есть предложения, пожалуйста?

1 Ответ

0 голосов
/ 25 января 2020

Для прогноза вы не можете сделать это с пакетом woe. Вам нужно использовать пакет. Обратите внимание на маскирование функции woe, см. Ниже:

#let's say we woe and then klaR was loaded
library(klaR)

data = data.frame(target=sample(0:1,100,replace=TRUE),
shop_id = sample(1:3,100,replace=TRUE),
another_var = sample(letters[1:3],100,replace=TRUE))
#make sure both dependent and independent are factors
data$target=factor(data$target)
data$shop_id = factor(data$shop_id)
data$another_var = factor(data$another_var)

Вам нужны две или более зависимых переменных:

woemodel <- klaR::woe(target~ shop_id+another_var, 
data = data)

Если вы предоставите только одну, у вас есть error:

woemodel <- klaR::woe(target~ shop_id, 
    data = data)

Ошибка в woe.default (x, grouping, weights = weights, ...): все факторы с уникальными уровнями. Нет бед рассчитывается! Кроме того: Предупреждающее сообщение: In woe.default (x, grouping, weights = weights, ...): только одна входная переменная. Имя переменной в результирующем объекте $ woe сохраняется только в вызове формулы.

Если вы хотите предсказать зависимую переменную только с одной независимой, то будет работать регрессия, подобная logisti c:

mdl = glm(target ~ shop_id,data=data,family="binomial")
prob = predict(mdl,data,type="response")
predicted_label = ifelse(prob>0.5,levels(data$target)[1],levels(data$target)[0])
...