install.packages(c("cluster", "factoextra"))Clustering flou en R (FANNY, C-Means)
Clustering doux : attribuez à chaque observation un degré d’appartenance à chaque regroupement, plutôt qu’une seule étiquette nette
Un guide pratique du clustering flou (doux) en R : mettez vos données à l’échelle, exécutez fanny() du package cluster, lisez la matrice des coefficients d’appartenance et le coefficient de partition de Dunn, visualisez les regroupements flous avec fviz_cluster() de factoextra, et calculez la même chose avec l’algorithme des c-means flous (e1071::cmeans) — sur un exemple détaillé USArrests, avec une règle claire indiquant quand le flou l’emporte sur le clustering dur.
- Le clustering flou est un clustering doux : au lieu de forcer chaque observation dans exactement un groupe, il attribue à chaque observation un coefficient d’appartenance à chaque regroupement — un nombre de 0 à 1, dont la somme vaut 1 sur l’ensemble des regroupements.
- Cela contraste avec le clustering dur (k-means, k-medoids/PAM), où chaque objet appartient à un seul regroupement et à rien d’autre.
- Les points proches d’un centre de regroupement y ont une appartenance élevée ; les points sur une frontière répartissent leur appartenance entre les regroupements voisins — ce qui vous indique à quel point l’affectation est fiable.
- Exécutez-le avec
fanny(df, k)du package cluster (FANNY = analyse floue). Le résultat contient la matrice d’appartenance, le coefficient de partition de Dunn (le degré de flou de la solution) et leclusteringnet le plus proche. - Mettez d’abord vos variables à l’échelle (
scale()) — comme toute méthode fondée sur les distances, le clustering flou laisserait sinon une variable à grande unité dominer. - Visualisez avec
fviz_cluster()de factoextra ; l’algorithme des c-means flous (e1071::cmeans) est l’autre voie courante, présentée à la fin.
Introduction
La plupart des méthodes de clustering sont dures : chaque observation est affectée à exactement un regroupement, un point c’est tout. k-means et k-medoids (PAM) fonctionnent tous deux ainsi — un État est soit dans le regroupement 1, soit dans le regroupement 2, jamais un peu des deux.
Le clustering flou — également appelé clustering doux — assouplit cette règle. Chaque observation reçoit un ensemble de coefficients d’appartenance, un par regroupement, chacun étant un nombre de 0 à 1 indiquant à quel degré l’observation appartient à ce regroupement. La somme des coefficients vaut 1 sur l’ensemble des regroupements. Un point situé en plein centre d’un groupe y a une appartenance proche de 1 et proche de 0 ailleurs ; un point coincé sur la frontière entre deux groupes pourrait se répartir en 0.55 / 0.45 — et cette répartition est une information que vous n’obtenez tout simplement pas d’une étiquette dure.
Cela compte chaque fois que vos groupes se chevauchent ou que vos frontières sont réellement incertaines. Un client qui est surtout « acheteur économe » mais un peu « dépensier occasionnel », un type de cellule situé entre deux états, un État dont le profil criminel est limite — le clustering flou rapporte l’ambiguïté au lieu de la masquer derrière une seule étiquette nette.
La méthode floue la plus répandue est celle des c-means flous (FCM) : comme k-means, elle représente chaque regroupement par un centroïde, mais elle calcule ce centroïde comme la moyenne de tous les points pondérés par leur degré d’appartenance au regroupement, et elle laisse les points contribuer partiellement. Cette leçon utilise la fonction fanny() de R (une implémentation de l’analyse floue), puis présente la voie étroitement liée cmeans().
Cette leçon fait partie de la série Analyse de cluster en R. Le clustering flou est le pendant doux des méthodes de partitionnement dures k-means et k-medoids/PAM ; la règle de dissimilarité dont il dépend est traitée dans mesures de distance pour le clustering.
Packages R requis
Nous utiliserons deux packages : cluster pour calculer le clustering flou avec fanny(), et factoextra pour visualiser le résultat. (La section optionnelle sur les c-means flous à la fin utilise aussi e1071.)
library(cluster)
library(factoextra)Les données
Nous utiliserons le jeu de données intégré USArrests : nombre d’arrestations pour 100 000 habitants pour Murder, Assault et Rape dans chacun des 50 États américains en 1973, plus le pourcentage de la population vivant en zone urbaine (UrbanPop). Les quatre variables sont continues, ce dont le clustering flou a besoin — et ce sont les mêmes données que celles employées par la leçon k-medoids, de sorte que vous pouvez comparer une partition dure et une partition douce des mêmes États.
Comme les variables sont sur des échelles très différentes (Assault se compte en centaines, Murder en un seul chiffre), nous les mettons à l’échelle d’abord avec scale() afin que chacune ait une moyenne de 0 et un écart-type de 1. Le clustering flou travaille sur les distances ; sans mise à l’échelle, la variable de grande magnitude dominerait :
data("USArrests") # Load the built-in data set
df <- scale(USArrests) # Standardize every variable (mean 0, sd 1)
# View the first 3 rows of the scaled data
head(df, n = 3) Murder Assault UrbanPop Rape
Alabama 1.24256408 0.7828393 -0.5209066 -0.003416473
Alaska 0.50786248 1.1068225 -1.2117642 2.484202941
Arizona 0.07163341 1.4788032 0.9989801 1.042878388
Calculer le clustering flou avec fanny()
La fonction fanny() du package cluster calcule le clustering flou. Le nom signifie fuzzy analysis clustering. Sa forme simplifiée est :
fanny(x, k, metric = "euclidean", stand = FALSE)x— une matrice / data frame numérique (les lignes sont les observations, les colonnes les variables), ou une matrice de dissimilarité.k— le nombre de regroupements souhaité à générer.metric— la métrique pour calculer les dissimilarités entre observations ("euclidean"ou"manhattan").stand— siTRUE, les variables sont standardisées avant le calcul des dissimilarités. Nous mettons à l’échelle en amont à la place, donc nous le laissons àFALSE.
Un objet fanny() renvoie plusieurs composantes que vous utiliserez constamment :
membership— une matrice donnant le degré auquel chaque observation appartient à chaque regroupement. Les colonnes sont les regroupements, les lignes les observations ; la somme de chaque ligne vaut 1.coeff— le coefficient de partition de Dunn F(k) : la somme de tous les coefficients d’appartenance au carré divisée par le nombre d’observations. Il varie entre 1/k et 1, et une forme normalisée (ramenée à 0–1) est également rapportée. Une valeur faible signifie un clustering très flou ; une valeur proche de 1 signifie un clustering presque net.clustering— le regroupement net le plus proche : le regroupement le plus probable de chaque observation (son appartenance argmax), si vous avez besoin d’une étiquette dure.
Exécutons-le maintenant. Nous mettons les données à l’échelle et demandons k = 2 regroupements :
library(cluster)
data("USArrests")
df <- scale(USArrests) # Standardize the data
res.fanny <- fanny(df, 2) # Compute fuzzy clustering with k = 2Ce seul appel a fait le travail ; tout ce dont nous avons besoin est désormais stocké dans res.fanny.
Lire les coefficients d’appartenance
La matrice d’appartenance est le cœur d’un résultat flou — c’est ce qui le rend doux. Chaque ligne est une observation, chaque colonne un regroupement, et la somme de la ligne vaut 1. Examinons les trois premiers États, le coefficient de Dunn et les étiquettes nettes les plus proches :
library(cluster)
data("USArrests")
df <- scale(USArrests)
res.fanny <- fanny(df, 2)
head(res.fanny$membership, 3) # Membership coefficients [,1] [,2]
Alabama 0.6641977 0.3358023
Alaska 0.6098062 0.3901938
Arizona 0.6862278 0.3137722
res.fanny$coeff # Dunn's partition coefficientdunn_coeff normalized
0.5547365 0.1094731
head(res.fanny$clustering) # Nearest crisp groups Alabama Alaska Arizona Arkansas California Colorado
1 1 1 2 1 1
Lisez la matrice d’appartenance une ligne à la fois. Alabama est à 0.66 / 0.34 — il appartient surtout au regroupement 1 mais présente une réelle attraction de 34 % vers le regroupement 2, c’est donc un membre du regroupement 1 assez fiable mais non certain. Alaska (0.61 / 0.39) est encore plus limite — il penche vers le regroupement 1 mais est presque partagé. Une méthode dure étiquetterait simplement les deux « regroupement 1 » et jetterait le doute ; le résultat flou le conserve. (Comparez : un point à 0.95 / 0.05 serait un membre exemplaire de son regroupement.)
Le coefficient de partition de Dunn vaut dunn_coeff = 0.555, avec une valeur normalized de 0.109. Comme le coefficient normalisé varie de 0 (flou maximal) à 1 (net), 0.109 nous indique qu’il s’agit d’une partition assez floue — les deux regroupements d’États américains se chevauchent beaucoup, ce qui correspond aux appartenances limites observées ci-dessus.
Enfin, clustering donne l’étiquette nette la plus proche par État — Alabama 1, Arkansas 2, et ainsi de suite — pour les cas où vous avez besoin d’une affectation unique à transmettre au code en aval.
Visualiser les regroupements flous
Il vaut toujours la peine de regarder les regroupements. Mais USArrests a quatre variables, alors lesquelles placer sur les axes d’un nuage de points ? La solution classique consiste à réduire les dimensions avec l’analyse en composantes principales (ACP) : l’ACP condense les quatre variables en deux nouvelles (les deux premières composantes principales) qui capturent l’essentiel de la variation, et vous tracez les points sur celles-ci.
fviz_cluster() de factoextra réalise l’ACP et le tracé à votre place — passez-lui le résultat de fanny(). Nous utilisons une ellipse de loi normale et la palette de revue jco, adaptée au daltonisme :
library(cluster)
library(factoextra)
data("USArrests")
df <- scale(USArrests)
res.fanny <- fanny(df, 2)
fviz_cluster(res.fanny,
ellipse.type = "norm", # normal-distribution concentration ellipse
repel = TRUE, # keep state labels from overlapping
palette = "jco", # colourblind-safe journal palette
ggtheme = theme_minimal(),
legend = "right")
Chaque point est un État, positionné par ses deux premières composantes principales et coloré selon son regroupement net le plus proche ; les ellipses délimitent chaque groupe. Remarquez comme les deux ellipses se chevauchent près du centre — ce chevauchement visuel est exactement le flou que la matrice d’appartenance a quantifié : les États situés dans le chevauchement sont ceux dont les appartenances sont partagées, comme l’Alabama et l’Alaska.
Évaluer le résultat avec la silhouette
Pour juger de la qualité de séparation des groupes (nets), tracez le coefficient de silhouette. Une largeur de silhouette proche de 1 signifie qu’une observation se situe confortablement à l’intérieur de son propre regroupement ; proche de 0 signifie qu’elle est sur une frontière. fviz_silhouette() dessine une barre par observation, groupées par regroupement :
library(cluster)
library(factoextra)
data("USArrests")
df <- scale(USArrests)
res.fanny <- fanny(df, 2)
fviz_silhouette(res.fanny, palette = "jco", ggtheme = theme_minimal()) cluster size ave.sil.width
1 1 22 0.32
2 2 28 0.44

Le résumé imprimé rapporte une largeur de silhouette moyenne d’environ 0.32 pour le regroupement 1 et 0.44 pour le regroupement 2 — des valeurs positives modestes, cohérentes avec la partition assez floue que le coefficient de Dunn avait déjà signalée. Quelques États dont les barres sont faibles ou légèrement négatives sont les cas limites que la matrice d’appartenance avait pointés.
L’algorithme des c-means flous (cmeans)
fanny() est une implémentation de l’analyse floue ; l’autre voie courante est l’algorithme des c-means flous (FCM) via cmeans() dans le package e1071. FCM est très proche de k-means — il alterne entre le recalcul de centroïdes pondérés et le recalcul des appartenances — et il expose un facteur de flou m qui contrôle le degré de douceur de la solution. Sa forme simplifiée :
cmeans(x, centers, iter.max = 100, dist = "euclidean", m = 2)x— une matrice de données numérique (les colonnes sont les variables, les lignes les observations).centers— le nombre de regroupements (ou les centres de regroupement initiaux).iter.max— le nombre maximal d’itérations.dist—"euclidean"ou"manhattan".m— le facteur de flou, un nombre supérieur à 1 fixant le degré de flou.mproche de 1 se comporte presque comme un k-means dur ; unmplus grand rend tout plus flou.m = 2est la valeur par défaut habituelle.
Ici, nous regroupons un sous-ensemble aléatoire de 20 États de USArrests en 4 regroupements flous et lisons la matrice d’appartenance et le clustering dur le plus proche :
library(e1071)
set.seed(123)
data("USArrests")
ss <- sample(1:50, 20) # A 20-state subset
df <- scale(USArrests[ss, ]) # Standardize the subset
cm <- cmeans(df, centers = 4, m = 2) # Fuzzy c-means, 4 clusters
head(cm$membership) # Membership coefficient matrix 1 2 3 4
New Mexico 0.11900295 0.03623019 0.24375817 0.60100869
Iowa 0.06874210 0.89416251 0.02214394 0.01495145
Indiana 0.77737867 0.12387056 0.06245775 0.03629302
Arizona 0.12096433 0.03370828 0.09112123 0.75420616
Tennessee 0.07272857 0.02634690 0.85647515 0.04444938
Texas 0.26282034 0.06592433 0.29049758 0.38075775
head(cm$cluster) # Nearest hard clusteringNew Mexico Iowa Indiana Arizona Tennessee Texas
4 2 1 4 3 4
La somme de chaque ligne de cm$membership vaut à nouveau 1 sur l’ensemble des quatre regroupements. Iowa est à 0.89 dans le regroupement 2 — un membre net et fiable — tandis que Texas répartit son appartenance entre les regroupements 1, 3 et 4 (0.26 / 0.07 / 0.29 / 0.38), un cas véritablement flou sans foyer dominant unique. Le vecteur cm$cluster est l’étiquette dure la plus proche (l’appartenance argmax de chaque point), pratique lorsque vous avez besoin d’une affectation unique.
Une façon élégante de voir une matrice d’appartenance entière est corrplot() — la taille/couleur de chaque cellule encode une valeur d’appartenance, ce qui vous permet de repérer d’un coup d’œil quelles observations sont nettes et lesquelles sont partagées :
library(corrplot)
corrplot(cm$membership, is.corr = FALSE)
Vous pouvez aussi tracer la partition c-means sur les composantes principales en passant à fviz_cluster() une simple liste contenant les données et le vecteur cluster dur :
library(factoextra)
fviz_cluster(list(data = df, cluster = cm$cluster),
ellipse.type = "norm",
ellipse.level = 0.68,
palette = "jco",
ggtheme = theme_minimal())
fanny() et cmeans() résolvent le même type de problème mais ne sont pas des implémentations identiques, de sorte que leurs appartenances et même les étiquettes nettes peuvent différer — et cmeans() dépend d’un démarrage aléatoire (d’où set.seed()). Utilisez fanny() lorsque vous voulez le coefficient de Dunn et un objet du package cluster ; tournez-vous vers cmeans() lorsque vous voulez un contrôle explicite sur le facteur de flou m et l’itération FCM.
Quand le flou l’emporte sur le clustering dur
Les méthodes floues et dures répondent à la même question — regrouper les données en k regroupements — mais diffèrent par ce qu’elles rapportent, et c’est cela qui détermine quand utiliser chacune :
| Dur (k-means, PAM) | Flou (FANNY, c-means) | |
|---|---|---|
| Affectation | un regroupement par observation | un degré d’appartenance à chaque regroupement |
| Frontières | une ligne nette | rapporte l’ambiguïté aux chevauchements |
| Sortie | un vecteur d’étiquettes | une matrice d’appartenance (+ une étiquette nette la plus proche) |
| Idéal pour | groupes bien séparés et propres | groupes qui se chevauchent, frontières douces, « à quel point fiable ? » |
Tournez-vous vers le clustering flou lorsque vos groupes se chevauchent réellement, lorsque les cas limites comptent (vous voulez savoir quelles observations sont ambiguës, pas les masquer), ou lorsqu’une appartenance partielle a du sens pour la suite — une expression génique entre deux états, des clients à cheval sur deux segments, des images au contenu mixte. Tournez-vous vers le clustering dur (k-means pour la vitesse, PAM pour la robustesse aux valeurs aberrantes) lorsque les groupes sont bien séparés et qu’une seule étiquette propre suffit.
Les c-means flous minimisent une somme des carrés intra-regroupement pondérée. Avec \(k\) regroupements, des observations \(x_i\), des centres de regroupement \(\mu_j\) et une appartenance \(u_{ij}\) (le degré auquel \(x_i\) appartient au regroupement \(j\)), l’objectif est
\[ J = \sum_{j=1}^{k} \; \sum_{x_i \in C_j} u_{ij}^{\,m}\,(x_i - \mu_j)^2 , \]
où \(m > 1\) est le facteur de flou. Le centroïde de chaque regroupement est la moyenne pondérée par l’appartenance de tous les points,
\[ \mu_j = \frac{\sum_i u_{ij}^{\,m}\, x_i}{\sum_i u_{ij}^{\,m}} , \]
ainsi un point contribue à un centre proportionnellement à la force avec laquelle il y appartient. L’appartenance \(u_{ij}\) décroît avec la distance au centre, et \(m\) règle la netteté de cette décroissance : \(m \to 1\) retrouve un k-means dur, tandis qu’un \(m\) plus grand brouille les appartenances. Comme k-means, l’algorithme n’atteint qu’un minimum local et dépend des poids initiaux, de sorte que des démarrages différents peuvent donner des résultats différents.
Essayez en direct
Exécutez la recette de clustering flou dans votre navigateur — aucune installation nécessaire. Essayez de remplacer k = 2 par un autre nombre de regroupements, ou lisez l’appartenance d’un État qui vous intrigue en indexant res.fanny$membership, puis ré-exécutez et regardez le graphique de regroupements se mettre à jour.
Vous ne savez pas si vos données appellent un clustering flou ou dur ? Demandez à Prova « mes regroupements se chevauchent-ils assez pour que des degrés d’appartenance m’apprennent davantage que des étiquettes dures ? » — elle répond avec du code R que vous pouvez exécuter sur votre propre jeu de données, puis vous aide à lire la matrice d’appartenance et le coefficient de Dunn. The runtime is the judge. Demander à Prova →
Problèmes courants
- Le facteur de flou
mrend tout trop flou (ou trop net). Danscmeans(),mcontrôle la douceur :mproche de 1 s’effondre vers un k-means dur, tandis qu’unmgrand pousse chaque appartenance vers1/k(aucun point n’appartient nulle part en particulier). Si toutes vos appartenances sont proches de1/k, abaissezm; la valeur par défaut courantem = 2est un bon point de départ.fanny()possède un argumentmemb.expqui joue le même rôle. - Chaque appartenance est proche de
1/k— le clustering semble dénué de sens. C’est une partition véritablement très floue, et le coefficient de Dunn sera faible (sa valeur normalisée proche de 0). Soit vos groupes se chevauchent réellement beaucoup, soitkest mauvais — essayez un autre nombre de regroupements, ou vérifiez si les données ont une structure de regroupement du tout (voir tendance au clustering). - Interpréter une observation répartie sur plusieurs regroupements. Une ligne comme
0.45 / 0.40 / 0.15n’est pas une erreur — c’est la méthode qui rapporte honnêtement une observation ambiguë située entre les regroupements 1 et- Utilisez les valeurs d’appartenance elles-mêmes (pas seulement l’étiquette nette la plus proche) lorsque l’ambiguïté compte en aval.
fanny()etcmeans()donnent des réponses différentes. Ce sont des implémentations différentes de la même idée, etcmeans()dépend d’une initialisation aléatoire. Fixez une graine pour la reproductibilité (set.seed()), et ne vous attendez pas à ce que les deux fonctions concordent exactement — utilisezfanny()pour le coefficient de Dunn et un objet du package cluster,cmeans()pour un contrôle explicite du facteur de flou.
Questions fréquentes
Le clustering flou (également appelé clustering doux) attribue à chaque observation un coefficient d’appartenance — une valeur de 0 à 1 — à chaque regroupement, plutôt que de la placer dans exactement un regroupement. La somme des coefficients vaut 1 sur l’ensemble des regroupements, de sorte qu’une observation peut appartenir, disons, à 60 % au regroupement 1 et à 40 % au regroupement 2. Cela contraste avec le clustering dur (k-means, k-medoids), où chaque objet appartient à un seul regroupement.
Dans le clustering dur, chaque observation est affectée à exactement un regroupement (une seule étiquette nette). Dans le clustering doux (flou), chaque observation reçoit un degré d’appartenance à chaque regroupement, de sorte que la méthode rapporte à quel point un cas limite est ambigu au lieu de forcer une étiquette propre. Utilisez le clustering doux lorsque vos groupes se chevauchent et que l’incertitude est informative ; utilisez le clustering dur lorsque les groupes sont bien séparés.
Deux voies courantes : fanny(df, k) du package cluster (FANNY = analyse floue), ou cmeans(df, centers = k, m = 2) du package e1071 (l’algorithme classique des c-means flous). Mettez d’abord vos données à l’échelle avec scale(), puis lisez la matrice d’appartenance (res$membership / cm$membership) et visualisez avec factoextra::fviz_cluster().
Un coefficient d’appartenance est le degré (de 0 à 1) auquel une observation appartient à un regroupement donné. Chaque observation a un coefficient par regroupement, et leur somme vaut 1. Une valeur proche de 1 signifie un membre central et fiable ; des valeurs partagées entre regroupements (par ex. 0.55 / 0.45) signalent une observation située sur la frontière entre les groupes.
Le coefficient de partition de Dunn F(k) mesure le degré de flou d’une partition : c’est la somme de tous les coefficients d’appartenance au carré divisée par le nombre d’observations, variant entre 1/k et 1. Une forme normalisée le ramène à 0–1. Une valeur proche de 1 signifie un clustering presque net ; une valeur faible signifie un clustering très flou. fanny() rapporte les deux sous res$coeff.
Testez vos connaissances
Utilisez les quatre mesures numériques du jeu de données intégré iris (écartez la colonne non numérique Species). Mettez-les à l’échelle, exécutez fanny() avec k = 3, affichez les premières lignes d’appartenance et le coefficient de Dunn, puis tracez le graphique de regroupements.
Les colonnes numériques sont iris[, 1:4]. Mettez-les à l’échelle, passez la matrice mise à l’échelle à fanny(..., 3), puis examinez res$membership, res$coeff et fviz_cluster(res, ...).
library(cluster)
library(factoextra)
# Numeric measurements only, scaled
df <- scale(iris[, 1:4])
res.fanny <- fanny(df, 3)
head(res.fanny$membership, 3) # membership coefficients
res.fanny$coeff # Dunn's partition coefficient
fviz_cluster(res.fanny, ellipse.type = "norm", repel = TRUE,
palette = "jco", ggtheme = theme_minimal())setosa se sépare proprement (appartenances élevées et fiables), tandis que de nombreuses fleurs versicolor et virginica ont des appartenances partagées — le chevauchement entre ces deux espèces est exactement là où le clustering flou se révèle utile.
Vérification rapide. Une observation a des coefficients d’appartenance de 0.52 dans le regroupement 1 et 0.48 dans le regroupement 2. Que vous apprend cela qu’une étiquette de clustering dur ne pourrait pas, et feriez-vous confiance à son affectation nette ?
La répartition presque égale (0.52 / 0.48) indique que l’observation se situe en plein sur la frontière entre les deux regroupements — c’est un cas ambigu. Une méthode dure l’étiquetterait simplement « regroupement 1 » et masquerait ce doute. Vous devriez traiter son affectation nette avec prudence : elle a atterri dans le regroupement 1 d’un cheveu seulement, et un petit changement dans les données pourrait la faire basculer. Les valeurs d’appartenance sont la sortie utile ici, pas l’étiquette dure.
Conclusion
Vous avez mis les données à l’échelle, exécuté fanny() du package cluster, lu la matrice d’appartenance (le degré d’appartenance de chaque observation à chaque regroupement) et le coefficient de partition de Dunn (le degré de flou de la solution), visualisé les groupes doux avec fviz_cluster(), évalué avec la silhouette, et calculé la même idée avec l’algorithme des c-means flous (e1071::cmeans). Le clustering flou est l’alternative douce aux méthodes dures : en rapportant une appartenance partielle, il conserve l’ambiguïté que k-means et k-medoids/PAM jettent — utilisez-le lorsque vos groupes se chevauchent et que les cas limites comptent.
Leçons connexes
- Clustering k-means — la méthode de partitionnement dure et rapide que le clustering flou adoucit. · k-medoids (PAM) — partitionnement dur robuste avec de vrais points de données comme centres. · Mesures de distance pour le clustering — la règle de dissimilarité dont dépend chaque méthode. · Tendance au clustering — vérifiez que vos données ont une structure de regroupement avant de les regrouper.
- Pour aller plus loin : k-means · k-medoids (PAM) · classification hiérarchique · mesures de distance · nombre optimal de regroupements. · Analyse de cluster — la série complète. · Machine Learning — le pilier.
Vous préférez un livre ? Practical Guide to Cluster Analysis in R est disponible en PDF téléchargeable — toutes les leçons de cette série, hors ligne et à vous.
Prouvez que vous savez le faire. Maîtrisez toute la série Analyse de clustering en R — suivez votre parcours, construisez des projets et obtenez un certificat.
Passez à Pro — Prova illimité sur vos propres données et un certificat vérifiable qui atteste la compétence.
dès 15 $/mois facturé annuellement
✓ Vous êtes Pro — continuez. The runtime is the judge.
Prêt à passer à la vitesse supérieure ?
Cette leçon est reproductible : chaque figure a été produite par le code présenté — modifiez n’importe quel bloc et exécutez-le, et le bac à sable + le quiz se ré-exécutent en direct dans votre navigateur. The runtime is the judge.
Réutilisation
Citation
@online{2026,
author = {},
title = {Clustering flou en R (FANNY, C-Means)},
date = {2026-06-24},
url = {https://www.datanovia.com/learn/machine-learning/clustering/fuzzy-clustering},
langid = {fr}
}