clustering
Biblioteca de cluster e cluster de agrupamento com CLI integrada.
Instalação
$ python3 setup.py install
A execução do script setup.py baixará todos os pacotes necessários e instalará os seguintes comandos em seus ~/.local/bin/ para instalação local ou nos diretórios /usr/lib/pythonX.X :
- CLUS: Comando principal para clustering baseado em partição.
- DCLUS: clustering baseado em densidade.
- Hclus: cluster hierárquico.
- Eclus: Avalie o clustering. Implementando diferentes maneiras de avaliar os resultados do cluster, comparando duas partições.
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}PENDÊNCIA
- Reescrita completa do paradigma:
- Afaste -se do suporte da CLI para uma interface de classe Python mais limpa
- Projete classes de cluster de base fáceis de usar e abstratas
- Inspire -se do rio
- Família de algoritmo "nova": Algoritmos de streaming/passagem de uma passagem.
- Despeje Les FCM, Plusieurs Cópias de Données Sont Faites Plusieurs Fois. Optimizable, Voir: https://pythonhosted.org/scikit-fuzzy/_modules/skfuzzy/cluster/_cmeans.html#cmeans
- Rendre Les Opérations de Clustering Inplace (NE Pas Dupliquer Les Données)
- Métodos de Clustering à Implementer:
- https://github.com/scikit-learn/scikit-learn/blob/7b136e9/sklearn/cluster/k_means_.py#l1318
- Óptica
- Deslocamento médio
- VÉRIFIER LE HARD_C_MEDOIDS
- Implementador une detecção automatique de cabeçalho Si Le Flag -cabeçalho n'est pas passé. VOIR: https://stackoverflow.com/questions/32312309/check-if-tender-exists-with-python-pandas
- PERMETTRE AU HC de Prendre Plusieurs Paramètres Pour Fcluster Valores. SI Plusieurs, ALORS ON APLICK CES Params. Opção de Ajouter fcluster_value Dans le filename.
- Les Opérações Sur Medóides Sont Lentos. Os códigos S'inspirer d'Autres despejam o ameliorer les:
- https://github.com/vitordeatorreia/amproj/blob/844842a532524d5f514e7534da65c7a64ab7ef57/amproj/distance/kmedoids.py
- https://github.com/agarland/utils/blob/E200D7E41039CA0053BD817C1D1857AAB33BD503/Kmedoids.py#l172
- https://github.com/brain-mapper/brainmappersert2/blob/63075bdca2428197fc18a1cf6c7403c2764e0664/ourlib/clustering.py#l293
- APLICATIVO DU Decorateur "MemoryError_Fallback", D'NUMARMETRE DE TAILLE DE CHUNK, PUIS UTILISER SKLELEN.METRICS.PAIRWise_Distances_Chunked
- AU Lieu de Fixer Un nom de Fichier par defaut, Mettre tous les paramètres par défaut à Nenhum (et e fixer en dur leurs valeus par défaut dans la doc, ou formatador selen un fichier), et ajouter les paramesier não se bem, parente. L'Utilisateur peut aussi très bien transeunte filho nom de fichier prédéfini.
- Impléenter Un Algo d'Epplyemement (de Comparaison) d'Afefefations. Peut être utiliser https://fr.wikipedia.org/wiki/algorithme_hongrois
- Revoir Les Séparations en Sous-Commandes. Peut être faire: "clus avaliar" ou "clus visualizar".
- 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/clustering
- Implementer la Palestra 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/
- TROURVER MEILLEURE CUE HC: ** https://www.sciencedirect.com/science/article/pii/s0031320310001974
- Etudier d'autres Métodos de normalização, 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
- Refatoração de l'Aquitetura Du Code: ** Clus.Methods, Qui Offre Toutes Les Métodes depuis CE Módulo. ** Clus.Processing, Qui Offre Les Méthodes de Normalização, et de Pondération ** clus.Visualization ** clus.
- Changer la façon não les paramètres du clustering sont stockés et não les résultats sont sauvegardés. ** Virer tous les params lés au nom de fichier. NE GARDER QUE "NAME-NAME-PREFIX", ET AJOUTER ONU UUID COME Nom de Fichier. ** Stocker tous les paramètres de clustering dans le dictionnaire résultats. clave "params". **
- SHOUTETE VIRER, NE GARDER QUE SHAMPES SHAMPES, PUIS RETOURNA LA Moyenne (Qui corresponde à silhueta-escore), em Lapelle silhouette_mean, et l'écart tipo silhouette_std.
- Etudier L'Tilization de: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise_distances_chunked.html
- Remettre Les Réferences Dans La Doc de Chaque Módulo. Les Retirer des Réferences CI-DESSOUS.
- Ensaio de propositor Unementação de k-means utiliant cuda: http://alexminnaar.com/2019/03/05/cuda-kmeans.html
- Ajouter param uuid: Ajouter un param possível, {uuid4}, {uuid6}, etc dans le futur nom de fichier peut etre? Considerando o Si on PEUT L'Initedor Avec le temps, Sinon Faudra Faaffe Gaffe à L'InitionAlation Avec Graine Aléatoire, Sinon C'est Possiblkz Que Je Retourne Les Mêmes Uuid à Cheis FOIS.
- Ajouter des MESURES d'Amation: papier derramar mesas d'avalt clustering: https://amstat.tandfonline.com/doi/abs/10.1080/01621459.1971.10482356#.xxzye6wxxxry
- Etudier d'autres Normalisations e leurs Efeitos: https://scikit-learn.org/stable/auto_examples/preprocessing/plot_all_scaling.html#results
Referências
- [1] R. Krishnapuram; A. Joshi; O. Nasraoui; L. Yi, algoritmos de cluster relacionais difusos de baixa complexidade para mineração da web, transações IEEE em sistemas difusos (Volume: 9, edição: 4, agosto de 2001), p595-607, doi: 10.1109/91.940971
- [2] Tolga Can, K-Means Empty Cluster Exemplo, 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, 3ª ed. Wiley. 2010. ISBN 978-0-470-74376-8 pp 352-353
- [4] Joe Marino, Whitening Statistical, http://joelouismarino.github.io/blog_posts/blog_whitening.html (arquivo: https://web.archive.org/web/20180813034201/http://joelouismarino.github.io/blog_posts/blog_whitening.html)
- [5] TODO: A aplicação de distância euclidiana ponderada é equivalente à aplicação da distância euclidiana tradicional em dados ponderados pela raiz quadrada dos pesos
- [6] James C.Bezdek, Robert Ehrlich, William Full, FCM: O algoritmo de cluster de c-means difuso, https://doi.org/10.1016/0098-3004(84)90020-7, 1983