Si vous n’avez jamais utilisé de tutoriel “learnr”, familiarisez-vous d’abord avec son interface ici.
Ne vous trompez pas dans votre adresse mail et votre identifiant Github
N’oubliez pas de soumettre votre réponse après chaque exercice
Conformément au RGPD (Règlement Général sur la Protection des Données), nous sommes tenus de vous informer de ce que vos résultats seront collecté afin de suivre votre progression. Les données seront enregistrées au nom de l’utilisateur apparaissant en haut de cette page. Corrigez si nécessaire ! En utilisant ce tutoriel, vous marquez expressément votre accord pour que ces données puissent être collectées par vos enseignants et utilisées pour vous aider et vous évaluer. Après avoir été anonymisées, ces données pourront également servir à des études globales dans un cadre scientifique et/ou éducatif uniquement.
Le regroupement par les K-moyennes est une méthode simple d’analyse multivariée considérée comme moins efficace que le CAH. Cette méthode permet néanmoins de réaliser des regroupements sur de gros jeu de données, alors que la CAH neciessite trop de temps de calcul et de mémoire vive.
Le plus grand défaut de cette méthode est de ne pas proposer le nombre de groupe. Vous devez le fixer par vous même. Il existe néanmoins des outils pour vous aidez Sur base du jeu de données iris
, réalisez un graphique permettant d’estimer le nombre de groupes à employer dans la méthode des k-moyennes. La package factoextra propose un outil graphique permettant de donner une indication sur le nombre de groupes (k).
is <- read("iris", package = "datasets", lang = "fr")
summary(is)
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
is %>.%
select(., -species) %>.%
scale(.) %>.%
as_tibble(.) -> is_scale
# factoextra::fviz_nbclust(x, FUNcluster = kmeans, method = "wss")
is <- read("iris", package = "datasets", lang = "fr")
summary(is)
is %>.%
select(., -species) %>.%
scale(.) %>.%
as_tibble(.) -> is_scale
is %>.%
select(., -species) %>.%
scale(.) %>.%
as_tibble(.) -> is_scale
factoextra::fviz_nbclust(x, FUNcluster = kmeans, method ="wss")
is %>.%
select(., -species) %>.%
scale(.) %>.%
as_tibble(.) -> is_scale
factoextra::fviz_nbclust(is_scale, FUNcluster = kmeans, method = "wss")
#TODO
Réalisez à présent un regroupement avec la fonction kmeans() sur le jeu de donnée enviro
. Utilisez une valeur de K de 3
Ce tableau comprend 30 sites d’échantillonages avec 11 mesures environnementales.
Voici une courte description des variables étudiées (en anglais). Ces informations proviennent de la page d’aide ?ade4::doubs
summary(enviro)
dfs alt slo flo
Min. : 3.0 Min. :172.0 Min. :1.099 Min. : 84
1st Qu.: 544.5 1st Qu.:248.0 1st Qu.:1.831 1st Qu.: 420
Median :1752.0 Median :395.0 Median :2.565 Median :2210
Mean :1879.0 Mean :481.5 Mean :2.758 Mean :2220
3rd Qu.:3017.2 3rd Qu.:782.0 3rd Qu.:3.390 3rd Qu.:2858
Max. :4530.0 Max. :934.0 Max. :6.176 Max. :6900
pH har pho nit
Min. :77.00 Min. : 40.00 Min. : 1.00 Min. : 15.0
1st Qu.:79.25 1st Qu.: 84.25 1st Qu.: 12.50 1st Qu.: 50.5
Median :80.00 Median : 89.00 Median : 28.50 Median :160.0
Mean :80.50 Mean : 86.10 Mean : 55.77 Mean :165.4
3rd Qu.:81.00 3rd Qu.: 96.75 3rd Qu.: 56.00 3rd Qu.:242.5
Max. :86.00 Max. :110.00 Max. :422.00 Max. :620.0
amm oxy bdo
Min. : 0.00 Min. : 41.00 Min. : 13.00
1st Qu.: 0.00 1st Qu.: 80.25 1st Qu.: 27.25
Median : 10.00 Median :102.00 Median : 41.50
Mean : 20.93 Mean : 93.90 Mean : 51.17
3rd Qu.: 20.00 3rd Qu.:109.00 3rd Qu.: 52.75
Max. :180.00 Max. :124.00 Max. :167.00
DF_scale <- as_tibble(scale(DF))
kmeans. <- kmeans(X, centers = VALUES, nstart = VALUES1)
(DF <- broom::glance(kmeans.))
(DF <- broom::tidy(kmeans.))
#TODO
DF_scale <- as_tibble(scale(DF))
kmeans(X, centers = VALUES, nstart = VALUES1)
(DF <- broom::glance(kmeans.))
(DF <- broom::tidy(kmeans.))
kmeans. <- kmeans(scale(enviro), centers = 3, nstart = 25) # la valeur de nstart est par défaut à 1 mais augmenter cette valeur rend l'analyse plus robuste (le temps de calcul augmente malheureusement)
(glance_kmeans <- broom::glance(kmeans.))
(tidy_kmeans <- broom::tidy(kmeans.))
#TODO
Assurez vous d’avoir bien compris cet objet.
Afin de réaliser un graphique vous devez réaliser plusieurs étapes.
DF <- as_tibble(scale(DF)) # Scale transforme notre dataframe en matrice
OBJECT_KMEANS <- kmeans(DF, centers = VALUES, nstart = VALUES1)
broom::augment(OBJECT_KMEANS, DF) %>.%
rename(., cluster = .cluster) -> DF_kMEANS
DF_centers <- broom::tidy(OBJECT_KMEANS, col.names = names(DF))
chart(data = DF_kMEANS, YVAR ~ XVAR %col=% FACTOR) +
geom_point(alpha = 0.2) +
stat_ellipse() +
geom_point(data = DF_centers,
size = 5, shape = 17)
Réalisez à un objet Kmeans sur le jeu de données diamonds
avec un k = 4
. Réalisez ensuite un graphique du price ~ depth
en focntion des 4 groupes calculés.
diamonds_red <- read("diamonds", package = "ggplot2") %>.%
select(., -cut, -color, -clarity) %>.%
rename(., length = x, width = y, depth = z)
slice(., 1:15000)
skimr::skim(diamonds_red)
diamonds_red <- read("diamonds", package = "ggplot2") %>.%
select(., -cut, -color, -clarity) %>.%
rename(., length = x, width = y, depth = z)
slice(., 1:15000)
skimr::skim(diamonds_red)
DF <- as_tibble(scale(DF))
OBJECT_KMEANS <- kmeans(DF, centers = VALUES, nstart = VALUES1)
broom::augment(OBJECT_KMEANS, DF) %>.%
rename(., cluster = .cluster) -> DF_kMEANS
DF_centers <- broom::tidy(OBJECT_KMEANS, col.names = names(DF))
chart(data = DF_kMEANS, YVAR ~ XVAR %col=% FACTOR) +
geom_point(alpha = 0.2) +
stat_ellipse() +
geom_point(data = DF_centers,
size = 5, shape = 17)
diamonds_scale <- as_tibble(scale(diamonds_red))
diamonds_kmeans <- kmeans(diamonds_scale, centers = 4, nstart = 1)
broom::augment(diamonds_kmeans, diamonds_scale) %>.%
rename(., cluster = .cluster) -> diam_kmeans
diam_centers <- broom::tidy(diamonds_kmeans, col.names = names(diamonds_scale))
chart(data = diam_kmeans, price ~ depth %col=% cluster) +
geom_point(alpha = 0.2) +
stat_ellipse() +
geom_point(data = diam_centers,
size = 5, shape = 17)
# TODO
Vous venez de terminer votre séance d’exercice.
Laissez nous vos impressions sur cet outil pédagogique ou expérimentez encore dans la zone ci-dessous. Rappelez-vous que pour placer un commentaire dans une zone de code R, vous devez utilisez un dièse (#
) devant vos phrases.
# Ajout de commentaires
# ...
# Not yet...