agrupación
Biblioteca de agrupación y agrupación difusa con CLI integrada.
Instalación
$ python3 setup.py install
Ejecutar el script setup.py descargará todos los paquetes requeridos e instalará los siguientes comandos en sus directorios ~/.local/bin/ para la instalación local o en los directorios /usr/lib/pythonX.X :
- CLUS: comando principal para la agrupación basada en la partición.
- DCLUS: agrupación basada en densidad.
- HCLU: agrupación jerárquica.
- ECLU: Evaluar la agrupación. Implementación de diferentes formas de evaluar los resultados de la agrupación comparando dos particiones.
Uso
# 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}HACER
- Paradigma completo Reescritura:
- Alejarse del soporte de CLI a una interfaz de clase de Python más limpia
- Diseño de clases de agrupación base fácil de usar y abstractas
- Inspirarse en el río
- Familia de algoritmo "Nuevo": transmisión/algoritmos de un paso.
- Pour les fcm, las copias de los plusieurs de Données Sont faites plusieurs fois. Optimizable, voir: https://pythonhosted.org/scikit-fuzzy/_modules/skfuzzy/cluster/_cmeanss.html#cmeanss
- Rendre Les Opérations de Clustering Inplace (NE Pas Dupliquer Les Données)
- Méthodes de Clustering à Implementer:
- https://github.com/scikit-learn/scikit-learn/blob/7b136e9/sklearn/cluster/k_means_.py#l1318
- ÓPTICA
- Desplazamiento medio
- Vérifier le hard_c_medoids
- Implementador 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 vierte valores de fcluster. Si Plusieurs, Alors en parámetros de apliques CES. Opción de Ajouter fcluster_value dans le nombre de archivo.
- Les Opérations sur Medoids Sont Lentes. S'Inspirer d'Aftres Codes Pour les Ameliorer:
- https://github.com/vitordeatorreao/amproj/blob/844842a532524d5f514e7534da65c7a64ab7ef57/amproj/distance/kmedoids.pys.
- https://github.com/agartland/utils/blob/e200d7e41039ca0053bd817c1d1857aab33bd503/kmedoids.py#l172
- https://github.com/brain-mapper/brainmapperv2/blob/63075bdca2428197fc18a1cf6c7403c2764e0664/ourlib/clustering.py#l293
- Aplicación du DecorSur "MemoryError_Fallback", D'un Parametre de Taille de Chunk, Puis Utiliser Sklearn.Metrics.Pairwise_Distances_Chunked
- Au Lear de Fixer Un nom de Fichier par Désfaut, Mettre tous les Paramètres par Défaut à none (et fixer en dur leurs valeus par désfaut dans la doc, ou formater selon un fichier), et ajouter les parametres non no pases par l'utilisateur au nom de fichier selon selon) L'SteLisateur Peut Aussi Très Bien Passer hijo nom de Fichier Prédéfini.
- Implementer un algo d'Ampariemment (De Comparaison) d'Affectations. Peut être Utiliser https://fr.wikipedia.org/wiki/algorithme_hongrois
- Revocando les séparations en sous-commandes. Peut être Faire: "CLUS EVALUA" OU "Clus Visualize".
- S'Inspirer de l'api d'Aftres Softwares: ** https://elki-project.github.io ** https://www.cs.waikato.ac.nz/ml/weka ** https://www.knime.com/nodeguide/analyticics/clusteringing
- Implementer 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.adjusted_mutual_info_score.html ** https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.multivariate_normal.html ** https://davetang.org/muse/2017/09/21/adjusted-rand-index/
- TROUNVER Meilleure Coupe HC: ** https://www.sciencedirect.com/science/article/pii/s0031320310001974
- Etudier d'Aftres Méthodes de Normalization, Leurs Effets et Leurs buts ** https://en.wikipedia.org/wiki/normalization_(statistics) ** https://en.wikipedia.org/wiki/Feature_Scaling ** https://sebastianraschka.com/articles/2014_about_feature_scaling.html
- Refactorización de L'Anchitecture du Code: ** Clus.metods, qui Offre Toutes Les Méthodes Depuis Ce Module. ** clus.processing, qui ofre les Méthodes de normalización, et de Pondération ** Clus.Visualization ** Clus.Evaluation ** Clus.Loading, Toutes Les Méthodes de Chargement des Données
- Cambiador la façon no les paramètres du clustering sont stockés et no les cultivaciones soneMauvegardés. ** Virer Tous les Params liés au nom de fichier. Ne garder que "archivo-name-prefix", et ajouter un uuid comme nom de fichier. ** Stocker Tous les Paramètres de Clustering Dans Le Dictionnaire Résultats. Clef "parámetros". ** Mantenimiento que j'écris ça, je me rends compte que sagrada seral peut etre más apropié vert la gestión des résultats.
- Silhouette de Virer, NE Garder Que Silhouette-Samples, Puis Returner La Moyenne (qui corresponde à Silhouette-score), en Lapelle Silhouette_mean, et l'Ecart Tipo Silhouette_std.
- Etudier L'Stilization de: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise_distances_chunked.html
- REMETTRE LES REFérencias Dans La Doc de Chaque Módulo. Les jubilado des références ci-desessous.
- Ensayer de propuesta de propuesta UNE Implemation de K-Means utilisant Cuda: http://alexminnaar.com/2019/03/05/cuda-kmeans.html
- Ajouter Param uuid: Ajouter un param posible, {uuid4}, {uuid6}, etc dans le futur nom de fichier peut etre? Considerador SI en Peut L'Initialiser Avec Le Temps, Sinon Faudra Faire Gaffe à l'Inicialization Avec Graine Aléatoire, Sinon C'est Possiblkz Que Je Retourne les Mêmes uuid à chaque fois.
- Ajouter des Mesures d'Evaluation: Papier Pour Mesures d'Evs Clustering: https://amstat.tandfonline.com/doi/abs/10.1080/01621459.1971.10482356#.xxzye6wxxry
- Etudier D'AfTres Normalisations et Leurs Effets: https://scikit-learn.org/stable/auto_examples/processing/plot_all_scaling.html#results
Referencias
- [1] R. Krishnapuram; A. Joshi; O. Nasraoui; L. Yi, algoritmos de agrupación relacional difusa de baja complejidad para la minería web, transacciones IEEE en sistemas difusos (volumen: 9, número: 4, agosto de 2001), P595-607, doi: 10.1109/91.940971
- [2] Tolga Can, K-Means vacío Ejemplo de clúster, http://user.ceng.metu.edu.tr/~tcan/ceng465_f1314/schedule/kmeansempty.html (Archivo: https://web.archive.org/web/20180626092955/http://user.ceng.metu.edu.tr/~tcan/ceng465_f1314/schedule/kmeansempty.html)
- [3] Ross, Timothy J., Logic Fuzzy con aplicaciones de ingeniería, 3ª ed. Wiley. 2010. ISBN 978-0-470-74376-8 pp 352-353
- [4] Joe Marino, blanqueamiento estadístico, 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: Aplicar la distancia euclidiana ponderada es equivalente a aplicar la distancia euclidiana tradicional en datos ponderados por la raíz cuadrada de los pesos
- [6] James C.Bezdek, Robert Ehrlich, William Full, FCM: El algoritmo de agrupación de C-Means difuso, https://doi.org/10.1016/0098-3004(84)90020-7, 1983, 1983, 1983