Я пытаюсь создать панель инструментов RЯ хочу опубликовать его в Интернете через Travis и Shinyapps.io.
Вот приложение, которое я пытаюсь разместить онлайн: https://loicpalma.shinyapps.io/Test_Shiny/ Код можно найти здесь: https://github.com/loicpalma/Shiny_App
Мое приложение отлично работает локально, но я получаю ошибку "out of memory"
в журналах, когда пытаюсь выполнить этот конкретный код:
plot_all_ROCS <- eventReactive(input$go5, {
set.seed(1337)
test_svm_plot = test
predictions_svm <- predict(svm_classifier(),newdata = test_svm_plot, probability=T)
svm_predict_obj <- mmdata(as.numeric(predictions_svm),test_svm_plot$Class)
svm_performance <- evalmod(svm_predict_obj)
test_xgb_plot = test
predictions_xgb= predict(xgb_classifier()
, newdata = as.matrix(test_xgb_plot[, colnames(test_xgb_plot) != "Class"])
, ntreelimit = xgb_classifier()$bestInd)
xgb_predict_obj <- mmdata(as.numeric(predictions_xgb),test_xgb_plot$Class)
xgb_performance = evalmod(xgb_predict_obj)
test_knn = test
predictions_knn <- predict(knn_classifier(),newdata = test_knn, type="prob")
predictions_knn <- predictions_knn[,"1"]
knn_predict_obj <- mmdata(as.numeric(predictions_knn),test_knn$Class)
knn_performance = evalmod(knn_predict_obj)
test_glm = test
predictions_logreg <- predict(logreg_classifier(),newdata = test_glm, type = "response")
logreg_predict_obj <- mmdata(predictions_logreg,test_glm$Class)
logreg_performance = evalmod(mdat = logreg_predict_obj)
svm_df <- fortify(svm_performance)
logreg_df <- fortify(logreg_performance)
knn_df <- fortify(knn_performance)
xgb_df <- fortify(xgb_performance)
svm_df$classifier <- "SVM"
logreg_df$classifier <- "LOGIT"
knn_df$classifier <- "KNN"
xgb_df$classifier <- "XGB"
performance_df <- rbind(svm_df, logreg_df, knn_df, xgb_df)
roc <- performance_df[performance_df$curvetype == "ROC",]
ggplot() +
# green plot
geom_line(data=roc, aes(x=x, y=y,colour=classifier)) +
geom_abline(intercept=0, slope=1, linetype = "dashed") +
ylab("Sensitivity") +
xlab("1-Specificity") +
ggtitle("ROC Comparison") +
labs(colour = "Type of Model:")
})
Действительно, я знаю, что получаю это "out of memory"
ошибка, потому что ограничение установлено в 1 ГБ (бесплатная версия) и что я слишком много спрашиваю из shinyapps.io в одном submitButton
.
Однако мне нужно снова сделать прогноз для всех моделей, потому что кажется Я не могу найти способ сохранить их раньше. Позвольте мне объяснить:
Вот пример для модели knn:
knn_classifier <- eventReactive(input$go4, {
set.seed(1337)
classifier_knn <- knn3(Class ~ .
, data = train_smote_maison
, k = input$k)
})
output$knn <- renderPrint({
print(knn_classifier())
})
output$conf_knn <- renderPlot({
set.seed(1337)
test_knn = test
predictions_knn <- predict(knn_classifier(),newdata = test_knn, type="prob")
predictions_knn_conf <- predictions_knn[,"1"]
conf_knn = cbind(test_knn,predictions_knn_conf)
colnames(conf_knn)[colnames(conf_knn)=="predictions_knn_conf"] <- "predicted"
plot_confusion_matrix(conf_knn, "K-Nearest-Neighbors")
})
output$plot_ROC_knn <- renderPlot({
set.seed(1337)
test_knn = test
predictions_knn <- predict(knn_classifier(),newdata = test_knn, type="prob")
predictions_knn <- predictions_knn[,"1"]
knn_predict_obj <- mmdata(as.numeric(predictions_knn),test_knn$Class)
knn_performance <- evalmod(knn_predict_obj)
plot(knn_performance, "ROC")
})
output$plot_PRC_knn <- renderPlot({
set.seed(1337)
test_knn = test
predictions_knn <- predict(knn_classifier(),newdata = test_knn, type="prob")
predictions_knn <- predictions_knn[,"1"]
knn_predict_obj <- mmdata(as.numeric(predictions_knn),test_knn$Class)
knn_performance <- evalmod(knn_predict_obj)
plot(knn_performance, "PRC")
})
В конце я хочу получить что-то вроде этого:
knn_classifier <- eventReactive(input$go4, {
set.seed(1337)
classifier_knn <- knn3(Class ~ .
, data = train_smote_maison
, k = input$k)
test_knn = test
predictions_knn <- predict(knn_classifier(),newdata = test_knn, type="prob")
predictions_knn_conf <- predictions_knn[,"1"]
conf_knn = cbind(test_knn,predictions_knn_conf)
colnames(conf_knn)[colnames(conf_knn)=="predictions_knn_conf"] <- "predicted"
knn_performance <- evalmod(knn_predict_obj)
knn_df <- fortify(knn_performance)
})
output$knn <- renderPrint({
print(knn_classifier())
})
output$conf_knn <- renderPlot({
plot_confusion_matrix(conf_knn, "K-Nearest-Neighbors")
})
output$plot_ROC_knn <- renderPlot({
plot(knn_performance, "ROC")
})
output$plot_PRC_knn <- renderPlot({
plot(knn_performance, "PRC")
})
inЧтобы сохранить в глобальной среде переменную knn_df
, чтобы мне не пришлось снова вычислять прогноз, когда я хочу выполнить сравнение моделей для ROC.
Мой вопрос заключается в следующем: Есть ли способ сохранить knn_df
из eventReactive () в виде фрейма данных или .rds, чтобы мне не приходилось вычислять его в конце, когда я хочу построить все ROC одновременно?