[PYTHON] Résumé de la classification et de la mise en œuvre des algorithmes d'apprentissage automatique

introduction

Nous avons résumé la classification de l'apprentissage automatique et une implémentation simple à l'aide d'une bibliothèque de ces algorithmes. Le code de chaque algorithme comprend des exemples de données, il peut donc être exécuté tel quel. Étant donné que seuls les paramètres minimaux requis sont définis, veuillez vous reporter au document officiel, etc. pour les paramètres détaillés.

Chaque algorithme a une brève explication, mais aucune explication détaillée.

Public cible

--Je veux connaître la classification des algorithmes d'apprentissage automatique --Je souhaite implémenter et exploiter un algorithme d'apprentissage automatique

objectif

--Comprendre la classification des algorithmes d'apprentissage automatique --Peut implémenter des algorithmes d'apprentissage automatique

Classification de l'apprentissage automatique

L'apprentissage automatique est classé comme suit.

--Apprentissage avec un enseignant --Revenir --Catégorie --Apprendre sans professeur

image.png Cette fois, nous ne traiterons pas de la mise en œuvre de l'apprentissage amélioré.

Apprendre avec un enseignant

L'apprentissage supervisé est une méthode d'apprentissage de la réponse à un problème à partir de données qui représentent des caractéristiques (caractéristiques, variables explicatives) et des données qui constituent la réponse (étiquettes, variables objectives).

L'apprentissage supervisé peut être divisé en deux catégories.

--Return: prédire des nombres continus

Des données d'utilisation

Je vais expliquer brièvement les données utilisées dans la mise en œuvre.

Ici, nous utiliserons les exemples de données de scicit-learn. Les données utilisées sont les suivantes pour la régression et la classification.

--Revenir

algorithme

Je présenterai l'algorithme de l'apprentissage supervisé. Il décrit si chaque algorithme peut être appliqué à la régression ou à la classification.

Régression linéaire

--Revenir

Méthode de modélisation de la relation dans laquelle la variable objectif devient plus grande (plus petite) à mesure que la quantité de caractéristique devient plus grande.

Document officiel

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

#Lire les données
boston = load_boston()
X = boston['data']
y = boston['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

model = LinearRegression()
model.fit(X_train, y_train)

score = model.score(X_test, y_test)

print('score is', score)

Retour logistique

--Catégorie

Une méthode d'apprentissage de la probabilité qu'un événement se produise.

Document officiel

from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

#Lire les données
wine = load_wine()
X = wine['data']
y = wine['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

model = LogisticRegression()
model.fit(X_train, y_train)

score = model.score(X_test, y_test)

print('score is', score)

Forêt aléatoire

--Revenir --Catégorie

Une méthode de prédiction à la majorité à partir de plusieurs arbres de décision.

Retour version

Document officiel

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor

#Lire les données
boston = load_boston()
X = boston['data']
y = boston['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

model = RandomForestRegressor(random_state=0)
model.fit(X_train, y_train)

score = model.score(X_test, y_test)

print('score is', score)

Version de classification

Document officiel

from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

#Lire les données
wine = load_wine()
X = wine['data']
y = wine['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

model = RandomForestClassifier(random_state=0)
model.fit(X_train, y_train)

score = model.score(X_test, y_test)

print('score is', score)

Machine de vecteur de soutien

Une technique pour obtenir de meilleures limites de décision en maximisant les marges.

--Revenir --Catégorie

Retour version

Document officiel

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.svm import SVR

#Lire les données
boston = load_boston()
X = boston['data']
y = boston['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

model = SVR(kernel='linear', gamma='auto')
model.fit(X_train, y_train)

score = model.score(X_test, y_test)

print('score is', score)

Version de classification

Document officiel

from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC

#Lire les données
wine = load_wine()
X = wine['data']
y = wine['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

model = SVC(gamma='auto')
model.fit(X_train, y_train)

score = model.score(X_test, y_test)

print('score is', score)

kNN

Une méthode de mémorisation de toutes les données d'entraînement et de prise de décision majoritaire à partir de k données proches des données que vous souhaitez prédire.

--Revenir --Catégorie

Retour version

Document officiel

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsRegressor

#Lire les données
boston = load_boston()
X = boston['data']
y = boston['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

model = KNeighborsRegressor(n_neighbors=3)
model.fit(X_train, y_train)

score = model.score(X_test, y_test)

print('score is', score)

Version de classification

Document officiel

from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

#Lire les données
wine = load_wine()
X = wine['data']
y = wine['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

model = KNeighborsClassifier(n_neighbors=3)
model.fit(X_train, y_train)

score = model.score(X_test, y_test)

print('score is', score)

réseau neuronal

Une méthode qui imite les circuits neuronaux du cerveau humain, qui a une structure composée d'une couche d'entrée, d'une couche cachée et d'une couche de sortie.

--Revenir --Catégorie

Document officiel

Retour version

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from tensorflow.keras import models
from tensorflow.keras import layers

#Lire les données
boston = load_boston()
X = boston['data']
y = boston['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

model = models.Sequential()
model.add(layers.Dense(64, activation='relu', input_shape=(X_train.shape[1],)))
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(1))
model.compile(optimizer='rmsprop', loss='mse', metrics=['mae'])

model.fit(X_train, y_train)

mse, mae = model.evaluate(X_test, y_test)

print('MSE is', mse)
print('MAE is', mae)

Version de classification

from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from tensorflow.keras import models
from tensorflow.keras import layers
from tensorflow.keras import utils

#Lire les données
boston = load_wine()
X = boston['data']
y = utils.to_categorical(boston['target'])
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

model = models.Sequential()
model.add(layers.Dense(64, activation='relu', input_shape=(X_train.shape[1],)))
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(3, activation='softmax'))
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])

model.fit(X_train, y_train)

crossentropy, acc = model.evaluate(X_test, y_test)

print('Categorical Crossentropy is', crossentropy)
print('Accuracy is', acc)

Augmentation du gradient

L'un des ensembles apprenant à former plusieurs modèles. Méthode d'extraction répétée de certaines données et d'entraînement séquentiel de plusieurs modèles d'arbres de décision.

--Revenir --Catégorie

Document officiel

Retour version

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import lightgbm as lgb
import numpy as np

#Lire les données
wine = load_boston()
X = wine['data']
y = wine['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

lgb_train = lgb.Dataset(X_train, y_train)
lgb_eval = lgb.Dataset(X_test, y_test)

params = {
    'objective': 'regression',
    'metric': 'mse',
}
num_round = 100

model = lgb.train(
    params,
    lgb_train,
    valid_sets=lgb_eval,
    num_boost_round=num_round,
)

y_pred = model.predict(X_test)

score = mean_squared_error(y_test, y_pred)

print('score is', score)

Version de classification

from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import lightgbm as lgb
import numpy as np

#Lire les données
wine = load_wine()
X = wine['data']
y = wine['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

lgb_train = lgb.Dataset(X_train, y_train)
lgb_eval = lgb.Dataset(X_test, y_test)

params = {
    'objective': 'multiclass',
    'num_class': 3,
}
num_round = 100

model = lgb.train(
    params,
    lgb_train,
    valid_sets=lgb_eval,
    num_boost_round=num_round,
)

pred = model.predict(X_test)
y_pred = []
for p in pred:
    y_pred.append(np.argmax(p))

score = accuracy_score(y_test, y_pred)

print('score is', score)

Apprendre sans professeur

L'apprentissage non supervisé est une méthode d'apprentissage à partir des seules données qui représentent les caractéristiques sans aucune donnée de réponse.

Des données d'utilisation

Dans l'utilisation de l'apprentissage non supervisé, ce sont les données de qualité du vin utilisées dans l'apprentissage supervisé.

algorithme

Je vais présenter l'algorithme de l'apprentissage non supervisé.

K-means

Une des méthodes de clustering. Une méthode d'organisation des données en k classes.

Document officiel

from sklearn.datasets import load_wine
from sklearn.cluster import KMeans

#Lire les données
wine = load_wine()
X = wine['data']

model = KMeans(n_clusters=3, random_state=0)
model.fit(X)

print("labels: \n", model.labels_)
print("cluster centers: \n", model.cluster_centers_)
print("predict result: \n", model.predict(X))

Distribution gaussienne mixte

Une des méthodes de clustering. Une méthode de classification des données selon la distribution gaussienne à laquelle elles appartiennent, en supposant que les données sont générées à partir de plusieurs distributions gaussiennes.

Document officiel

from sklearn.datasets import load_wine
from sklearn.mixture import GaussianMixture

#Lire les données
wine = load_wine()
X = wine['data']

model = GaussianMixture(n_components=4)
model.fit(X)

print("means: \n", model.means_)
print("predict result: \n", model.predict(X))

Analyse des composants principaux

Une des méthodes de réduction de dimension. Une méthode d'expression de données à partir d'un grand nombre de variables avec moins de variables (composants principaux) tout en préservant les caractéristiques des données.

Document officiel

from sklearn.datasets import load_wine
from sklearn.decomposition import PCA

#Lire les données
wine = load_wine()
X = wine['data']

model = PCA(n_components=4)
model.fit(X)

print('Before Transform:', X.shape[1])
print('After Transform:', model.transform(X).shape[1])

Résumé

Je n'ai pas suffisamment étudié l'apprentissage non supervisé et le renforcement de l'apprentissage, je vais donc continuer à étudier.

Les références

Recommended Posts

Résumé de la classification et de la mise en œuvre des algorithmes d'apprentissage automatique
Algorithme d'apprentissage automatique (implémentation de la classification multi-classes)
Classification de l'apprentissage automatique
Programmation Python Machine Learning Chapitre 2 Problèmes de classification - Résumé de la formation à l'algorithme d'apprentissage automatique
Algorithme d'apprentissage automatique (résumé de régression linéaire et régularisation)
Apprentissage automatique ⑤ Résumé AdaBoost
Techniques liées à l'apprentissage automatique / à la classification
Apprentissage automatique ② Résumé Naive Bayes
Méthode de voisinage #k d'apprentissage automatique et sa mise en œuvre et divers
Résumé de l'article sur l'apprentissage automatique (auto-écrit)
Algorithme d'apprentissage automatique (perceptron simple)
Apprentissage automatique et optimisation mathématique
Machine learning supervisé (classification / régression)
Algorithme d'apprentissage automatique (machine vectorielle de support)
Apprentissage automatique ④ Résumé du K-plus proche voisin
Algorithme d'apprentissage automatique (régression logistique)
<Course> Machine learning Chapitre 6: Algorithme 2 (k-means)
Explication et implémentation de l'algorithme ESIM
Importance de l'apprentissage automatique et de l'apprentissage par mini-lots
Algorithme de tri et implémentation en Python
Apprentissage automatique ① Résumé SVM (Support Vector Machine)
Apprentissage automatique par python (1) Classification générale
Résumé de l'apprentissage automatique par les débutants de Python
Algorithme d'apprentissage automatique (analyse de régression multiple)
Organisez des plateformes d'apprentissage automatique et d'apprentissage en profondeur
Algorithme d'apprentissage automatique (méthode de descente de gradient)
Apprentissage automatique
Résumé des API recommandées pour l'intelligence artificielle, l'apprentissage automatique et l'IA
[Apprentissage automatique] OOB (Out-Of-Bag) et son ratio
scikit-learn Comment utiliser le résumé (apprentissage automatique)
Deep learning 2 appris par l'implémentation (classification d'images)
Notes personnelles et liens sur l'apprentissage automatique ① (Machine learning)
Explication et implémentation de l'algorithme Decomposable Attention
Créer un environnement pour Python et l'apprentissage automatique (macOS)
"Tutoriels OpenCV-Python" et "Système d'apprentissage automatique pratique"
Classification EV3 x Pyrhon Machine Learning Partie 3
[Apprentissage automatique] Résumé et exécution de l'évaluation / des indicateurs du modèle (avec jeu de données Titanic)
Classification des images de guitare par apprentissage automatique Partie 1
Étudiez l'apprentissage automatique et l'informatique. Liste des ressources
Algorithme EM modèle mixte gaussien [apprentissage automatique statistique]
Mémo d'étude Python & Machine Learning ⑤: Classification d'Ayame
Tournoi Numerai - Fusion de quants traditionnels et apprentissage automatique -
Algorithme d'apprentissage du dictionnaire
Algorithme d'apprentissage automatique (de la classification à 2 classes à la classification à plusieurs classes)
Division des données de formation en apprentissage automatique et apprentissage / prédiction / vérification
Résumé des fonctions d'évaluation utilisées dans l'apprentissage automatique
Apprentissage supervisé (classification)
[Memo] Apprentissage automatique
Classification des images de guitare par apprentissage automatique, partie 2
Exemple d'apprentissage automatique
Résumé des diapositives de la session de lecture ronde de la série professionnelle d'apprentissage automatique
Nouvelle interface d'apprentissage automatique "Apache Flink" et module Flink-Python
[Apprentissage automatique] Comprendre la SVM à la fois à partir de scikit-learn et des mathématiques
Apprentissage automatique facile avec scikit-learn et flask ✕ Application Web
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer chapitres 1 et 2
À propos des tests dans la mise en œuvre de modèles d'apprentissage automatique
Résumé du site pour apprendre l'apprentissage automatique avec une vidéo en anglais