-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Warsztaty Caret: Odp. do zadania 3 #5
Comments
Kod wygląda, bardzo ok. Jeśli chodzi o krzywą lift i AUC zamieszczam moje rozwiązanie. lift robimy tak jak pokazywałem na warsztatach, jeśli chodzi o AUC wykorzystujemy funkcję twoClassSummary zbiór który jest używany składa się z kolumny obs, która zawiera prawdziwe zmienne odpowiedzi, Active i Inactive, które zawierają pstwa przydzielenia do danej klasy i kolumnę pred z proponowanymi predykcjami (prognoza przyjmowała konkretną wartość, jeśli pstwo tej wartości było powyżej 0.5. data(cox2) preProcValues<-preProcess(coxik, method = c("nzv")) descrCor <- cor(coxik[,-229,with = FALSE]) coxik_train <- coxik[ trainIndex,] ctrl <- trainControl(method = "cv", classProbs = TRUE, lda_lift <- train(ACTIVITY ~ ., data = coxik_train, lift_results <- data.frame(ACTIVITY = coxik_test$ACTIVITY) lift_obj <- lift(ACTIVITY ~ LDA, data = lift_results) lift_results$Inactive <- predict(lda_lift, coxik_test, type = "prob")[,"Inactive"] |
Czy Krzysiek dał Ci wystarczającą odpowiedź? Można zamknąć issue? |
Witajcie.
Nie umiałem wypełnić wszystkich wymagań (lift curve, AUC). Bardzo proszę o uwagi, poprawki i komentarze.
Oto moje rozwiązanie:
###Zad3 zrobic dobra klasyfikacje u coxik (podzial zbioru 2:1) miara dobroci AUC, narysowac krzywa LIFT.
###źródła:
###użyłem https://www.r-bloggers.com/the-5th-tribe-support-vector-machines-and-caret/
###zastanawiałem się nad imbalanced data: np: https://www.r-bloggers.com/handling-class-imbalance-with-r-and-caret-an-introduction/
library(tidyverse)
set.seed(123)
data(cox2)
coxik<-cbind.data.frame(cox2Descr,cox2Class)
glimpse(coxik)
trainIndex <- createDataPartition(coxik$cox2Class, p = .66,
list = FALSE,
times = 1)
coxik_train <- coxik[ trainIndex,]
coxik_test <- coxik[-trainIndex,]
fitControl <- trainControl(
method = "repeatedcv",
number = 5,
repeats= 5)
svm.tune <- train(cox2Class ~ ., data = coxik_train,
method = "svmRadial", # Radial kernel
tuneLength = 9, # 9 values of the cost function
preProc = c("center","scale", "nzv","pca"), # Center and scale data
metric="Accuracy",
trControl=fitControl)
svm.tune$bestTune
#sigma C
#0.02004159 2
#Szukam wokół tych parametrów.
grid <- expand.grid(sigma = seq(0.015,0.025,by=0.00125),
C = seq(2.8,3.5,by=0.125))
svm.tune <- train(cox2Class ~ ., data = coxik_train,
method = "svmRadial",
preProc = c("center","scale", "nzv","pca"),
metric="Accuracy",
tuneGrid = grid,
trControl=fitControl)
svm.tune$bestTune
#sigma C
#0.01625 3.3
#Sprawdzam na zbiorze testowym:
plot(svm.tune) # bardzo czuły na sigmę, trzeba dalej stroić?
head(varImp(svm.tune, scale = FALSE)$importance,n=10)
myMetrics <- table(predict(svm.tune, coxik_test), coxik_test$cox2Class)
######## Active Inactive
#Active 10 6
#Inactive 20 120
myAccuracy <- sum(diag(myMetrics)/sum(myMetrics))
#0.8333333
The text was updated successfully, but these errors were encountered: