[PYTHON] J'ai essayé le clustering avec PyCaret

introduction

J'ai essayé d'utiliser la bibliothèque d'apprentissage automatique PyCaret qui a été publiée l'autre jour. L'analyse des caractéristiques des données et la comparaison des performances avec plusieurs modèles seront automatisées et je pense que le temps de travail des scientifiques des données jusqu'à présent sera considérablement réduit.

Cette fois, nous utiliserons Mice Protein Expression Data Set 2015 pour effectuer le clustering et voir les résultats. ..

Aperçu des données Expression levels of 77 proteins measured in the cerebral cortex of 8 classes of control and Down syndrome mice exposed to context fear conditioning, a task used to assess associative learning.

1. Installez PyCaret

Exécutez le code ci-dessous pour l'installer. J'utilise Anaconda, mais j'ai lancé et installé un environnement virtuel dédié à PyCaret. Dans un environnement virtuel existant géré par Conda, une erreur peut se produire. (Probablement à cause de la collision entre pip et conda)

pip install pycaret

2. Acquisition de données

from pycaret.datasets import get_data
dataset = get_data('mice')

résultat image.png

Jetons un coup d'œil au contenu des données en utilisant le profile_report () de Pandas.

import pandas_profiling
dataset.profile_report()

résultat image.png

Ensuite, 95% sont divisés en données d'entraînement et 5% sont divisés en données de test (appelées données non visibles).

data = dataset.sample(frac=0.95, random_state=786).reset_index(drop=True)
data_unseen = dataset.drop(data.index).reset_index(drop=True)

print('Data for Modeling: ' + str(data.shape))
print('Unseen Data For Predictions: ' + str(data_unseen.shape))

résultat

Data for Modeling: (1026, 82) Unseen Data For Predictions: (54, 82)

3. Prétraitement des données

Prétraitez les données avec setup ().

from pycaret.clustering import *
data_clust = setup(data, normalize = True, 
                   ignore_features = ['MouseID'],
                   session_id = 123)

Effectuer la normalisation des données numériques. Ignorez la fonction «ID de souris». Spécifiez ensuite session_id = 123 comme une graine aléatoire fixe.

résultat image.png

4. Génération d'un modèle analytique

Sélectionnez un modèle de clustering pour la modélisation. Utilisez create_model (). Cette fois, nous utiliserons le modèle kmeans.

kmeans = create_model('kmeans',num_clusters = 5 )
print(kmeans)

Le nombre de clusters doit être de 5. La valeur par défaut est 4.

résultat

KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300, n_clusters=5, n_init=10, n_jobs=None, precompute_distances='auto', random_state=123, tol=0.0001, verbose=0)

5. Affectation du modèle

Attribuez une étiquette de cluster au jeu de données (1080 échantillons) à l'aide de assign_model ().

kmean_results = assign_model(kmeans)
kmean_results.head()

résultat image.png

6. Visualisation du modèle

Visualisez les résultats du clustering à l'aide de plot_model.

6.1. PCA Plot

plot_model(kmeans)

résultat image.png

6.2. Elbow Plot

plot_model(kmeans, plot = 'elbow')

Elbow Plot vous indiquera le nombre recommandé de grappes. Dans ce cas, le nombre optimal de clusters est spécifié comme 5. résultat image.png

6.3. Silhouette Plot

plot_model(kmeans, plot = 'silhouette')

résultat image.png

6.4. Distribution Plot

plot_model(kmeans, plot = 'distribution', feature = 'class')

résultat image.png

7. Prévisions

unseen_predictions = predict_model(kmeans, data=data_unseen)
unseen_predictions.head()

La colonne Label représente le résultat de la prédiction.

résultat image.png

8. Résumé

  1. J'ai essayé le clustering, qui est un apprentissage non enseignant, avec PyCaret.

8.1 Liste des fonctions Pycaret utilisées pour le clustering

  1. Prétraitement des données: setup ()
  2. Générer un modèle analytique: create_model ()
  3. Étiquette de cluster Assign: assign_model ()
  4. Visualisation: plot_model ()
  5. Prédiction: predict_model ()

9. Documents de référence

1.PyCaret Home Page , http://www.pycaret.org/ 2.PyCaret Classification, https://pycaret.org/classification/ 3. J'ai essayé d'utiliser PyCaret à la vitesse la plus rapide, https://qiita.com/s_fukuzawa/items/5dd40a008dac76595eea 4. J'ai essayé de classer la qualité du vin avec PyCaret. Https://qiita.com/kotai2003/items/c8fa7e55230d0fa0cc8e 5. J'ai essayé de prédire la survie du Titanic avec PyCaret https://qiita.com/kotai2003/items/a377f45ddee9829ed2c5 6. J'ai essayé de prédire le prix de l'immobilier à Boston avec PyCaret (retour) https://qiita.com/kotai2003/items/bf4e8a278e43c58cab06

Recommended Posts

J'ai essayé le clustering avec PyCaret
J'ai essayé PyCaret2.0 (pycaret-nightly)
J'ai essayé d'utiliser PyCaret
J'ai essayé de prédire la survie du Titanic avec PyCaret
J'ai essayé fp-growth avec python
J'ai essayé de gratter avec Python
J'ai essayé Learning-to-Rank avec Elasticsearch!
J'ai essayé gRPC avec Python
J'ai essayé de gratter avec du python
J'ai essayé de résumer des phrases avec summpy
J'ai essayé l'apprentissage automatique avec liblinear
J'ai essayé de déplacer de la nourriture avec SinGAN
J'ai essayé d'implémenter DeepPose avec PyTorch
J'ai essayé la détection de visage avec MTCNN
J'ai essayé d'exécuter prolog avec python 3.8.2.
J'ai essayé la communication SMTP avec Python
J'ai essayé la génération de phrases avec GPT-2
J'ai essayé d'apprendre LightGBM avec Yellowbrick
J'ai essayé la reconnaissance faciale avec OpenCV
J'ai essayé de prédire le prix de l'immobilier à Boston avec PyCaret
Clustering avec python-louvain
J'ai essayé l'analyse de régression multiple avec régression polypoly
J'ai essayé d'envoyer un SMS avec Twilio
J'ai essayé d'utiliser Amazon SQS avec django-celery
J'ai essayé d'implémenter Autoencoder avec TensorFlow
J'ai essayé linebot avec flacon (anaconda) + heroku
J'ai essayé de visualiser AutoEncoder avec TensorFlow
J'ai essayé de gratter
J'ai essayé de commencer avec Hy
J'ai essayé d'utiliser du sélénium avec du chrome sans tête
J'ai essayé l'analyse factorielle avec des données Titanic!
J'ai essayé d'apprendre avec le Titanic de Kaggle (kaggle②)
J'ai essayé le rendu non réaliste avec Python + opencv
J'ai essayé AutoKeras
Clustering avec scikit-learn (1)
J'ai essayé un langage fonctionnel avec Python
J'ai essayé la récurrence avec Python ② (séquence de nombres Fibonatch)
J'ai essayé d'implémenter DeepPose avec PyTorch PartⅡ
J'ai essayé le moulin à papier
J'ai essayé d'implémenter CVAE avec PyTorch
Clustering avec scikit-learn (2)
J'ai essayé de jouer avec l'image avec Pillow
J'ai essayé de résoudre TSP avec QAOA
J'ai essayé la reconnaissance d'image simple avec Jupyter
J'ai essayé le réglage fin de CNN avec Resnet
J'ai essayé django-slack
J'ai essayé le traitement du langage naturel avec des transformateurs.
J'ai essayé Django
J'ai essayé spleeter
J'ai essayé cgo
# J'ai essayé quelque chose comme Vlookup avec Python # 2
J'ai essayé de visualiser le modèle avec la bibliothèque d'apprentissage automatique low-code "PyCaret"
J'ai essayé la reconnaissance manuscrite des caractères des runes avec scikit-learn
J'ai essayé de prédire l'année prochaine avec l'IA
J'ai essayé de "lisser" l'image avec Python + OpenCV