Мне не удалось найти ответы от соответствующего поста к вызову factor (), производящему значения NA. Я все еще изучаю R, извините, если вы находите этот пост глупым. При первом вызове factor () в наборе данных создается 167 значений NA. С помощью upSample () столбец «Class» добавляется в набор данных, это то, что я прочитал из документации R (с помощью («upSample»)). После этой строки кода, с помощью str () я обнаружил, что она имеет аналогичную тенденцию, подобную столбцу «is_patient» (переменная предиктора / класса), и по сумме (is.na ()) она выдает 832 значения NA. Теперь определенно что-то не так. Я также получил предупреждение о вызове createDataPartition (). Я все еще двигался вперед в надежде на позитивность. Но я знал, что это станет ужасным, как и ожидалось, при обучении модели SVM это не удалось из-за значений NA. Вот ссылка на код, набор данных и изображения для ошибок:
https://github.com/JordanTheDodger/SVM- Ps: Код не длинный, поэтому я добавляю сообщение также:
library(readr)
library(party)
library(caret)
library(ggplot2)
library(pROC)
df <- read_csv(file.choose())
str(df)
head(df)
names(df)
df <- df[,-2]
sum(is.na(df))
df$alkphos[is.na(df$alkphos)] <- median(df$alkphos, na.rm = T)
mdf <- df
str(mdf$is_patient)
head(mdf)
#factor
mdf$is_patient <- factor(mdf$is_patient, levels = c(0,1))
str(mdf) #1st factor call 2 levels, 167 producing na values
sum(is.na(mdf))
set.seed(1234)
mdf <- data.frame(mdf)
str(mdf) # 1st data.frame call, 2 levels
names(mdf)
#updsmpling
mdf <- upSample(x=mdf, mdf$is_patient)
mdf <- mdf[sample(nrow(mdf)),]
names(mdf) # "Class" column is added
str(mdf)
sum(is.na(mdf)) #832 na values
mdf <- subset(mdf[c(1:10)])
sum(is.na(mdf))#416 NA values
data_part <- createDataPartition(y= mdf$is_patient, p=0.7, list=FALSE)
#spliting the dataset
training <- mdf[data_part,]
testing <- mdf[-data_part,]
str(training)
sum(is.na(training)) #292 NA values
trainCtrl <- trainControl(method = "repeatedcv", number = 10, repeats = 3)
set.seed(7777)
svmModel3 <- train(is_patient ~ ., data = training, method = "svmRadial",
trControl = trainCtrl, preProcess = c("center", "scale"),
tuneLength = 20)
svmModel3
predictor <- predict(svmModel3)