Seite 1 von 1

mnist Problem

Verfasst: Donnerstag 1. November 2018, 17:34
von MUdata
Hallo!
Ich kriege für das folgende Programm die untenstehenden Fehlermeldungen:

Code: Alles auswählen

# Resourcen importieren
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import keras

from keras.models import Sequential
from keras.layers import Dense

from sklearn.preprocessing import LabelEncoder, OneHotEncoder, StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix

# Daten importieren

dataset = pd.read_csv('Churn_Modelling.csv')
X = dataset.iloc[:, 3:13].values
y = dataset.iloc[:, 13].values
    
# Der LabelEncoder kodiert automatisch verschiedene Bezeichnungen mit Werten zwischen 0 und n_classes-1

labelencoder_X_1 = LabelEncoder()
X[:, 1] = labelencoder_X_1.fit_transform(X[:, 1])

labelencoder_X_2 = LabelEncoder()
X[:, 2] = labelencoder_X_2.fit_transform(X[:, 2])

# Nun folgt die One-hot-Codierung, bei dem für jeden Wert der Merkmalsspalte ein Dummy-Merkmal erstellt wird

onehotencoder = OneHotEncoder(categorical_features = [1])
X = onehotencoder.fit_transform(X).toarray()
X = X[:, 1:]

# Der Datensatz wird in ein training set und ein test set aufgeteilt

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2)

# Der StandardScaler geht davon aus, dass die Daten innerhalb jedes Merkmals normal verteilt sind und 
# skaliert sie so, dass die Verteilung nun um 0 zentriert ist, mit einer Standardabweichung von 1. 
# Der Mittelwert und die Standardabweichung werden für das Merkmal berechnet und schliesslich wird dieses skaliert.

sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

# Initialisierung des neuronalen Netzwerks

classifier = Sequential()

# Hinzufügen der Eingabeschicht und der ersten versteckten Schicht

classifier.add(Dense(output_dim = 6, init = 'uniform', activation = 'relu', input_dim = 11))

# Hinzufügen der zweiten versteckten Schicht

classifier.add(Dense(output_dim = 6, init = 'uniform', activation = 'relu'))

# Hinzufügen der Ausgabeschicht

classifier.add(Dense(output_dim = 1, init = 'uniform', activation = 'sigmoid'))


# Neuronales Netzwerk kompilieren

classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])

# Das Modell wird nun trainiert, aber man beachte: Wir verwenden die Fit-Methode für die Anpassung des Modells. 
# Die Gewichte müssen optimiert werden, um die Modelleffizienz zu verbessern.
# Also wann aktualisiert man die Gewichte?
# 
# -> batch size <-  wird verwendet, um die Anzahl der Beobachtungen anzugeben, nach denen man das Gewicht aktualisieren möchte. 
#
# -> epoch <- ist die Gesamtzahl der Iterationen. Die Wahl des Wertes von batch size und epoch funktioniert nur durch Ausprobieren.

classifier.fit(X_train, y_train, batch_size = 10, nb_epoch = 100)

# Vorhersage der Ergebnisse des test sets

y_pred = classifier.predict(X_test)
y_pred = (y_pred > 0.5)

# Erstellen der confusion matrix

cm = confusion_matrix(y_test, y_pred)

Fehlermeldungen:

Code: Alles auswählen

runfile('C:/Users/Admin/Downloads/ML_Models/01_11_18/NN_Model_1.py', wdir='C:/Users/Admin/Downloads/ML_Models/01_11_18')
Using TensorFlow backend.
Traceback (most recent call last):

  File "<ipython-input-14-b7d815580b52>", line 1, in <module>
    runfile('C:/Users/Admin/Downloads/ML_Models/01_11_18/NN_Model_1.py', wdir='C:/Users/Admin/Downloads/ML_Models/01_11_18')

  File "C:\Users\Admin\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 880, in runfile
    execfile(filename, namespace)

  File "C:\Users\Admin\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/Admin/Downloads/ML_Models/01_11_18/NN_Model_1.py", line 7, in <module>
    from keras.models import Sequential

  File "C:\Users\Admin\Anaconda3\lib\site-packages\keras\__init__.py", line 3, in <module>
    from . import utils

  File "C:\Users\Admin\Anaconda3\lib\site-packages\keras\utils\__init__.py", line 6, in <module>
    from . import conv_utils

  File "C:\Users\Admin\Anaconda3\lib\site-packages\keras\utils\conv_utils.py", line 9, in <module>
    from .. import backend as K

  File "C:\Users\Admin\Anaconda3\lib\site-packages\keras\backend\__init__.py", line 89, in <module>
    from .tensorflow_backend import *

  File "C:\Users\Admin\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py", line 5, in <module>
    import tensorflow as tf

  File "C:\Users\Admin\Anaconda3\lib\site-packages\tensorflow\__init__.py", line 26, in <module>
    from tensorflow.tools.api.generator.api import *  # pylint: disable=redefined-builtin

  File "C:\Users\Admin\Anaconda3\lib\site-packages\tensorflow\tools\api\generator\api\__init__.py", line 531, in <module>
    from tensorflow.tools.api.generator.api import keras

  File "C:\Users\Admin\Anaconda3\lib\site-packages\tensorflow\tools\api\generator\api\keras\__init__.py", line 14, in <module>
    from tensorflow.tools.api.generator.api.keras import datasets

  File "C:\Users\Admin\Anaconda3\lib\site-packages\tensorflow\tools\api\generator\api\keras\datasets\__init__.py", line 11, in <module>
    from tensorflow.tools.api.generator.api.keras.datasets import mnist

ImportError: cannot import name 'mnist'

Was ich probiert habe, ist unter anderem dieses Kommando:
pip install python-mnist

Ich habe mich noch durch verschiedene Hinweise durchgelesen, bin aber noch nicht erfolgreich.

Habt ihr Tipps für mich?

Freundliche Grüße
Michael

Re: mnist Problem

Verfasst: Donnerstag 1. November 2018, 18:41
von Tholo

Code: Alles auswählen

from keras.datasets import mnist
Geht das wenn du das bei den imports einfügst?

Ich seh du hast Anaconda. Musst du da das Package nicht über "Conda" installieren? Hab selbst keine Erfahrung damit

Re: mnist Problem

Verfasst: Donnerstag 1. November 2018, 19:26
von MUdata
Hallo Tholo!
genau, Anaconda. Ich habe nun über conda fehlende Packages, auch von keras, ergänzt bzw nachdem es beim ersten Mal nicht richtig wollte, wurde es jetzt, hoffe ich, richtig eingebunden. Vielen Dank für den Tipp!
Also nur die Zeile

Code: Alles auswählen

 from keras.datasets import mnist 
war nicht die Lösung

Nach dem Ergänzen der Packages kriege ich nun folgende Fehler:

Code: Alles auswählen

runfile('C:/Users/Admin/Downloads/ML_Models/01_11_18/NN_Model_1.py', wdir='C:/Users/Admin/Downloads/ML_Models/01_11_18')
Using TensorFlow backend.
Traceback (most recent call last):

  File "<ipython-input-4-b7d815580b52>", line 1, in <module>
    runfile('C:/Users/Admin/Downloads/ML_Models/01_11_18/NN_Model_1.py', wdir='C:/Users/Admin/Downloads/ML_Models/01_11_18')

  File "C:\Users\Admin\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 880, in runfile
    execfile(filename, namespace)

  File "C:\Users\Admin\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/Admin/Downloads/ML_Models/01_11_18/NN_Model_1.py", line 5, in <module>
    import keras

  File "C:\Users\Admin\Anaconda3\lib\site-packages\keras\__init__.py", line 3, in <module>
    from . import utils

  File "C:\Users\Admin\Anaconda3\lib\site-packages\keras\utils\__init__.py", line 6, in <module>
    from . import conv_utils

  File "C:\Users\Admin\Anaconda3\lib\site-packages\keras\utils\conv_utils.py", line 9, in <module>
    from .. import backend as K

  File "C:\Users\Admin\Anaconda3\lib\site-packages\keras\backend\__init__.py", line 89, in <module>
    from .tensorflow_backend import *

  File "C:\Users\Admin\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py", line 5, in <module>
    import tensorflow as tf

  File "C:\Users\Admin\Anaconda3\lib\site-packages\tensorflow\__init__.py", line 29, in <module>
    from . import estimator

  File "C:\Users\Admin\Anaconda3\lib\site-packages\tensorflow\estimator\__init__.py", line 34, in <module>
    from tensorflow.python.estimator.exporter import BestExporter

ImportError: cannot import name 'BestExporter' 
..da bin ich momentan auf weiterer Suche, wo das Problem schon aufgetreten ist und freue mich auf jeden Hinweis!

Re: mnist Problem

Verfasst: Donnerstag 1. November 2018, 20:01
von snafu
Die Fehlermeldung deutet auf eine veraltete Version von TensorFlow hin, wo es den BestExporter noch nicht gab. Wenn du das Paket aktualisierst, sollte der Import klappen.

EDIT: Laut Doku ist die Klasse seit Version 1.9 verfügbar.

Re: mnist Problem

Verfasst: Donnerstag 1. November 2018, 20:52
von ThomasL
Die Fehlermeldungen haben gar nichts mit deinem Code zu tun, da stimmt was mit der Tensorflow Installation nicht

Re: mnist Problem

Verfasst: Donnerstag 1. November 2018, 20:57
von MUdata
Hallo Snafu und Thomas, vielen Dank für eure Beiträge.
Ich werde dann die Tensorflow Installation überprüfen.
Viele Grüße
Michael

Re: mnist Problem

Verfasst: Donnerstag 1. November 2018, 21:54
von snafu
ThomasL hat geschrieben: Donnerstag 1. November 2018, 20:52 Die Fehlermeldungen haben gar nichts mit deinem Code zu tun, da stimmt was mit der Tensorflow Installation nicht
Die Fehlermeldungen treten doch offenbar schon beim Importieren auf. Klar, der restliche Code wird durch die frühe Exception gar nicht mehr "angefasst". Und falls dich das ganze Drumherum im Traceback verwirrt und es sich darauf bezog: Das ist an sich nicht ungewöhnlich, wenn man ein Skript aus einer Entwicklungsumgebung heraus aufruft.