Как вы делаете перекрестную проверку в k-кратном размере для модели логистической регрессии? - PullRequest
0 голосов
/ 26 сентября 2019

Итак, я создал базовую модель логистической регрессии для R и не пытаюсь провести перекрестную проверку с использованием перекрестной проверки в k-кратном порядке.Я новичок в R и, следовательно, борюсь с тем, как это сделать .. любая помощь будет принята с благодарностью.

Кроме того, я изо всех сил пытаюсь понять выходную причину, которую я предполагал, если я делаю 10-кратное увеличение, тогда будет 10 различных значений, но это не появляется?Пожалуйста, помогите тебе!

Это полная логистическая модель

library(caret)
library(mlbench)
library(ggplot2)
library(caTools)
library(boot)

my_data3 <- read.csv('C:/Users/Magician/Desktop/E-sports/R files/AvangarStats.csv', header=TRUE, stringsAsFactors = FALSE)

my_data3
#converting Map names to the calculated win probability
my_data3[my_data3$Map == "Dust2", "Map"] <- 0.631579
my_data3[my_data3$Map == "Inferno", "Map"] <- 0.630435
my_data3[my_data3$Map == "Mirage", "Map"] <- 0.627907
my_data3[my_data3$Map == "Nuke", "Map"] <- 0
my_data3[my_data3$Map == "Overpass", "Map"] <- 0.514286
my_data3[my_data3$Map == "Train", "Map"] <- 0.53125
my_data3[my_data3$Map == "Vertigo", "Map"] <- 0.705882
my_data3[my_data3$Map == "Cache", "Map"] <- 0.555556
#converting W and L to 1 and 0
my_data3$WinorLoss <- ifelse(my_data3$WinorLoss == "W", 1,0)
my_data3$WinorLoss <- factor(my_data3$WinorLoss, levels = c(0,1))

#converting Map to numeric characters
my_data3$Map <- as.numeric(my_data3$Map)

#Logistic regression model
glm.fit <- glm(WinorLoss ~ Map, family=binomial, data=my_data3)

summary(glm.fit)
#make predictions on the training data
glm.probs <- predict(glm.fit, type="response")

glm.pred <- ifelse(glm.probs>0.5, 1, 0)

attach(my_data3)
table(glm.pred,WinorLoss)

mean(glm.pred==WinorLoss)

#splitting the data for trying and testing
Split <- sample.split(my_data3, SplitRatio = 0.75)
traindata <- subset(my_data3, Split == "TRUE")
testdata <- subset(my_data3, Split == "FALSE")


glm.fit <- glm(WinorLoss ~ Map, 
               data=traindata, 
               family="binomial")
glm.probs <- predict(glm.fit,
                     newdata=testdata,
                     type="response")
glm.pred <- ifelse(glm.probs > 0.5, "1", "0")

table(glm.pred, testdata$WinorLoss)

mean(glm.pred == testdata$WinorLoss)

summary(glm.fit)

#changing the x axis to 0-100%, min map win prob - max map win prob
newdat <- data.frame(Map = seq(min(traindata$Map), max(traindata$Map), len=100))
newdat$WinorLoss = predict(glm.fit, newdata=newdat, type="response") 


ggplot(newdat, aes(x=Map,y=WinorLoss))+
  geom_point() +
  geom_smooth(method = "glm",
              method.args = list(family="binomial"),
              fullrange = TRUE,
              se = FALSE) +
              xlim(0,1) +
              ylim(0,1)
...