kekelompokan
Perpustakaan pengelompokan dan clustering fuzzy dengan CLI terintegrasi.
Instalasi
$ python3 setup.py install
Menjalankan skrip setup.py akan mengunduh semua paket yang diperlukan dan menginstal perintah berikut baik di ~/.local/bin/ untuk instalasi lokal atau di direktori /usr/lib/pythonX.X :
- CLU: Perintah utama untuk pengelompokan berbasis partisi.
- DClus: Clustering berbasis kepadatan.
- HClus: Clustering hierarkis.
- Eclus: Evaluasi pengelompokan. Menerapkan cara perbedaan untuk mengevaluasi hasil pengelompokan dengan membandingkan dua partisi.
Penggunaan
# 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
- Paradigma lengkap menulis ulang:
- Pindah dari dukungan CLI ke antarmuka kelas Python yang lebih bersih
- Desain kelas pengelompokan dasar yang mudah digunakan dan abstrak
- Ambil inspirasi dari sungai
- Keluarga Algoritma "Baru": Algoritma Streaming/One-Pass.
- Tuangkan les fcm, copies de données sont faites plelieurs fois. Optimisable, 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
- Shift rata-rata
- Vérifier le hard_c_medoids
- Implemer UNE Detection Automatique de Header Si le Flag --Header n'est Passé. Voir: https://stackoverflow.com/questions/32312309/check-if-header-exists-with-python-pandas
- Permettre au hc de prendre plurieurs paramètres menuangkan nilai fcluster. SI Plusieurs, alor pada applique ces params. Opsi Ajouter fcluster_value Dans le Filename.
- Les Opérations sur Medoids Sont Lentes. Kode S'inspiran D'Autres menuangkan les ameliorer:
- 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/brainmapplerv2/blob/63075bdca2428197fc18a1cf6c7403c2764e0664/ourlib/clustering.py#l293
- Aplikasi du dekoratur "MemoryError_fallback", D'un Parametre de Taille de Chunk, Puis Utiliser Sklearn.metrics.Pairwise_distances_chunked
- Au lieu 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 formater un fichier), et au parametres non -tidak ada yang tidak ada paria paria paria paria paria l'e les nometre les nometres non -non -non -no tidak ada parier parie parier parier parie parie les pare nometre les L'StiliSateur Peut Aussi Très Bien Son Son Nom de Fichier Prédéfini.
- Implémenter un algo d'Eksteptiemment (de comparaison) d'Enfication. Peut être utiliser https://fr.wikipedia.org/wiki/algorithme_hongrois
- Revoir les séparations en sous-commandes. Peut être faire: "clus evaluasi" ou "clus visualisasi".
- S'inspiran de l'Api d'Atres clustering softwares: ** https://elki-project.github.io ** https://www.cs.waikato.ac.nod/weka ** https:/wwww.knime.com/nodeguide ** https:/www.knime.com/nodeguide
- Implémenter la lecture de fichiers: ** memmap: https://docs.scipy.org/doc/numpy/reference/generated/numpy.memmap.html
- S'inspiran 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/2017/09/21/adjusted-randandex/20
- Trouber Meilleure Coupe HC: ** https://www.sciencedirect.com/science/article/pii/s0031320310001974
- Etudier D'Atres Méthodes de Normalisasi, 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
- Refactoring de l'Arsitektur du kode: ** clus.methods, qui offre toutes les méthodes depuis ce module. ** clus.preprocessing, qui offre les méthodes de normalisasi, et de pondération ** clus.visualisasi ** clus.evaluasi ** clus.
- Changer la façon tidak 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 Garder 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 rends compte que sacred serait peut etre plus appents tour la gestion des résultats.
- Siluet Virer, ne garder que-sampel siluet, retourner puis la moyenne (qui corcord à silhouette-score), pada silhouette_mean_mean, et l'écart tipe silhouette_std.
- Etudier L'Merilisasi 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 Kemungkinan, {UUID4}, {uuid6}, dll. Dans le futur nom de fichier peut etre? Penghargaan Si pada peut l'Initioniser avec le Temps, sinon faudra faire gaffe à l'ITALISISASI 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'Eval clustering: https://amstat.tandfonline.com/doi/abs/10.1080/01621459.1971.10482356#.xxzye6wxxry
- Etudier D'Atres Normalisasi dan Effets Effets: https://scikit-learn.org/stable/auto_examples/preprocessing/plot_all_scaling.html#results
Referensi
- [1] R. Krishnapuram; A. Joshi; O. Nasraoui; L. Yi, algoritma pengelompokan relasional fuzzy rendah kompleksitas untuk penambangan web, transaksi IEEE pada sistem fuzzy (volume: 9, edisi: 4, Agustus 2001), p595-607, doi: 10.1109/91.940971
- [2] TOLGA CAN, K-Means Kosong Kosong Contoh, http://user.ceng.metu.edu.tr/~tcan/ceng465_f1314/schedule/kmeansempty.html (arsip: https://web.archive.org/web/20180626092955/http://user.ceng.metu.edu.tr/~tcan/ceng465_f1314/schedule/kmeansempty.html)
- [3] Ross, Timothy J., logika fuzzy dengan aplikasi teknik, edisi ke -3. Wiley. 2010. ISBN 978-0-470-74376-8 pp 352-353
- [4] Joe Marino, pemutih statistik, http://joelouismarino.github.io/blog_posts/blog_whitening.html (arsip: https://web.archive.org/web/20180813034201/http://joelouismarino.github.io/blog_posts/blog_whitening.html)
- [5] TODO: Menerapkan jarak Euclidean tertimbang setara dengan menerapkan jarak Euclidean tradisional ke dalam data yang ditimbang oleh akar kuadrat dari bobot
- [6] James C.Bezdek, Robert Ehrlich, William Full, FCM: Algoritma Clustering C-Means Fuzzy, https://doi.org/10.1016/0098-3004(84)90020-7, 1983