Januar 2018

Band 33, Nummer 1

Dieser Artikel wurde maschinell übersetzt.

Künstlich intelligent: Erstellen von Modellen in Azure ML Workbench

Durch Frank La La | Januar 2018

Frank LaVigneMeine letzte Spalte ich Azure Machine-Learning-Workbench (Azure ML-Workbench), ein neues Tool für professionelle Datenanalysten und Machine learning-IT (ML) eingeführt. Dies steht im geschickter zu Azure Machine Learning Studio (Azure ML Studio), also ein Tool in erster Linie dafür Einsteiger konzipiert. Allerdings impliziert dies nicht, dass Azure ML-Workbench nur für erfahrene Data Scientists ist. Intermediate und sogar für Einsteiger Datenanalysten können auch die Tools zur Verfügung, in Azure ML-Workbench profitieren.

Laden die Projektvorlagen von Iris Klassifizierer

Wie im vorherigen Artikel erwähnt, bietet Azure ML-Workbench zahlreiche Projektvorlagen (verwendet die lineare Regression Vorlage). Diesmal werde ich die Klassifizierung Iris-Projektvorlage veranschaulicht auch weitere Funktionen von Azure ML-Workbench nutzen. Wenn Sie Azure ML-Workbench noch nicht installiert haben, finden Sie in der Dokumentation unter bit.ly/2j2NVdH.

Iris-DataSet ist ein Dataset mit mehreren Variate, aus denen 50 Beispiele von jedem der drei Arten von Iris besteht. Jedes Beispiel wurden vier Funktionen gemessen: die Länge und die Breite der Sepals und Blütenblätter. Auf der Grundlage der Kombination aus diesen vier Funktionen, kann die Art des Iris ermittelt werden. Es ist eine häufig verwendete Stichprobendataset in Data Science und ML. 

Öffnen Sie Azure ML-Workbench, wählen Sie Projekte aus, und klicken Sie auf das Pluszeichen. Wählen Sie im Kontextmenü, das angezeigt wird, neues Projekt zum Erstellen eines neuen Projekts aus. Nennen Sie das Projekt IrisClassifier. Suchen Sie nach Klassifizierung Iris in den Vorlagen für Projekte, klicken Sie darauf, und klicken Sie auf die Schaltfläche "erstellen" (siehe Abbildung 1).

Auswählen der klassifizierenden Iris-Projektvorlage
Abbildung 1 die klassifizierenden Iris-Projektvorlage auswählen

Anzeigen von Code

Nachdem das Projekt in Azure ML-Workbench geladen wird, klicken Sie auf das Symbol "Ordner" auf der linken Seite, um die enthaltenen Dateien zu öffnen. Klicken Sie auf die Datei iris_sklearn.py, um ihren Inhalt im Editor anzuzeigen. Es sollte ungefähr Abbildung 2.

Die iris_sklearn.py-Datei in Azure ML Workbench Text-Editor
Abbildung 2 die iris_sklearn.py Datei in Azure ML Workbench Text-Editor

Für den Fall, dass Sie sich gefragt haben, ist der Code in einer anderen Sprache mit datenspezialisten und ML IT beliebten Python. Python hat eine Vielfalt von ML, wissenschaftliche und Zeichnungslinien Bibliotheken, die die Sprache mit Ökosystems Tools und Hilfsprogramme bereitstellen. Einer davon ist Scikit-erfahren Sie, eine beliebte ML-Bibliothek. Verschiedene Segmente der Scikit-Informationen als Sklearn im Code bezeichnet, in Zeilen 7 bis 14 in das Projekt importiert werden. Während eine vollständige Lernprogramm auf der Sprache Python außerhalb des Bereichs dieses Artikels liegt, sollten die Syntax für alle C#-Entwickler vertraut sein. Der Fokus hier auf die Erstellung von Modellen mit Scikit werden-weitere Informationen.

Workflow von einem Azure ML-Workbench-Projekt

Der erste Schritt in jedem ML-Projekt ist die Daten lädt. Der zweite Schritt ist häufig die arbeitsaufwendig und zeitaufwändig: die Daten Rechtsstreitigkeiten. Dies ist, in denen Azure ML-Workbench gut zur Geltung. Klicken Sie auf die Datei iris.csv illustriert die unformatierten Daten angezeigt. Beachten Sie, dass diese Datei die Spaltennamen fehlt. Klicken Sie nun auf die Liste der iris.dprep-Dateien auf der linken Seite des Bildschirms auf. Beachten Sie die Anzahl der Schritte, die zum Bereinigen der Daten. Die Schritte Namen zu den Spalten hinzufügen und Entfernen von Zeilen, in denen die Arten-Spalte null ist. Klicken Sie auf den Pfeil rechts neben dem Schritt Filter Arten. Klicken Sie im Kontextmenü auf Bearbeiten, um das Dialogfeld Filterspalte in anzuzeigen abbildung3. Die Regel wird eingerichtet, um alle Zeilen zu entfernen, in dem die Arten-Spalte null ist. Beachten Sie, dass zusätzliche Optionen zum Hinzufügen von zusätzlicher Bedingungen. Öffnen Sie das Dialogfeld wird ein wertvolles Tool in Ihrem Data Science-Projekte aus, während Daten selten in einem fehlerfreien Format stammen, die von ML Algorithmen nutzbar ist.

Dialogfeld dem Filterfenster-Spalte
Abbildung 3 Dialogfeld dem Filterfenster-Spalte

Nach Verweisen auf verschiedene Bibliotheken und die lokale Umgebung initialisieren, lädt der Code die Daten durch Ausführen der Datei iris.dprep Zeile 28, lädt die Datendatei und führt alle definierten Schritte aus:

iris = run('iris.dprep', dataflow_idx=0, spark=False)

Die Ausgabe ist ein Pandas Datenrahmen mit den bereinigten Daten an. Eine Pandas Datenrahmen ist eine zweidimensionale Datenstruktur, die eine Tabelle in einer SQL-Datenbank oder in einer Kalkulationstabelle ähnelt. Erfahren Sie mehr über Data Frames an bit.ly/2BlWl6K.

Jetzt, wo die Daten bereinigt und geladen wurde, ist es Zeit für die Daten in Funktionen und Beschriftungen zu trennen. Funktionen bilden zusammen die verschiedenen Felder erforderlich, um eine Vorhersage zu treffen. In diesem Fall wird unter Verwendung des Breite und Länge für Sepals und Blütenblätter, der Algorithmus Vorhersagen, welche Arten von Iris Pflanze angehört. In diesem Fall werden die Funktionen aus: Sepal-Length, Sepal Breite, sodass Länge und Breite des Blatts. Die Bezeichnung oder der vorhergesagte Wert ist die Art. Zeile in der Datei iris_sklearn.py 32 trennt die Datenrahmen in zwei Arrays verwendet werden: Informationen zu den Funktionen und Y für die Bezeichnung, X, wie hier gezeigt (streng genommen ist X und Y NumPy Arrays, eine Datenstruktur, die aus der Bibliothek NumPy sind):

X, Y = iris[['Sepal Length', 'Sepal Width', 'Petal Length', 
  'Petal Width']].values, iris['Species'].values

Nachdem die Daten in eine Bezeichnung und Funktionen aufgeteilt ist, ist es Zeit für die Daten in einen Trainingssatz und einen Testsatz aufteilen. Die folgende Codezeile wird nach dem Zufallsprinzip 35 Prozent der Zeilen im Eingabedataset reserviert und platziert es in Y_train und Y_test; die verbleibenden 65 Prozent ein Wechsel in X_train und X_test:

X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.35,
  random_state=0

Im überwachten Learning werden die richtigen Werte an die Bezeichnung bezeichnet. Von den Funktionen und die Bezeichnung an sie übergibt, wird der Algorithmus trainiert. Der Algorithmus ermittelt dann die Beziehungen und das Muster zwischen den Funktionen und die richtige Bezeichnung. Die folgende Zeile wird ein ML-Modell mit logistic Regression-Algorithmus für die Trainingsdaten erstellt:

clf1 = LogisticRegression(C=1/reg).fit(X_train, Y_train)

Die logistische Regression ist eine statistische Methode, die Analyse von Datasets sind eine oder mehrere Variablen, die ein Ergebnis zu bestimmen (bit.ly/2zQ1hVe). In diesem Fall bestimmen die Dimensionen der Sepals und Blütenblätter Iris Arten.

Sobald trainiert, wird der Algorithmus für die Genauigkeit durch Aufrufen der Bewertungsmethode für das Modell getestet:

accuracy = clf1.score(X_test, Y_test)
print ("Accuracy is {}".format(accuracy))

Die beste Möglichkeit, dies zu verstehen ist, den Code tatsächlich auszuführen. Bevor, erfolgen kann, besteht jedoch ein weiterer Schritt. In diesem Projekt wird Matplotlib, eine beliebte Zeichnungslinien-Bibliothek für Python. Wählen Sie um es zu installieren, öffnen Sie eine Eingabeaufforderung, über das Menü Datei. Geben Sie an der Befehlszeile Folgendes ein:

pip install matplotlib

Nach Abschluss der Installation geben Sie Folgendes an der Befehlszeile ein:

python iris_sklearn.py

In wenigen Minuten noch einmal, die Ausgabe sollte wie folgt aussehen Abbildung 4.

Ausgabe des Programms iris_sklearn.py
Abbildung 4-Ausgabe des Programms iris_sklearn.py

Wie im Befehlsfenster angezeigt wird, ist die Genauigkeit des Modells 0.6792452830188679, was bedeutet, dass sie die Arten von Iris in den Testdaten 67.92 Prozent der Zeit errät.

Ausführung des Codes aus in Azure ML-Workbench

Während der Ausführung des Codes in der Befehlszeile nützlich ist, bietet Azure ML-Workbench eine Möglichkeit, dies vereinfachen und Erfassen von Informationen zu den Aufträgen, die ausgeführt wurden. Suchen Sie auf die Schaltfläche "ausführen". Unmittelbar links davon gibt es zwei Dropdownlisten und ein Textfeld. Standardmäßig sollte es wie folgt aussehen Abbildung 5. Klicken Sie auf Ausführen.

Ausführen von Dateien in Azure ML-Workbench
Abbildung 5 Ausführen von Dateien in Azure ML-Workbench

Dies führt das Skript lokal aus und verfolgt die Ausführung des Skripts über die Registerkarte "Aufträge" in Azure ML-Workbench. Nachdem das Programm ausgeführt wird, werden die Ausgabe und Details zum Testlauf angezeigt. Klicken auf den iris_sklearn.py-Eintrag in der Ausführungsliste, um anzuzeigen, die. Wählen Sie den ersten Datensatz im Raster unter ausgeführt wird. Überprüfen Sie die Eigenschaften des ausführenden-Bereich, um grundlegende Leistungsstatistiken der Ausführung anzuzeigen. Scrollen Sie zu finden Sie die Metriken und Visualisierung Abschnitte, um die Ausgabe aus dem Skript zu sehen, wie gezeigt in Abbildung 6.

Metriken und Visualisierungen, die in Azure ML-Workbench angezeigt
Abbildung 6 Metriken und Visualisierungen, die in Azure ML-Workbench angezeigt

Im vorherigen Artikel wurde ich erläutert, wie die Ergebnisse eines Auftrags zu durchsuchen und Anzeigen des Auftragsverlaufs. Finden Sie weitere Details an, die (msdn.com/magazine/mt814414).

Beibehalten eines trainierten Modells

Während der Ausführung des Skripts iris_sklearn.py entweder über Azure ML-Workbench oder der Befehlszeile müssen Sie wahrscheinlich feststellen, dass einige Sekunden dauert. Auf meiner Surface Book dauert es ungefähr neun Sekunden. Während der verschiedenen Hardwarekonfigurationen unterschiedlichen Ergebnissen führen werden, ist der Prozess kaum unmittelbare. In den meisten Fällen Verarbeitung wird zum Trainieren des Modells gewidmet. Glücklicherweise besteht kaum Bedarf, kontinuierlich Trainieren eines Modells. Zeilen 79 über 82 des trainierten Modells nehmen und auf Datenträger unter Verwendung der Engpass-Bibliothek gespeichert (bit.ly/2im9w3O):

print ("Export the model to model.pkl")
f = open('./outputs/model.pkl', 'wb')
pickle.dump(clf1, f)
f.close()

Zeilen 86 und 87 veranschaulichen, wie Sie das trainierte Modell vom Datenträger wiederherstellen:

f2 = open('./outputs/model.pkl', 'rb')
clf2 = pickle.load(f2)

Der nächste Schritt ist das Beispieldaten erstellen und verwenden das Modell, die Arten, vorherzusagen, die in Zeilen 89 und 98 ausgeführt wird:

# Predict on a new sample
X_new = [[3.0, 3.6, 1.3, 0.25]]
print ('New sample: {}'.format(X_new))
# Add random features to match the training data
X_new_with_random_features = np.c_[X_new, random_state.randn(1, n)]
# Score on the new sample
pred = clf2.predict(X_new_with_random_features)
print('Predicted class is {}'.format(pred))

Wenn Sie wieder auf verweisen Abbildung 4, sehen Sie in der unteren Mitte des Screenshots, dass die vorhergesagte Klasse ["Iris-Setosa'].

Übergeben von Parametern

Möglicherweise haben Sie die Argumente Textfeld neben der Schaltfläche "ausführen" bemerkt. Früher bleiben ich dieses Feld leer.

In der Datei iris_sklearn.py Zeilen 47 und 48 prüfen auf Vorhandensein eines Parameters, konvertieren Sie den Wert in einen float-Wert aus, und legen Sie die Reg-Variable auf den Wert. Wenn keine Parameter an die Anwendung gesendet werden, behält die Variable den Wert, den sie mit für Zeile 45 initialisiert wurde: 0,01 US-Dollar, wie folgt:

if len(sys.argv) > 1:
  reg = float(sys.argv[1])

Die Registrierungswert als Parameter weitergegeben wird, die an die Methode LogisticRegression und legt die Regularisierung Rate fest. Regularisierung Rate steuert die Einführung von zusätzlichen Informationen, um zu vermeiden, eine überanpassung des Modells. Eine überanpassung tritt auf, wenn das Modell gut für Testdaten ausführt. Ein Modell, das sehr präzise Ergebnisse Testdaten bereitstellt, wird wahrscheinlich unbrauchbar, wenn der angegebene Daten außerhalb des Tests, die in der Zukunft festgelegt werden. Weitere Informationen zu regularisierung und überanpassung finden Sie unter bit.ly/2kfLU1f und bit.ly/2iatJpCzugeordnet.

Geben Sie die Zahl 10 in das Textfeld Argumente ein, und klicken Sie auf Ausführen, einmal, sicherstellen, dass lokale und iris_sklearn.py ausgewählt sind. Abschließend klicken Sie auf der Registerkarte "Aufträge", Durchsuchen sie, und wählen Sie iris_sklearn.py. Beachten Sie, dass die Diagramme jetzt einen zweiten Datenpunkt entsprechend Abbildung 7.

Einen zweiten Datenpunkt hinzugefügt iris_sklearn.py Aufträge Registerkarte Diagramme
Abbildung 7: eine Sekunde Datenpunkt hinzugefügt iris_sklearn.py Aufträge Registerkarte Diagramme

Jetzt, klicken Sie auf das Symbol "Dateien", und klicken Sie auf die Datei run.py. Dieses Programm wird die iris_sklearn.py-Datei mit den neuen regularisierung Parameter aufrufen, die Hälfte des Werts von der vorherigen Ausführung ist, bis der Wert unter 0,005 abruft. Da ich das Skript bereits mit einem 10-Parameter vorhanden war, möchte ich Zeile 7 bis zu fünf ändern. Da Sie bereits bemerkt haben, können nicht der Text bearbeitet werden. Klicken Sie auf der Dropdownliste auf der linken oberen Teil des Textbereichs um in den Bearbeitungsmodus wechseln, um den Text zu bearbeiten. Es ist eine Option aus, um in einem anderen Programm, z. B. Visual Studio-Code zu bearbeiten. Allerdings in diesem Fall "Bearbeiten" auswählen im Workbench-Text-Editor (siehe Abbildung 8).

In den Bearbeitungsmodus wechseln
Abbildung 8-Switch in den Bearbeitungsmodus

Nach dem Ändern der Zeile 7 reg = 5, klicken Sie auf dem Speicherpfad Symbol. Klicken Sie auf Öffnen Sie eine Eingabeaufforderung aus dem Menü "Datei" und Typ aus, die Geben Sie den folgenden Befehl ein, und drücken Sie, dann auf:

python run.py

Das Programm wird ausgeführt, und übergeben Sie einen Befehl für das zugrunde liegende Betriebssystem zum Ausführen der iris_sklearn.py-Datei durch das System von Azure, Azure ML-Workbench. Beachten Sie, dass die Ausgabe im Befehlszeilenfenster, und klicken Sie im Bereich Aufträge innerhalb des Azure Azure ML-Workbench-Programms:

os.system('az ml experiment submit -c local ./iris_sklearn.py {}'.format(reg))

Klicken Sie auf das Symbol "Aufträge" in der Symbolleiste auf der linken Seite des Bildschirms, und klicken Sie dann auf den Eintrag für iris_sklearn.py. Beachten Sie, wie viele weitere Datenpunkte gibt es in den Diagrammen werden. Das Programm run.py ausgeführt, das Skript mehrere Male mit verschiedenen regularisierung Satz jedes Mal. 

Zusammenfassung

In diesem Artikel untersucht ich einen gemeinsamen Satz der Beispiel-Daten in Data Science mit Azure ML-Workbench, demonstrieren die Leistungsfähigkeit und Flexibilität des Programms. Während nicht als einfache oder als Azure ML Studio bequeme, erschließt viel mehr Möglichkeiten, auf die Datenanalysten und ML Factoryvorlage Azure ML-Workbench. Zunächst ist die Fähigkeit, installieren und nutzen eine beliebige Python-Clientbibliothek, einschließlich Engpass, Matplotlib und, natürlich GGB Kit lernen Sie. Es gibt auch eine Befehlszeilenschnittstelle, die Befehle zum Installieren von Python-Bibliotheken und Ausführen von Python-Code als nachverfolgte Aufträge in Azure ML-Workbench akzeptieren. Nachverfolgte Aufträge haben den zusätzlichen Vorteil untersuchen die Ergebnisse grafisch zum Beschleunigen der Daten experimentieren.

Azure ML-Workbench enthält einige weitere Features, die ich in zukünftigen Artikeln, z. B. Unterstützung für Jupyter Notebooks, Integration der quellcodeverwaltung und Docker-Images untersuchen wird. Das Tool wird tatsächlich leistungsstarke Funktionen zum Science Datenfeld.


Frank La Vigne leitet den Bereich Data & Analytics bei Wintellect und ist Co-Moderator des DataDriven-Podcasts. Er bloggt regelmäßig auf FranksWorld.com, und Sie können ihm auf seinem YouTube-Kanal „Frank's World TV“ (FranksWorld.TV) folgen.

Unser Dank gilt dem folgenden technischen Experten für die Durchsicht dieses Artikels: Andy Leonard


Diesen Artikel im MSDN Magazine-Forum diskutieren