library(tidyverse)
library(mvtnorm)
Exercice
Simuler des données dans \(R^2\) issues d’un mélange de 2 vecteurs gaussien à 2 classes. Pour ce faire, il suffit de simuler une variable \(Y\) qui prend par exemple les valeurs 1 ou 2 avec probabilité \(p_1 = \mathbb{P}(C_1)\) et \(p_2=\mathbb{P}(C_2)\) respectivement. Puis, conditionnellement a la valeur de \(Y\), simuler un vecteur \(X\) qui suit une loi normale en dimension 2 (i.e. si \(Y = j\), \(X \sim N(\mu_j,\Sigma_j)\) pour \(j = 1, 2\)).
n <- 800; p1 <- 0.4; p2 <- 0.6; mu1 <- c(0.5,2); mu2 <- c(1.5,1)
Sigma1 <- diag(c(0.1,0.1)); Sigma2 <- diag(c(0.2,0.2))
y <- sample(c(1,2),size=n,prob=c(p1,p2),replace=TRUE)
y <- sort(y); y<-factor(y); y <- data.frame(y)
n1 <- sum(y==1);n2 <- sum(y==2)
x <- rbind(rmvnorm(n1,mu1,Sigma1),rmvnorm(n2,mu2,Sigma2))
x <- data.frame(x)
D <- cbind(x,y)
colnames(D) <- c("x1","x2","y")
summary(D)
## x1 x2 y
## Min. :-0.3863 Min. :-0.1987 1:306
## 1st Qu.: 0.5965 1st Qu.: 0.9008 2:494
## Median : 1.1171 Median : 1.4151
## Mean : 1.0918 Mean : 1.3875
## 3rd Qu.: 1.5710 3rd Qu.: 1.8804
## Max. : 2.6176 Max. : 3.0455
Que font les commandes suivantes ? View(D$x1)
, View(D[,1])
, View(D[[1]])
, View(D %>% select(x1))
Exercice
Que font les commandes suivantes ? View(subset(D,D[,"y"]==1))
, View(D %>% filter(y==1))
Tracer les deux ensembles de points sur un même graphique. Utiliser les commandes suivantes :
ggplot(D,aes(x = x1,y = x2,color = y)) + geom_point() + labs(title = "Nuage de points")
plot(D[,1:2],type="n",xlab="x1",ylab="x2",main="Nuage de points")
points(subset(D[,c("x1","x2")],D[,"y"]==1),col="red",pch=20)
points(subset(D[,c("x1","x2")],D[,"y"]==2),col="blue",pch=20)
Les données Iris, stockées sous R, sont très célèbres. Elles ont été collectées par Edgar Anderson.
Les variables considérérées sont mesurées sur 150 fleurs (trois espèces d’iris : iris setosa, iris versicolor et iris virginica) :
alt text
Pour afficher les données iris, taper simplement sur la console de R la commande iris
.
Exercice :
Visualiser les données iris. Afficher les stats descriptives.
Considérer les longueurs et la largeurs des pétales et tracer les trois ensembles de points sur un même graphique.
data(iris)
summary(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
## Median :5.800 Median :3.000 Median :4.350 Median :1.300
## Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
## 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
## Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
## Species
## setosa :50
## versicolor:50
## virginica :50
##
##
##
iris_B <- iris %>% select(Petal.Length,Petal.Width,Species)
ggplot(iris_B,aes(x = Petal.Length ,y = Petal.Width,color = Species)) + geom_point() + labs(title = "Nuage de points")
D <- iris_B; n <- nrow(D)
p <- 0.8
ntrain <- floor(n*p)
ind <- sample(1:n, ntrain, replace=FALSE);
Dtrain <- D[ind,]
Dval <- D[-ind,]
ggplot(Dtrain,aes(x = Petal.Length ,y = Petal.Width,color = Species)) + geom_point() + labs(title = "Nuage de points d'entrainement")
ggplot(Dval,aes(x = Petal.Length ,y = Petal.Width,color = Species)) + geom_point() + labs(title = "Nuage de points de validation")
Expliquer que fait la commande rep(1:K,ceiling(n/K))
et head(which(rep(1:B,ceiling(n/B)) == 1))
B <- 5
ind_Fold <- sample(rep(1:B,ceiling(n/B)),n)
#which(ind_Fold==1); length(which(ind_Fold==1))
#....
# Example : Pour le premier bloc
Dval <- D[ind_Fold==1,]
Dtrain <- D[ind_Fold !=1,]