Beginn des Studiums: Samstag, 7. Dezember
Unterrichtsmaterialien usw.: ・ Miyuki Oshige "Details! Python3 Introductory Note ”(Sotech, 2017): 12/7 (Sa) -12/19 (Do) gelesen ・ Progate Python-Kurs (insgesamt 5 Kurse): Ende 12/19 (Donnerstag) -12/21 (Samstag) ・ Andreas C. Müller, Sarah Guido "(japanischer Titel) Maschinelles Lernen ab Python" (O'Reilly Japan, 2017): 21.12. (Sa) - 23. Dezember (Sa) ・ Kaggle: Real or Not? NLP mit Katastrophen-Tweets: Veröffentlicht am Samstag, 28. Dezember, bis Freitag, 3. Januar Einstellung ・ Wes Mckinney "(japanischer Titel) Einführung in die Datenanalyse von Python" (O'Reilly Japan, 2018): 1/4 (Mittwoch) bis 1/13 (Montag) gelesen ・ Yasuki Saito "Tiefes Lernen von Null" (O'Reilly Japan, 2016): 1/15 (Mi) -1/20 (Mo) ・ ** François Chollet „Tiefes Lernen mit Python und Keras“ (Queep, 2018): 1/21 (Di) ~ **
S.186 Kapitel 5 Fertiges Lesen bis zum tiefen Lernen für Computer Vision.
Obwohl das Buch das neuronale Netzwerk anhand der handgeschriebenen Zeichen des Keras-Datensatzes erklärte, wagte ich es, es anhand des Iris-Datensatzes des sklearn zu klassifizieren.
Import verschiedener Module
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
Vorbereitung
#Spielzeugdaten lesen
iris = datasets.load_iris()
#Überprüfen Sie den Inhalt des Verzeichnisses.'data'Wann'target'Definieren Sie jeweils
dir(iris)
x = iris.data
y = iris.target
#Überprüfen Sie die Datenform
print([x.shape, y.shape])
print(iris.fearture_names)
print(x[0])
x.shape = (150, 4), y.shape = (150, )
Überprüfen Sie das Element x in iris.feature_names.
Stellen Sie sicher, dass die vier Spalten von x ['Kelchblattlänge (cm)', 'Kelchblattbreite (cm)', 'Blütenblattlänge (cm)', 'Blütenblattbreite (cm)'] entsprechen.
y ist 0 bis 2 und entspricht 3 Arten von Iris.
Normalisierung
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)
Durch Subtrahieren des Durchschnitts von x und Dividieren durch die Standardabweichung wird jedes Element so normalisiert, dass "die Mitte 0 und die Standardabweichung 1 ist". y vektorisiert auch 0 oder 1 mit to_categorical.
Für Training und Test getrennt
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])
Geteilt für Training und Test um 7: 3. Da Shuffle standardmäßig True ist, wird nur random_state festgelegt.
Die Elemente sind [(105, 4), (45, 4), (105, 3), (45, 3)], und es wird bestätigt, dass sie richtig unterteilt werden können.
Modellbau: 2 Schichten
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 wird für die Aktivierungsfunktion jeder Schicht verwendet, und Softmax wird für die Aktivierungsfunktion der letzten Schicht verwendet. (Siehe S.119 Tabelle 4-1)
Visualisiere jede Ebene mit model.summary ()
Für den Optimierer habe ich dies aus der Beschreibung ausgewählt, dass rmsprop fast ausreicht.
Lernen und Bewerten
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]
Epochen sind vorerst 100, batch_size ist selbstverständlich 1.
Wie oben erwähnt, war das Ergebnis, obwohl es eine einfache Struktur war, eine Genauigkeit von 96%.
Da es drei Arten von Iris gibt, sollte der Fehler, der aufgetreten ist, weil ** Schichten.Dichte (3) ** in ** Schichten.Dichte (1) ** geändert werden. Es muss entsprechend der Anzahl der erforderlichen Ausgänge geändert werden. (** 10 Stück von 0 bis 9 für handschriftliche Zeichen **)
Dies ist kein Fehler, aber wenn keine Aufzeichnung erforderlich ist, kann dies durch Setzen des Arguments verbose = 0 behoben werden.
Recommended Posts