mnist Problem

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
MUdata
User
Beiträge: 3
Registriert: Donnerstag 1. November 2018, 17:11

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
Tholo
User
Beiträge: 177
Registriert: Sonntag 7. Januar 2018, 20:36

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
MUdata
User
Beiträge: 3
Registriert: Donnerstag 1. November 2018, 17:11

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!
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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.
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Die Fehlermeldungen haben gar nichts mit deinem Code zu tun, da stimmt was mit der Tensorflow Installation nicht
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
MUdata
User
Beiträge: 3
Registriert: Donnerstag 1. November 2018, 17:11

Hallo Snafu und Thomas, vielen Dank für eure Beiträge.
Ich werde dann die Tensorflow Installation überprüfen.
Viele Grüße
Michael
Benutzeravatar
snafu
User
Beiträge: 6731
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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.
Antworten