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.
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.
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)
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