Documente Academic
Documente Profesional
Documente Cultură
a. optimism
b. pesimism
c. utilizarea trecutului
d. utilizarea prezentului
e. utilizarea viitorului
a. deschiderea
b. conştiinciozitatea
c. extrovertirea
d. agrearea
e. nevrotic
f. emoţional
> head(date)
> library(caret)
> library(e1071)
>date$WinLoss<-as.factor(date$`Win/Loss`)
> set.seed(101)
Setul de antrenare conţine 70% din date, iar setul de testare 30 % din
date.
>index
> setantrenare<-date[index==1,]
>setantrenare
> settestare<-date[index==2,]
>settestare
>levels(settestare$WinLoss) <-
make.names(levels(factor(settestare$WinLoss)))
Observatie:
> repeats = 3
> numbers = 10
> set.seed(1234)
> x = trainControl(method = "repeatedcv", number = numbers,repeats =
repeats, classProbs = TRUE,summaryFunction = twoClassSummary)
> tunel = 10
trControl se aplică lui "x", care a fost obținut prin intermediul funcţiei
trainControl() și tunelength este întotdeauna un întreg, care este folosit
pentru a regla algoritmul.
> model1
k reprezinta numarul celor mai apropiati vecini ai unei observatii;
ROC=aria de sus curba ROC; Sens=senzitivitatea; Spec=specificitatea.
Cea mai mare valoare a ariei de sub curba ROC este 0.9998625,
corespunzatoare modelului optim cu cei mai apropiati 23 vecini.
> plot(model1)
În cele din urmă, pentru a face predicții pe setul nostru de validare, vom
folosi funcția de predicție în care primul argument este modelul și al
doilea argument este dat de noile date pe care ne dorim predicțiile.
> head(valid_pred)
>perf_val
>auc<-auc@y.values[[1]]
> auc
>View(olive)
>install.packages("class")
>library(class)
Se elimina coloanele 1,2,3.
Variabila eticheta va fi aria (“area”).
>olive_1<-olive[,-c(1,2,3)]
>View(olive_1)
>olive_1<-data.frame(olive_1,olive$area)
>set.seed(123)
>dim(antrenare)[1]
>antrenare
Setul de testare:
>testare<-olive_1[ind==2,1:8]
>dim(testare)[1]
>testare
>etichetaantrenare<-olive_1[ind==1,9]
>etichetaantrenare
>length(etichetaantrenare)
>etichetatestare<-olive_1[ind==2,9]
>etichetatestare
Matricea de confuzie:
>tab<-table(true=etichetatestare, pred=predictie)
>tab
Elementele de pe diagonala principala reprezinta nr. de observatii corect
previzionate.
Restul sunt erori.
Eroarea de clasificare:
>mean(etichetatestare!=predictie)
Problema 3
Variabile:
Name artist
Rock type rock, classical, new wave
lvar, lave, lmax : media, varianta maximum frecvente
Lfener: indicator al amplitudinii sunetului
Lfreq: mediana pozitiei celor mai inalte 15 sunete acute in periodograma
>install.packages("tidyverse")
>library(tidyverse)
>library(caret)
>set.seed(123)
>View(music_sub)
Se elimina coloanele 1 si 2.
>date1<-date[,-c(1,2)]
>View(date1)
Functia createDataPartition din biblioteca caret imparte un set de date
in 2 submultimi. p=0.8 este proportia datelor din setul de antrenare
(80%).
list=FALSE : esantionul este afisat pe coloana
List=TRUE: esantionul este afisat pe linie
>training.sample<-date1$type %>% createDataPartition(p=0.8,
list=FALSE)
>training.sample
Setul de antrenare:
>train.data<-date1[training.sample,]
>train.data
Setul de testare:
>test.data<-date1[-training.sample,]
>test.data
Vom folosi biblioteca caret care automat testeaza diverse valori ale
numarului de vecini k, determinand k optim pentru care eroarea de
validare incrucisata este minima.
Pachetul caret poate preprocesa datele automat pentru a normaliza
variabilele predictive.
Vom folosi urmatoarele argumente in functia train():
trControl : stabileste o validare incrucisata repetata de 10 ori
preProcess: normalizeaza datele
tuneLength: specifica valorile posibile ale lui k (de la 1 la 20)
>model<-train(type ~ ., data=train.data, method="knn",
trControl=trainControl("cv", number=10), preProcess=c("center",
"scale"), tuneLength=20)
>plot(model)
Pe Ox: numarul de vecini k
Pe Oy: acuratetea modelului
>Hitters<- na.omit(Hitters)
>library(caret)
>set.seed(123)
>library(tidyverse)
>split
>train.data<-Hitters[split,]
>traindata
>test.data<-Hitters[-split,]
>test.data
>model$bestTune
K optim este 9.
>plot(predictions, test.data$Salary)