Un contenu plus détaillé est publié sur le blog suivant. https://kakedashi-engineer.appspot.com/2020/02/03/ml-sklearn/
Il y a plusieurs fois où je veux jouer avec un réseau de neurones (perceptron multicouche). Récemment, de nombreuses bibliothèques pour tensorflow, chainer, theano et deep learning ont été publiées, mais il peut être un peu gênant de créer un environnement. Et pour une raison quelconque, le réseau de neurones n'a pas été implémenté dans scicit-learn, ce qui est familier dans l'apprentissage automatique. (Au fait, il existe également une bibliothèque appelée PyBrain) scikit-learn 0.18.0 Cependant, le réseau de neurones a finalement été implémenté dans la version 0.18.0 publiée en septembre 2016. Vous pouvez maintenant utiliser le réseau neuronal avec l'API super simple familière. Tu l'as fait. Dans l'exemple de code ci-dessous, la classification de l'iris est effectuée.
sklearn_nn.py
# -*- coding: utf-8 -*-
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier
iris = load_iris()
X = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
clf = MLPClassifier(solver="sgd",random_state=0,max_iter=10000)
clf.fit(X_train, y_train)
print (clf.score(X_test, y_test))
neural_network.MLPClassifier() outre neural_network.BernoulliRBM() neural_network.MLPRegressor() etc.
API À propos des arguments pris par neural_network.MLPClassifier (). Pour plus d'informations officiel http://scikit-learn.org/stable/modules/generated/sklearn.neural_network.MLPClassifier.html#sklearn.neural_network.MLPClassifier Je veux que vous voyiez, mais je vais le résumer brièvement. (Le côté droit est la valeur par défaut)
python
hidden_layer_sizes=(100, )#Nombre de nœuds de couche masqués(Peut être multicouche)
activation='relu'#Fonction d'activation(identify, logistic, tanh, relu)
solver='adam'#Méthode d'optimisation(lbfgs(Méthode Semi-Newton), sgd, adam)
alpha=0.0001
batch_size='auto'#Taille du lot(sgd,Postuler avec Adam)
learning_rate='constant'
learning_rate_init=0.001
power_t=0.5
max_iter=200#Nombre maximum d'époques
shuffle=True#Mélangez l'échantillon à chaque itération
random_state=None
tol=0.0001
verbose=False
warm_start=False
momentum=0.9
nesterovs_momentum=True
early_stopping=False
validation_fraction=0.1
beta_1=0.9
beta_2=0.999
epsilon=1e-08
Vous pouvez voir qu'il peut être réglé assez finement. N'est-ce pas suffisant pour la plupart des gens qui souhaitent utiliser un réseau neuronal? Cependant, GPGPU etc. ne peut pas être utilisé, donc ces personnes doivent utiliser le tensorflow etc. docilement.
train_test_split était auparavant dans le module cross_validation, Il semble être passé de la 0.18.0 au module model_selection.
Recommended Posts