Ich habe versucht, eine Anwendung für maschinelles Lernen mit Dash (+ Docker) Teil 1 ~ Umgebungskonstruktion und Funktionsprüfung ~ zu erstellen

Einführung

Motivation

Während des Studiums des maschinellen Lernens wollte ich etwas erstellen und das Visualisierungstool Plotly berühren. Deshalb arbeitete ich an der Entwicklung einer App mit Dash, die Plotly verwendet. Das tatsächlich von Ihnen erstellte Produkt ist hier. Ich habe diesen Artikel geschrieben, um eine Lernaufzeichnung zu führen. Ich bin ein Anfänger in der App-Entwicklung, aber danke.

Zielgruppe

Ich hoffe, es ist hilfreich für diejenigen, die an der Entwicklung von Apps mit Dash interessiert sind oder Artefakte im Zusammenhang mit maschinellem Lernen und Datenwissenschaft erstellen möchten, sich aber fragen, was sie erstellen sollen. Es wird davon ausgegangen, dass Sie über Docker-Kenntnisse verfügen. Über Docker, [Kame-sans Blog](https://datawokagaku.com/category/%e8%ac%9b%e5%ba%a7%e4%b8%80%e8%a6%a7/docker%e8% b6% 85% e5% 85% a5% e9% 96% 80 /) (Udemy-Kurs, wenn Sie tief lernen möchten) ist leicht zu verstehen und wird empfohlen.

Was ist Dash?

Dash ist eines der Webanwendungs-Frameworks von Python. Es ist ein Open-Source-Framework, das von Plotly entwickelt wurde und in anderen Sprachen wie R verwendet werden kann. Django und flask sind unter Pythons Webanwendungs-Frameworks bekannt, aber Dash zeichnet sich durch ** Spezialisierung auf Visualisierung ** aus. Flask, Plotly.js und React.js werden am hinteren Ende von Dash ausgeführt, und der Kern von Plotly.js ist ein JavaScript-basiertes Visualisierungstool, mit dem Sie interaktive Diagramme zeichnen können. Zusammenfassend lässt sich sagen, dass Dash das Erstellen dynamischer Dashboard-Apps ohne ** Kenntnisse von JavaScript ** vereinfacht. Selbst wenn Sie es in Worten erklären, ist es schwierig, ein Bild zu erhalten. Schauen Sie sich daher die Beispiel-App an, die auf der offiziellen Website veröffentlicht wurde. Es gibt viele Apps für maschinelles Lernen, und der Quellcode ist auch auf GitHub verfügbar, aber nicht alle. Daher denke ich, dass er als eine der Ausgabemethoden für maschinelles Lernen nützlich sein wird.

Umgebung

Die Umgebung wurde mit Docker unter Bezugnahme auf den Artikel dieser Person erstellt. Bereiten Sie die folgenden Dateien im Verzeichnis für die Dash-App vor (diesmal 'Dash_App').

<Verzeichnisstruktur>
Dash_App/
  ├ app.py
  ├ Dockerfile
  └ docker-compose.yml

Dockerfile


FROM python:3.7.3
USER root

RUN apt-get update
RUN apt-get install -y vim less
RUN apt-get install -y zsh less
RUN pip install --upgrade pip
RUN pip install --upgrade setuptools

RUN pip install \
    dash==1.16.3 \
    pandas \
    category_encoders \
    scikit-learn

ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8

EXPOSE 5050
CMD ["bash"]

docker-compose.yml


version: '3'
services:
  dash-app:
    restart: always
    build: .
    container_name: 'dash-app'
    ports:
      - "5050:5050"
    working_dir: '/root/'
    tty: true
    volumes:
      - .:/root/src/
      - ~/.zshrc:/root/.zshrc

Ich werde den Inhalt der App in app.py schreiben. Um den Vorgang zu überprüfen, kopieren Sie zunächst den Code in das offizielle Tutorial.

app.py


import dash
import dash_core_components as dcc 
import dash_html_components as html

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)

app.layout = html.Div(children=[

    html.H1(children='Hello Dash'),
    html.Div(children='Dash: A web application framework for Python.'),
    dcc.Graph(
        id='example-graph',
        figure={
            'data':[{'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'SF'},
                    {'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Montréal'}],
            'layout':{'title': 'Dash Data Visualization'}
        }
    )
])

if __name__ == '__main__':
    app.run_server(host='0.0.0.0', port=5050, debug=True)

Beachten Sie, dass "host =" 0.0.0.0 "und" port = 5050 "im Codeteil (unterste Zeile), der den Server startet, hinzugefügt und angegeben werden. Starten Sie den Container nach dem Erstellen der Datei mit dem folgenden Befehl.

$ docker-compose up -d --build

Wenn der Container gestartet wird, geben Sie den Container ein und führen Sie "app.py" aus, wie im folgenden Befehl gezeigt. * Dash-App ist der in docker-compose.yml angegebene Containername.

$ docker-compose exec dash-app zsh -c "python src/app.py"

Wenn es kein Problem gibt, wird die App gestartet. Wenn Sie über Ihren Browser auf localhost: 5050 zugreifen und der folgende App-Bildschirm angezeigt wird, sind Sie erfolgreich. * Drücken Sie "Strg + C", um die App zu beenden. スクリーンショット 2020-11-12 0.27.48.png

abschließend

Ich habe vorgestellt, wie man eine Dash-Umgebung mit einem Docker-Container erstellt (obwohl ich die Docker-Datei nur ein wenig geändert habe, während ich mir einen anderen Artikel angesehen habe ...). Docker ist praktisch, da Sie schnell die problematischste Umgebung erstellen können. In Nächster Artikel (Teil 2) möchte ich vorstellen, wie man app.py schreibt, indem ich mich auf den grundlegenden Teil konzentriere, während ich aus dem offiziellen Tutorial herausziehe. .. Vielen Dank.

Recommended Posts

Ich habe versucht, eine Anwendung für maschinelles Lernen mit Dash (+ Docker) Teil 1 ~ Umgebungskonstruktion und Funktionsprüfung ~ zu erstellen
Ich habe eine App für maschinelles Lernen mit Dash (+ Docker) Teil 3 ~ Übung ~ erstellt
Ich habe eine App für maschinelles Lernen mit Dash (+ Docker) Teil 2 ~ Grundlegende Schreibweise für Dash ~ erstellt
Ich habe versucht, mit Docker eine Padrino-Entwicklungsumgebung zu erstellen
[Rails 6.0, Docker] Ich habe versucht, die Konstruktion der Docker-Umgebung und die zum Erstellen eines Portfolios erforderlichen Befehle zusammenzufassen
[iOS] Ich habe versucht, mit Swift eine insta-ähnliche Verarbeitungsanwendung zu erstellen
[Erste Umgebungskonstruktion] Ich habe versucht, eine Rails6 + MySQL8.0 + Docker-Umgebung unter Windows 10 zu erstellen.
Ich habe versucht, mit Chocolatey eine Java8-Entwicklungsumgebung zu erstellen
Ich habe versucht, eine Java EE-Anwendung mit OpenShift zu modernisieren.
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Ich habe versucht, eine Webanwendung aus anderthalb Monaten Programmier-Lerngeschichte zu entwickeln
Einfacher LINE BOT mit Java Servlet Teil 2: Ich habe versucht, Bildnachrichten und Vorlagen zu erstellen
Ich habe versucht, mit Docker eine Plant UML Server-Umgebung zu erstellen
Ich habe versucht, eine Android-Anwendung mit MVC zu erstellen (Java)
Ich habe versucht, den Betrieb des gRPC-Servers mit grpcurl zu überprüfen
Ich habe versucht, mit Rails eine Gruppenfunktion (Bulletin Board) zu erstellen
Nachdem ich Progate gelernt hatte, versuchte ich, eine SNS-Anwendung mit Rails in der lokalen Umgebung zu erstellen
Erstellen Sie mit Docker eine TensorFlow-Betriebsüberprüfungsumgebung
Ich habe eine Rails-Umgebung mit Docker und MySQL erstellt, aber ich war krank
Ich habe versucht, eine einfache Gesichtserkennungs-Android-Anwendung mit OpenCV zu erstellen
Ich habe versucht, eine Web-API zu erstellen, die mit Quarkus eine Verbindung zur Datenbank herstellt
Erstellen einer Entwicklungsumgebung für Java-Webanwendungen mit Docker für Mac Teil1
Ich habe einen Arbitrage-Transaktionsbot für virtuelle Währungen erstellt und versucht, Geld zu verdienen
[Kopieren und Einfügen] Erstellen Sie mit Docker Compose Part 2 eine Laravel-Entwicklungsumgebung
[Rails API x Docker] Einfache Umgebungskonstruktion mit Shell- und Funktionsprüfung mit Flutter
Ich habe versucht, mit AI "A3RT" eine Talk-App in Java zu erstellen.
Erstellen Sie mit Docker für Mac Teil2 eine Entwicklungsumgebung für Java-Webanwendungen
Ich habe versucht, ein Portfolio mit AWS, Docker, CircleCI, Laravel [mit Referenzlink] zu erstellen.
Ich habe versucht, AdoptOpenJDK 11 (11.0.2) mit dem Docker-Image zu überprüfen
Ich habe versucht, eine Standardauthentifizierung mit Java durchzuführen
Eine Geschichte, als ich versuchte, ein Video zu erstellen, indem ich Processing und Resolume verknüpfte
Ich habe eine Java EE-Umgebung auf AWS erstellt und versucht, eine Webanwendung auszuführen
Ich habe versucht, mit Javafx ein einfaches Spiel zu machen ① "Lass uns Glücksspiel finden" (unvollendet)
Rails6 Ich möchte ein Array von Werten mit einem Kontrollkästchen erstellen
[Android] Ich habe mit ListView + Bottom Sheet einen Materiallistenbildschirm erstellt
Bereiten Sie eine Scraping-Umgebung mit Docker und Java vor
Ich habe versucht, eine Webanwendung voller Fehler mit Spring Boot zu klonen
[Einführung in Docker] Erstellen Sie ein Docker-Image für maschinelles Lernen und verwenden Sie das Jupyter-Notizbuch
Lassen Sie uns eine TODO-Anwendung mit Java 2 erstellen. Ich möchte eine Vorlage mit Spring Initializr erstellen und eine Hello-Welt erstellen
Ich habe versucht, den Block mit Java zu brechen (1)
Ich habe mit Vagrant eine CentOS 8-Umgebung erstellt und versucht, den Ordner zu synchronisieren, aber ich habe einen Fehler erhalten, also habe ich ihn behoben.
Ich habe versucht, eine Webanwendung zu erstellen, die Tweets mit einer Vue-Word-Cloud durchsucht und die Tendenz untersucht, was im zugehörigen Profil geschrieben steht
Ich habe versucht, mit Java und Spring eine Funktion / einen Bildschirm für den Administrator einer Einkaufsseite zu erstellen
Ich habe versucht, ein einfaches Spiel mit Javafx zu machen ① "Lass uns Glücksspiel finden" (unvollendete Version ②)
Ich habe versucht, den Betrieb der http-Anfrage (Put) mit dem Talented API Tester zu überprüfen
[Rails] [Docker] Kopieren und Einfügen ist in Ordnung! So erstellen Sie eine Rails-Entwicklungsumgebung mit Docker
Ich habe versucht, mit Wercker ein Docker-Image zu erstellen und zu veröffentlichen, mit dem GlassFish 5 gestartet wird
Ich habe versucht, eine Nachrichtenfunktion der Rails Tutorial-Erweiterung (Teil 1) zu erstellen: Erstellen Sie ein Modell
Einführung in das maschinelle Lernen mit Spark "Preisschätzung" # 3 Lernen wir mit Trainingsdaten und erstellen eine [Preisschätzungs-Engine]
So beenden Sie Docker für Mac und erstellen eine Docker-Entwicklungsumgebung mit Ubuntu + Vagrant
JavaFX-Anwendungsentwicklung mit IntelliJ IDEA und Gradle ~ Von der Umgebungskonstruktion bis zum Beispielcode ~
[Azure] Ich habe versucht, eine kostenlose Java-App zu erstellen ~ Mit FTP verbinden ~ [Anfänger]
Ich habe versucht, CSV mit Outsystems zu lesen und auszugeben
Ich habe MySQL 5.7 mit Docker-Compose gestartet und versucht, eine Verbindung herzustellen