regroupement
Bibliothèque de clustering et de clustering flou avec CLI intégré.
Installation
$ python3 setup.py install
L'exécution du script setup.py téléchargera tous les packages requis et installera les commandes suivantes, soit dans votre installation ~/.local/bin/ pour les répertoires locaux ou dans les répertoires /usr/lib/pythonX.X :
- CLUS: commande principale pour le clustering basé sur la partition.
- DCLUS: clustering basé sur la densité.
- Hclus: clustering hiérarchique.
- ECLUS: évaluer le clustering. La mise en œuvre de la manière différente d'évaluer les résultats de clustering en comparant deux partitions.
Usage
# Simple clustering with 500-components kmeans algorithm
$ clus dataset.csv kmeans -k 500 --max-iter 100 --eps 0.001 --header --save-clus
# Clustering with a weighted euclidean distance + matplotlib visualisation
$ clus dataset.npy kmeans --pairwise-distance weighted_euclidean --weights 1 0 1 1 --visualise
# Clustering from a .npz file with a 3D matplotlib visualisation
$ clus dataset.npz fcm --array-name clusters_center --visualise-3d
# Clustering with automatic dataset filetype guessing and with a normalization beforehand
$ clus dataset kmeans --file-type guess --normalization rescaling --save-clus
# DBSCAN clustering with a custom clustering results saving path
$ dclus dataset.csv dbscan --save-clus --seed 1 --format-filename-dest-results dbased_{clustering_algorithm}_{dataset}_{seed}FAIRE
- Réécriture complète du paradigme:
- Éloignez-vous du support CLI dans une interface de classe Python plus propre
- Concevoir des cours de clustering de base facile à utiliser et abstrait
- S'inspirez de la rivière
- Famille d'algorithmes "Nouveau": algorithmes en streaming / une seule pass.
- Verser Les FCM, plus les copies de Donnés Sont Faites plusieurs FOIS. Optimisable, Voir: https://pythonhosted.org/scikit-fuzzy/_modules/skfuzzy/cluster/_cmeans.html#cmeans
- Rendre Les Oplérations de Clustering Inplace (NE PAS DuPLIQUER LES DONNÉES)
- Méthodes de clustering à implémenter:
- https://github.com/scikit-learn/scikit-learn/blob/7b136e9/sklearn/cluster/k_means_.py#l1318
- OPTIQUE
- Décalage moyen
- Vérifier le hard_c_medoids
- Implémentateur UNE Detection Automatique de Header Si le Flag --Header n'est pas passé. Voir: https://stackoverflow.com/questions/32312309/check-if-header-exists-with-python-pandas
- Permettre au hc de prendre plusieurs paramétres pour les valeurs fcluster. Si plusieurs, alors sur les paramètres de l'applique. Option ajouter fcluster_value dans le nom de fichier.
- Les Opérations sur Médoïdes Sont Lentes. Les codes s'inspirer D'autres pour les Ameliorerer:
- https://github.com/vitordeatorreao/amproj/blob/844842a532524d5f514e7534da65c7a64ab7ef57/amproj/Distance/kmedoids.py
- https://github.com/agartland/utils/blob/e200d7e41039ca0053bd817c1d1857aab33bd503/kmedoids.py#l172
- https://github.com/brain-mapper/brainmapperv2/blob/63075bdca2428197fc18a1cf6c7403c2764e0664/ourlib/clustering.py#l293
- Application du décoreur "MemoryError_Fallback", D'UN Paramètre de Taulle de Chunk, Utiliser Puis Skary.Metrics.pairwise_Distances_Chunked
- Au Lieu de fixer un nom de fiche. L'Utilisateur Peut Aussi Très Bien passant Nom de Fichier Prédéfini.
- Implémentateur un algo d'Apilemment (de comparaison) d'affectations. Peut Être Utiliser https://fr.wikipedia.org/wiki/Algorithme_hongrois
- Revoir Les Séparations en sous-commands. Peut Être Faire: "CLUS Évaluer" OU "CLUS VISURIZER".
- S'inspirer de l'api d'Autres clustering softwares: ** https://elki-project.github.io ** https://www.cs.waikato.ac.nz/ml/weka ** https://www.knime.com/nodeguide/analytics/cluchering
- Implémenter la Lecture de Fichiers: ** Memmap: https://docs.scipy.org/doc/numpy/reference/generated/numpy.memmap.html
- S'inspirer des codes Suivants: ** https://github.com/overshiki/kmeans_pytorch/blob/master/kmeans.py
- Etudier Mesures: ** https://scikit-learn.org/stable/modules/generated/sklearn.metrics.adjusded_mutual_info_score.html ** https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.multivariate_normal.html ** https://davetang.org/muse/2017/09/21/adjusded-rand-index/
- TRUPVER MEILLEURE COUPE HC: ** https://www.scivendirect.com/science/article/pii/S0031320310001974
- Etudier D'autres Méthodes de normalisation, leurs effets et leurs mais ** https://en.wikipedia.org/wiki/Normalisation_(statistics) ** https://en.wikipedia.org/wiki/Feate_scaling ** https://sebastianraschka.com/articles/2014_about_feature_scaling.html
- Refactoring de l'architecture du code: ** clus.methods, qui offre toutes leshodes depuis ce module. ** clus.preprocessing, qui offre les Méthodes de normalisation, et de pondération ** CLUS.Visualization ** clus.évaluation ** clus.loading, toutes leshodes de Chargement des Données
- Changeur la façon Don't LesAmamètres du Clustering Sont Stockés et Don't Les Résultats Sont Sauvegardés. ** virer tous les params liés au nom de fichier. Ne Garden Que "File-Name-Prefix", et ajouter un uuid comme nom de fichier. ** Stocker tous Les Paramètres de clustering dans le dictionnaire résultats. clef "params". ** Maintenant que j'écris ça, je me rend compte que sacré serrait peut etre plus approprié pour la geste des resultats.
- Virer Silhouette, NE GARDER QUE Silhouette Échantillons, puis Retourner La Moyenne (Qui correspond à Silhouette-Score), sur Lapelle Silhouette_mean, et l'Écart Type Silhouette_Std.
- Etudier L'utilisation de: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise_distances_chunked.html
- Remettre les Références dans le module Doc de Chaque. Les retraiteurs des références Ci-Dessous.
- ESSAYEUR DE PROPOSERE UNE IMPLÉMENTATION DE K-MEANS UTILISANT CUDA: http://alexminnaar.com/2019/03/05/cuda-kmeans.html
- AJouter Param uuid: ajouter un param possible, {uuid4}, {uuid6}, etc dans le futur nom de fichier peut etre? Regarder Si sur Peut L'Initialy Avec le Temps, Sinon Faudra Faire Gaffe à l'Initialisation Avec Ginee AÉLOIRE, SINON C'EST POSSIBLKZ Que je retourne les Mêmes Uuid à Chaque Fis.
- AJouter des Mesures d'Evaluation: Papier pour mesures d'Eval Clustering: https://amstat.tandfonline.com/doi/abs/10.1080/01621459.1971.10482356#.xxzye6wxxry
- Etudier d'Autres normalisations et leurs effets: https://scikit-learn.org/stable/auto_examples/preprocessing/plot_all_scaling.html#results
Références
- [1] R. Krishnapuram; A. Joshi; O. Nasraoui; L. Yi, Algorithmes de clustering relationnel flou à faible complexité pour les transactions IEEE sur les systèmes flous (volume: 9, numéro: 4, août 2001), p595-607, doi: 10.1109 / 91.940971
- [2] Tolga Can, K-Means Exemple de cluster vide, http://user.ceng.metu.edu.tr/~tcan/ceng465_f1314/schedule/kmeansempty.html (archive: https://web.archive.org/web/20180626092955/http://user.ceng.metu.edu.tr/~tcan/ceng465_f1314/schedule/kmeansempty.html)
- [3] Ross, Timothy J., Fuzzy Logic with Engineering Applications, 3e éd. Wiley. 2010. ISBN 978-0-470-74376-8 pp 352-353
- [4] Joe Marino, Statistical Whitening, http://joelouismarino.github.io/blog_posts/blog_whitening.html (archive: https://web.archive.org/web/20180813034201/http://joelouismarino.github.io/blog_posts/blog_whitening.html)
- [5] TODO: L'application de la distance euclidienne pondérée équivaut à l'application de la distance euclidienne traditionnelle en données pondérées par la racine carrée des poids
- [6] James C.Bezdek, Robert Ehrlich, William Full, FCM: The Fuzzy C-Means Clustering Algorithme, https://doi.org/10.1016/0098-3004(84)90020-7, 1983