[PYTHON] Réutiliser les résultats du clustering

L'exploration de données est l'application de techniques d'analyse à de grandes quantités de données pour découvrir des caractéristiques de données auparavant inconnues et obtenir de nouvelles informations, souvent en utilisant des techniques communes à l'apprentissage automatique.

En guise d'idée simple, si vous obtenez le résultat d'un apprentissage non supervisé, vous pouvez également appliquer les connaissances au reste des données, et vous pouvez améliorer la précision du résultat en tant que données d'entraînement.

Classer les notes des élèves pour toute la classe

La dernière fois a présenté un exemple de regroupement des élèves selon leur tendance en fonction de leurs notes. L'enseignant en charge de ces élèves pensait que les élèves de toute la classe pouvaient être classés en fonction des résultats de ce regroupement.

La machine à vecteurs de support, qui est un type de fonction discriminante, et les baies naïves, qui est un classificateur probabiliste, ont des idées et des méthodes complètement différentes.

Utilisez scikit-learn

Il y a beaucoup de bonnes choses à propos de scikit-learn, mais l'une d'entre elles est l 'API cohérente conçue de différentes manières. , Je pense qu'il peut être implémenté avec un code similaire.

import numpy as np
from sklearn.cluster import KMeans
from sklearn.naive_bayes import GaussianNB
from sklearn import svm

#Étant donné que l'enregistrement des données est redondant, il est séparé par des virgules..Dans le format pour lire csv
features = np.genfromtxt('data.csv', delimiter=',')

# K-signifie classer les étiquettes par clustering
kmeans_model = KMeans(n_clusters=3, random_state=10).fit(features)
labels = kmeans_model.labels_

clf = GaussianNB() #Classificateur Naive Bayes avec noyau gaussien
#clf = svm.SVC(kernel='rbf', C=1) #Machine de vecteur de support du noyau RBF

#Former le classificateur en fonction des résultats du clustering
clf.fit(features, labels)

#Données à tester(Notes des autres élèves de la classe)Lis
test_X = np.genfromtxt('test.csv', delimiter=',')

#Trier par classificateur
results = clf.predict(test_X)

#Trier et afficher les résultats
ranks = []
for result, feature in zip(results, test_X):
    ranks.append([result, feature, feature.sum()])

ranks.sort(key=lambda x:(-x[2]))

for rank in ranks:
    print(rank)

Résumé

Vous pouvez le voir en préparant réellement des exemples de données, mais je pense que vous pouvez comprendre visuellement comment les limites de chaque classe changent avec chaque méthode. A partir de là, nous parlerons de chaque théorie.

Recommended Posts

Réutiliser les résultats du clustering
Illustration des résultats du problème du sac à dos
Clustering de méthodes de clustering
Le début de cif2cell
Le sens de soi
L'histoire de sys.path.append ()
La vengeance des types: la vengeance des types
Différence de résultats en fonction de l'argument du multiprocessus.
Clustering G-means qui détermine automatiquement le nombre de clusters
Aligner la version de chromedriver_binary
Grattage du résultat de "Schedule-kun"
10. Compter le nombre de lignes
L'histoire de la construction de Zabbix 4.4
Vers la retraite de Python2
Visualisez les résultats des arbres de décision réalisés avec Python scikit-learn
Comparez les polices de jupyter-themes
Obtenez le nombre de chiffres
Analyse des données basée sur les résultats des élections du gouverneur de Tokyo (2020)
Comment résumer les résultats de FreeSurfer ~ aparc, aseg, wmparc ~
GoPiGo3 du vieil homme
Calculez le nombre de changements
Changer le thème de Jupyter
La popularité des langages de programmation
Changer le style de matplotlib
Visualisez la trajectoire de Hayabusa 2
À propos des composants de Luigi
Composants liés du graphique
Filtrer la sortie de tracemalloc
À propos des fonctionnalités de Python
Simulation du contenu du portefeuille
Le pouvoir des pandas: Python
Enregistrez le résultat de l'exploration avec Scrapy dans Google Data Store
L'histoire de l'exécution de python et de l'affichage des résultats sans fermer vim
[GWAS] Tracez les résultats de l'analyse en composantes principales (ACP) par PLINK
Les spécifications de pytz ont changé
Tester la version du module argparse
Trouvez la définition de la valeur de errno
Tracez la propagation du nouveau virus corona
L'histoire de Python et l'histoire de NaN
Élever la version de pyenv elle-même
Obtenez le nombre de vues de Qiita
[Python] La pierre d'achoppement de l'importation
First Python 3 ~ Le début de la répétition ~
Traduction japonaise du manuel e2fsprogs
L'histoire de la participation à AtCoder
Changer l'arrière-plan d'Ubuntu (GNOME)
La probabilité de précipitation est-elle correcte?
J'ai étudié le mécanisme de connexion flask!
Entrez dans l'obscurité de msync
Prenez le journal d'exécution du céleri
Tester l'adéquation de la distribution
Calcul du nombre d'associations de Klamer
pyenv-changer la version python de virtualenv
À propos de la valeur de retour de pthread_mutex_init ()
Combinez le chevauchement de sections unidimensionnelles
Obtenir les attributs d'un objet
Résoudre le retard d'observation de l'interféromètre