|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre régulier
![]() Olivier CaelenInscription : août 2007 Messages : 68 ![]() |
Hello,
Je cherche une p’tit fonction sas afin de trouver les K plus proches voisins dans un exemple de points. Le data-step suivant génère un ensemble de 100 observations. Code :
J’ai bien trouvé la fonction proc discrim pour appliquer une calssif via KNN. Mais ce que je cherche ce n’est pas de réaliser une classification mais vraiment obtenir la liste des K plus proches voisins. Merci! |
||
|
|
00
|
|
|
#2 | ||
|
Membre habitué
![]() Sébastien RinguedéInscription : janvier 2011 Messages : 61 ![]() |
avec un peu de data, un proc sort et un proc print, on s'en sort...
Code :
a+ Sébastien Ringuedé |
||
|
|
20
|
|
|
#3 | ||
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Si les calculs de distance à la main comme propose Sébastien te rebutent (pourtant ils peuvent bien s'automatiser avec un Array), il reste la proc FASTCLUS.
Code :
|
||
|
|
20
|
|
|
#4 | ||||||
|
Membre habitué
![]() Sébastien RinguedéInscription : janvier 2011 Messages : 61 ![]() |
Olivier, y'a un os...
ton programme donne les observations suivantes comme les plus proches : Code :
Code :
si je prends la somme des valeur absolue de l'écart à la cible, j'obtiens : Code :
c'est le fait que tu cites la variable ID dans la table seed qui crée le merdier...obs 50, 49, 51, 52, 53... a+ Sébastien Ringuedé |
||||||
|
|
10
|
|
|
#5 | ||
|
Membre régulier
![]() Olivier CaelenInscription : août 2007 Messages : 68 ![]() |
Hello,
Merci à vous trois pour votre aide Sur base du code de z6c3po, j’ai produit cette petite macro listOfKNN: Code :
|
||
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 467 ![]() |
Tu as raison Sébastien, j'ai voulu aller trop vite.
Dans la proc FASTCLUS, il manquait l'explicitation du rôle des variables (ID et les X1, X2, X3) ainsi que l'indispensable option MAXITER=0 pour qu'il n'essaye pas de déplacer le centre mais qu'il se contente de calculer la distance à celui qu'on fournit. La proc ci-dessous annule et remplace la précédente. Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com