fonction kmeans URGENT

Aller en bas

fonction kmeans URGENT

Message par Héloïse Verdier le Mer 7 Déc 2016 - 14:30

Bonjour !
Je tente de segmenter mes données en 3 groupes en fonction d'une variable en particulier, avec la fonction "kmeans".
Mes groupes se séparent par la variable "pg" (glandulosité du fruit, qui est binaire. présence = 1 absence = 0) et en fonction d'une variable continue [,11].
Seulement je n'arrive pas à lancer la commande ... ça me donne :
kmeans(data[data$pg==0,11])
Error in kmeans(data[data$pg == 0, 11]) :
 'centers' doit être une matrice numérique

Je ne comprends pas pk "centersé n'est pas numérique. Est ce que quelqu'un peut m'aider ??
Merci d'avance Smile

Héloïse Verdier

Nombre de messages : 6
Date d'inscription : 07/12/2016

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: fonction kmeans URGENT

Message par victornitho le Mer 7 Déc 2016 - 20:53

Bonsoir,

Vous n'avez pas dit combien de groupes vous vouliez (3 d'après ce que vous dites au début). C'est à ça que sert centers. Si j'ai bien compris ce que vous cherchiez à faire, il faut donc lancer la commande :

Code:
kmeans(data[data$pg==0,11], centers=3)

J'espère que ça résoudra votre problème.

Bonne soirée, Victor

victornitho

Nombre de messages : 11
Date d'inscription : 03/03/2014

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: fonction kmeans URGENT

Message par Héloïse Verdier le Jeu 8 Déc 2016 - 10:56

oui merci ça marche !
est ce que je peux lancer une représentation graphique ensuite à partir des résultats obtenus avec kmeans?

Héloïse Verdier

Nombre de messages : 6
Date d'inscription : 07/12/2016

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: fonction kmeans URGENT

Message par Florent Aubry le Jeu 8 Déc 2016 - 11:08

D'après la solution (le code), le problème est de déterminer trois sous-groupes dans le groupe des fruits dont la variable pg vaut 0, et ces trois sous-groupes sont définis à partir d'une seule variable, la variable '11'.
1) est-ce vraiment la meilleure solution que d'utiliser la méthode des kmeans pour partitionner une variable en 3 classes ?
2) quid des fruits dont pg vaut 1 ? En d'autres termes, est-ce que la 'solution' répond vraiment au problème initial ?

Florent Aubry

Nombre de messages : 174
Date d'inscription : 02/11/2015

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: fonction kmeans URGENT

Message par victornitho le Jeu 8 Déc 2016 - 11:11

Oui vous pouvez récupérer toutes les infos stockées par kmeans (les centres, les moyennes de chaque groupe, le nombre de valeurs de chaque groupe...) ce qui vous permettra de faire tous les graphiques que vous voulez.

Pour ça il suffit de stocker le résultats de kmeans dans un objet :

Code:
objet<-kmeans(data[data$pg==0,11], centers=3)

Ensuite vous pouvez obtenir toutes les infos en tapant "objet$" dans la console, R vous propose alors plein de possibilité dont $cluster, $centers, $size...

Peut-être que si vous ne travaillez sur Rstudio ça ne fonctionne pas, n'hésitez pas à me dire dans ce cas là, je ferai plus explicite

Victor

victornitho

Nombre de messages : 11
Date d'inscription : 03/03/2014

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: fonction kmeans URGENT

Message par Héloïse Verdier le Jeu 8 Déc 2016 - 11:48

Florent, en fait je voudrais séparer mes individus (rosiers) en 3 groupes distinctes en fonction du rapport longueur/largeur de la feuille, qui se différencient déjà par une variable = glandulosité du fruit. Avec absence de glandes = 0 et présence =1. Etant donné que je ne maîtrise pas bien R, j'ai essayé la fonction kmeans, sans savoir si c'était vraiment la meilleure solution ... cependant si vous avez d'autres idées je suis preneuse !

Héloïse Verdier

Nombre de messages : 6
Date d'inscription : 07/12/2016

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: fonction kmeans URGENT

Message par Héloïse Verdier le Jeu 8 Déc 2016 - 11:49

Merci Victor pour votre réponse, je vais essayer ! Smile

Héloïse Verdier

Nombre de messages : 6
Date d'inscription : 07/12/2016

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: fonction kmeans URGENT

Message par Florent Aubry le Jeu 8 Déc 2016 - 15:46

Le problème n'est pas un problème de R mais de d'abord de modèle.
D'après ce que je comprends de ta réponse, la glandulosité du fruit sépare déjà les rosiers en deux groupes distincts. Le problème est donc de savoir où se situent les deux autres groupes. Mais j'ai peut-être mal compris et ce que tu cherches peut être par exemple un certain intervalle du rapport qui constitue un groupe indépendamment de la glandulosité et deux groupes en dépendant ou autre chose. En fait, il me semble que tu cherches a trouver 3 groupes définis par des combinaisons à déterminer des deux variables. Avec une variable qualitative, une méthode de type arbre de décision pourrait être mieux adaptée. D'autre part, tu choisis arbitrairement (?) une variable secondaire, ne serait-il pas plus judicieux d'essayer de construire les groupes à partir de l'ensemble de toutes les variables. C'est ainsi qu'on procède généralement.

Florent Aubry

Nombre de messages : 174
Date d'inscription : 02/11/2015

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: fonction kmeans URGENT

Message par Héloïse Verdier le Sam 10 Déc 2016 - 22:08

Etant donné que la glandulosité est binaire, cette information me permet de différencier seulement 2 groupes .Je cherche donc une 3ème variable qui me permettrait de mettre en évidence un 3eme groupe (hybrides). J'ai essayé avec la variable "rapport longueur/largeur de la feuille" mais sans grand succès ... en fait c'est la première fois que j'utilise R et que je fais ce genre d'étude donc ce n'est pas du tout intuitif pour moi. Par rapport à ce que vous dites à la fin, j'ai déjà fait un arbre qui m'a permit de mettre en évidence 2 groupes avec les variables morpho discrètes. Mais pour visualiser l'hybridation c'est là que ça se complique

Héloïse Verdier

Nombre de messages : 6
Date d'inscription : 07/12/2016

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: fonction kmeans URGENT

Message par Florent Aubry le Lun 12 Déc 2016 - 8:54

Une mauvaise stratégie est d'essayer variable par variable. Il faut utiliser toutes les variables à la fois et tenter différentes approches.
Par arbre de décision : il faut soit le couper à l'endroit où il conduit à trois classes mais ce n'est pas une bonne solution. Une meilleure solution est d'essayer de couper l'arbre en utilisant les méthodes de pruning classiques. Sous R, il suffit de faire une recherche sur Internet avec les mots-clés 'pruning decision tree CRAN R' pour trouver les différentes méthodes.
Si tu veux continuer à utiliser les k-means, il faut recoder les différentes variables qualitatives de type étiquette sous forme de tableau disjonctif complet et les variables qualitatives ordinales peuvent être recodées par leur rang (fonction rank). De plus, la méthode des k_means necessitent généralement qu'on cherche plusieurs solutions en changeant les centres des clusters (et en utilisant soit les centroïdes soit les médoïdes) et qu'on choisisse la meilleure partition à partir d'un critère, par exemple rapport des variances intra-classes sur variance inter-classe minimale.

Florent Aubry

Nombre de messages : 174
Date d'inscription : 02/11/2015

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: fonction kmeans URGENT

Message par Héloïse Verdier le Mar 13 Déc 2016 - 20:23

Merci beaucoup pour votre réponse je vais faire des recherches ! Même si ce language est très complexe pour moi je pense que je vais m'en sortir Smile

Héloïse Verdier

Nombre de messages : 6
Date d'inscription : 07/12/2016

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: fonction kmeans URGENT

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum