-2
votes

Regroupement avec nombre inconnu de grappes

J'ai besoin de trouver des connexions appartenant à la même personne. La tâche doit être résolue dans l'environnement Python. J'ai un jeu de données avec des actions utilisateur. À partir de ces actions, j'ai créé le N Nombre de fonctionnalités: XXX PRE>

En outre, il existe un jeu de données de formation avec des paires de logines, qui appartient probablement à la même personne. P>

- login_A 
- login_B 
- person_id


2 commentaires

Essayez la méthode de Dbscan. Il n'a pas besoin de connaissances sur le nombre de clusters dans l'ensemble de données.


Si vous voulez simplement parcourir l'ensemble des paires pour trouver toutes les connexions qui appartiennent probablement à la même personne, vous pouvez aussi bien avoir un BFS , répété jusqu'à ce que toutes les connexions aient été couvertes. D'autre part, si vous voulez un algorithme de clustering réel, essayez DBSCAN ou clustering agglomératif


3 Réponses :


0
votes

Je ne suis pas incroyablement bien versé dans ce genre de chose, mais ma pensée serait que vous affectiez les centres de cluster pour être le point médian entre les deux connexions pour chaque personne et donner à chaque cluster l'étiquette des connexions de la personne_id Il a été créé à partir de. Ensuite, lorsque vous classerez, vous trouvez le centre de cluster le plus proche et assignez que vous connectez que la personne ID.


0 commentaires

0
votes

Je vous conseillerais d'essayer des algorithmes de SK-apprendre Module de clustering sklearn.cluster . Il y a beaucoup de choses disponibles, parmi les algorithmes de regroupement les plus courants que vous trouverez sur le marché. Et il est vraiment facile à utiliser, vous pouvez exécuter un algorithme de clustering assez complexe avec quelques lignes de code.

Certaines d'entre elles ont besoin du nombre de grappes à l'avance, mais ce n'est pas le cas de tous.

Par exemple, le clustering hiérarchique peut être utilisé pour obtenir n'importe quel nombre de grappes (il y a de belles explications sur cette page ).
Vous pouvez également utiliser DBSCAN si vous avez des points solitaires qui n'appartiennent à aucun cluster ne vous dérangent pas.

Edit: Dans la description de votre problème, je ne suis pas sûr que le regroupement est ce que vous voulez faire. Dans le cas d'une grande communauté d'utilisateurs, nous utiliserions la regroupement pour construire quelques communautés de personnes (clusters) qui ont des points communs et sont plutôt similaires à l'autre.


0 commentaires

0
votes

Vous avez Training Data.

Puis une approche supervisée surperformera toujours une approche non surveillée, telle que le regroupement. C'est le mauvais outil pour votre problème.

Apprenez à classer si deux actions appartiennent au même utilisateur ou non.


0 commentaires