Clustering
Clustering und Fuzzy-Clustering-Bibliothek mit integriertem CLI.
Installation
$ python3 setup.py install
Durch Ausführen des Skripts setup.py wird alle erforderlichen Pakete heruntergeladen und die folgenden Befehle entweder in Ihrem ~/.local/bin/ für die lokale Installation oder in den Verzeichnissen /usr/lib/pythonX.X installiert:
- CLUS: Hauptbefehl für partitionsbasierte Clustering.
- DCLUS: Dichtebasierte Clustering.
- HCLUS: Hierarchische Clustering.
- Eclus: Clustering bewerten. Implementierung verschiedener Weg zur Bewertung von Clustering -Ergebnissen durch Vergleich von zwei Partitionen.
Verwendung
# 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}Todo
- Komplettes Paradigma -Umschreiben:
- Bewegen Sie sich von der CLI -Unterstützung in eine sauberere Schnittstelle zur Pythonklasse
- Entwerfen Sie einfach zu bedienende und abstrakte Basis-Clustering-Klassen
- Lassen Sie sich vom Fluss inspirieren
- "Neue" Algorithmusfamilie: Streaming/Ein-Pass-Algorithmen.
- Gießen Sie Les FCM, Extras, Kopien de Données Sont Faites Plusieurs Fois. Optimierbar, 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éthodes de Clustering à Implémenter:
- https://github.com/scikit-learn/scikit-learn/blob/7b136e9/sklearn/cluster/k_means_.py#l1318
- OPTIK
- Mittelschicht
- Vérifier le hard_c_medoiden
- Implementierer UNE Erkennung Automatik 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 gießen fcluster -Werte ein. Si Plusieurs, Alors auf Applique CES -Params. AJOUTER -Option fcluster_Value dans le Dateiname.
- Les opérations sur medoids Sont Lentes. S'inspirer d'Aumres -Codes gießen Les Ameliorer:
- https://github.com/vitordeatorreao/amproj/blob/844842a532524d5f514e7534da65c7a64ab7ef57/amproj/distance/kmedoidens.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 decorateur "majoreError_fallback", d'un parameter de taille de chunk, puis utiliser sklearn.metrics.pairwise_distances_chunked
- Au liu de fixer un nom de fichier par défaut, mettre tous les paramètres par défaut à none (et fixer en dur leurs valeus par défaut dans la doc, ou forater selon unficher), et ajouter les parametres none passés passés utilisateurateur -utificier -utilisateurer -utilisateurer -utilisateurer -utilisateurer -utifiturer -utilisateurer -utilisateurer -utifiturer -utilisateurer -utifitur. L'Itilisateur Peut Aussi Très Bien Passant Sohn Nom de Fichier Prédéfini.
- Implémenter unalgo d'Anticaliemment (de vergleiche) D'Affizienz. Peut être utiliser https://fr.wikipedia.org/wiki/algorithme_hongrois
- Revoir Les Séparations en Sous-Commandes. Peut être faire: "clus bewerten" ou "clus visualisieren".
- S'inspirer de l'api d'Aumres clustering Softwares: ** https://elki-project.github.io ** https://www.cs.waikato.ac.nz/ml/weka ** https://www.knime.com/node/analytics/analytics/analytics/analytics/clustics/clustering
- 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.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
- Trouver Meilleure Coupé HC: ** https://www.sciencedirect.com/science/article/pii/s0031320310001974
- Etudier d'Aumres Méthodes de Normalisierung, Leurs Effetten et al. https://sebastianraschka.com/articles/2014_about_feature_scaling.html
- Refactoring de l'architecture du Code: ** Clus.Methods, Qui Offre Toutes Les Méthodes DePuis CE -Modul. ** clus.preprozessing, qui offre les méthodes de normalisation, et de pondération ** clus.visualisation ** clus.Valuation ** clus.loading, Toutes Les Méthodes de Lessel des Données
- Changer la Fasson nicht Les Paramètres du Clustering Sont Stockés et dont les résultats Sont Sauvegardés. ** VIRER TOUS LES Params liés au nom de fichier. NE Garner Que "Dateiname-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 rends compte que sacred serait peut etre plus approprié pour la Gestion des résultats.
- Virer Silhouette, NE Garder Que Silhouette-Samples, Puis Retourner La Moyenne (Qui Korrespondenz à Silhouette-Score), auf Revers Silhouette_Mean, et l'écart Typ Silhouette_std.
- Etudier L'Antilization de: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise_distances_chunked.html
- Remettre les références dans la doc de chaque Modul. Les Retirer des Références Ci-Dessous.
- Essayer de Proposer Une Implémentation de K-Means Utilisant Cuda: http://alexminnaar.com/2019/03/05/cuda-kmeans.html
- AJOUTER Param UUID: AJOUTER UN Param Möglich, {uUid4}, {uUid6} usw. Dans le futur nom de fichier peut Ete? Betrachten Sie Si auf Peut l'itialiser avec le temps, Sinon Faudra Faire Gaffe à l'initialisierte Avenc Graine Aléatoire, Sinon C'est Possiblkz Que Je retourne les mêmes uUid à chaque fois.
- AJOUTER DES MESURES D'EVENTUMUNG: PAPIER GUPS MESURURES D'EAL CLUSTERING: https://amstat.tandfonline.com/doi/abs/10.1080/01621459.1971.10482356#.xxzye6wxxryry
- Etudier d'Aumres Normalisierung et Leurs Effetten: https://scikit-learn.org/stable/auto_examples/preprocessing/plot_all_scaling.html#results
Referenzen
- [1] R. Krishnapuram; A. Joshi; O. Nasraoui; L. Yi, Fuzzy-Clustering-Algorithmen für Web-Mining, IEEE-Transaktionen zu Fuzzy-Systemen (Volumen: 9, Ausgabe: 4, Aug 2001), p595-607, doi: 10.1109/91.940971
- [2] Tolga Can, K-Means leeres Clusterbeispiel, http://user.ceng.metu.edu.tr/~tcan/ceng465_f1314/schedule/kmeansempty.html (Archiv: https://web.archive.org/web/20180626092955/http://user.ceng.metu.edu.tr/~tcan/ceng465_f1314/Schedule/KMEANSEMPTY.HTML)
- [3] Ross, Timothy J., Fuzzy Logic mit technischen Anwendungen, 3. Aufl. Wiley. 2010. ISBN 978-0-470-74376-8 S. 352-353
- [4] Joe Marino, Statistisches Whitening, http://joelouismarino.github.io/blog_posts/blog_whingeing.html (Archiv: https://web.archive.org/web/20180813034201/http://joelouismarino.github.io/blog_posts/blog_whingeing.html)
- [5] TODO: Die Anwendung der gewichteten euklidischen Entfernung entspricht der Anwendung des herkömmlichen euklidischen Abstands in Daten, die durch die Quadratwurzel der Gewichte gewichtet wurden
- [6] James C.bezdek, Robert Ehrlich, William Full, FCM: Der Fuzzy C-Means Clustering-Algorithmus, https://doi.org/10.1016/0098-3004(84)90020-7, 1983, 1983, 1983, 1983, 1983