[PYTHON] Dossier d'apprentissage n ° 27 (31e jour)

Dossier d'apprentissage (31e jour)

Début des études: samedi 7 décembre

Matériel pédagogique, etc.: ・ Miyuki Oshige "Détails! Note d'introduction à Python3 »(Sotech, 2017): 12/7 (sam) -12/19 (jeu) lu ・ Progate Python course (5 cours au total): 12/19 (jeudi) -12/21 (samedi) fin ・ Andreas C. Müller, Sarah Guido "(titre japonais) Apprentissage automatique à partir de Python" (O'Reilly Japon, 2017): 21/12 (sam) -23 décembre (sam) ・ Kaggle: Real or Not? NLP with Disaster Tweets: Publié du samedi 28 décembre au vendredi 3 janvier Ajustement ・ Wes Mckinney "(titre japonais) Introduction à l'analyse de données par Python" (O'Reilly Japon, 2018): 1/4 (mercredi) à 1/13 (lundi) lire ・ Yasuki Saito "Deep Learning from Zero" (O'Reilly Japan, 2016): 1/15 (mer) -1/20 (lun) ・ ** François Chollet «Deep Learning avec Python et Keras» (Queep, 2018): 1/21 (mar.) ~ **

"Apprentissage en profondeur avec Python et Keras"

p.186 Chapitre 5 Fin de la lecture jusqu'à l'apprentissage profond de la vision par ordinateur.

Classification des iris par réseau neuronal

Bien que le livre expliquait le réseau de neurones à l'aide de caractères manuscrits de l'ensemble de données keras, j'ai osé le classer en utilisant l'ensemble de données iris de sklearn.

Importation de divers modules


from keras import models, layers
from keras.utils.np_utils import to_categorical
from sklearn import datasets
from sklearn.model_selection import train_test_split

Préparation


#Lire les données des jouets
iris = datasets.load_iris()

#Vérifiez le contenu du répertoire,'data'Quand'target'Définir chacun
dir(iris)
x = iris.data
y = iris.target

#Vérifiez la forme des données
print([x.shape, y.shape])
print(iris.fearture_names)
print(x[0])

x.shape = (150, 4), y.shape = (150, )

Vérifiez l'élément de x dans iris.feature_names.

Confirmez que les quatre colonnes de x correspondent respectivement à ['longueur sépale (cm)', 'largeur sépale (cm)', 'longueur pétale (cm)', 'largeur pétale (cm)'].

y vaut 0 à 2 et correspond à 3 types d'iris.


Normalisation


def normalization(x):
    mean = x.mean(axis = 0)
    std = x.std(axis = 0)
    x -= mean
    x /= std
    return x

x = normalization(x)
y = to_categorical(y)

En soustrayant la moyenne de x et en divisant par l'écart type, chaque élément est normalisé de sorte que "le centre est 0 et l'écart type 1". y vectorise également 0 ou 1 avec to_categorical.


Séparé pour la formation et les tests


x_train, x_test, y_train, y_test = 
train_test_split(x, y, train_size = 0.7, random_state = 3)

print([x_train.shape, x_test.shape, y_train.shape, y_test.shape])

Divisé pour la formation et pour les tests à 7: 3. Puisque Shuffle a la valeur True par défaut, seul random_state est défini.

Les éléments sont [(105, 4), (45, 4), (105, 3), (45, 3)], respectivement, et il est confirmé qu'ils peuvent être divisés correctement.


Construction du modèle: 2 couches


model = models.Sequential()

model.add(layers.Dense(64, activation = 'relu', input_shape = (x.shape[1], )))
model.add(layers.Dense(64, activation = 'relu'))
model.add(layers.Dense(3, activation = 'softmax'))

model.summary()

model.compile(optimizer = 'rmsprop', loss = 'categorical_crossentropy', metrics = ['accuracy'])

ReLU est utilisé pour la fonction d'activation de chaque couche, et softmax est utilisé pour la fonction d'activation de la dernière couche. (Voir p.119 Tableau 4-1)

Visualisez chaque couche avec model.summary () last image.png

Pour l'optimiseur, j'ai choisi ceci dans la description que rmsprop est presque suffisant.


Apprentissage et évaluation


model.fit(x_train, y_train, epochs = 100, batch_size = 1, verbose=0)

result = model.evaluate(x_test, y_test)

print(result)
#[0.15816927485995821, 0.9555555582046509]

epochs vaut 100 pour le moment, batch_size vaut 1 naturellement.

Comme mentionné ci-dessus, même s'il s'agissait d'une structure simple, le résultat était une précision de 96%.

Action 1: Produisez la dernière couche du modèle

value error.png Puisqu'il existe trois types d'iris, l'erreur qui s'est produite car ** layer.Dense (3) ** doit être remplacée par ** layer.Dense (1) . Il doit être modifié en fonction du nombre de sorties requises. ( 10 pièces de 0 à 9 pour les caractères manuscrits **)

Action 2: Enregistrement des apprentissages

log.png Ce n'est pas une erreur, mais si l'enregistrement n'est pas requis, il peut être traité en définissant l'argument verbose = 0.

Recommended Posts

Dossier d'apprentissage n ° 17 (21e jour)
Dossier d'apprentissage n ° 27 (31e jour)
Dossier d'apprentissage n ° 21 (25e jour)
Dossier d'apprentissage n ° 10 (14e jour)
Dossier d'apprentissage n ° 24 (28e jour)
Dossier d'apprentissage n ° 19 (23e jour)
Dossier d'apprentissage n ° 29 (33e jour)
Dossier d'apprentissage n ° 23 (27e jour)
Dossier d'apprentissage n ° 25 (29e jour)
Dossier d'apprentissage n ° 26 (30e jour)
Dossier d'apprentissage n ° 20 (24e jour)
Dossier d'apprentissage n ° 14 (18e jour) Kaggle4
Dossier d'apprentissage n ° 15 (19e jour) Kaggle5
Fiche d'apprentissage 4 (8e jour)
Fiche d'apprentissage 3 (7e jour)
Fiche d'apprentissage 5 (9e jour)
Fiche d'apprentissage 6 (10e jour)
Enregistrement d'apprentissage de la programmation 2ème jour
Fiche d'apprentissage 8 (12e jour)
Fiche d'apprentissage 1 (4e jour)
Fiche d'apprentissage 7 (11e jour)
Fiche d'apprentissage 2 (6e jour)
Fiche d'apprentissage 16 (20e jour)
Dossier d'apprentissage 22 (26e jour)
Fiche d'apprentissage 13 (17e jour) Kaggle3
Fiche d'apprentissage 12 (16e jour) Kaggle2
Dossier d'apprentissage
Dossier d'apprentissage n ° 3
Dossier d'apprentissage n ° 1
Dossier d'apprentissage n ° 2
Fiche d'apprentissage 11 (15e jour) Participation de Kaggle
Apprentissage Python jour 4
Fiche d'apprentissage (2ème jour) Scraping par #BeautifulSoup
Dossier d'apprentissage jusqu'à présent
Fiche d'apprentissage Linux ① Planifier
<Cours> Apprentissage en profondeur: Day2 CNN
Fiche d'apprentissage (3e jour) Méthode de description du sélecteur #CSS #Scraping avec BeautifulSoup
<Cours> Apprentissage en profondeur: Jour 1 NN
Sujets> Deep Learning: Day3 RNN
Premier mois d'apprentissage en programmation
Étudiez en profondeur le Deep Learning [DW Day 0]
Fiche d'apprentissage (4e jour) #Comment obtenir le chemin absolu à partir du chemin relatif