Die Fortsetzung in diesem Blog ist 'Weniger schrecklichen Code schreiben mit Jupyter Notebook'.
Dieser Artikel ist in dem kostenlosen Magazin "Data Science in Production" erschienen.
In vielen Blogbeiträgen werden komplizierte Methoden des maschinellen Lernens und Spitzentechnologien vorgestellt, die Data Scientists auf der ganzen Welt in einen ständigen Zustand der FOMO versetzen. Aber was sind die Grundlagen? Wie sollten Sie Ihr Projekt strukturieren? Wie viele Tools brauchen Sie mindestens? In diesem Beitrag finden Sie einige Hinweise zum Aufbau Ihrer Projekte, damit Sie so schnell wie möglich produktreife Data Science erreichen.
Projektstruktur
Projektstrukturen entwickeln sich oft organisch und passen sich den Bedürfnissen der Menschen an, was zu unterschiedlichen Projektstrukturen innerhalb eines Teams führt. Sie können sich glücklich schätzen, wenn Sie oder jemand in Ihrem Team irgendwann einen obskuren Blogbeitrag mit einer einigermaßen vernünftigen Struktur findet und diese in Ihrem Team durchsetzt.
Vor vielen Jahren bin ich über ProjectTemplate für R gestolpert. Seitdem habe ich versucht, die Leute dazu zu bringen, eine gute Projektstruktur zu verwenden. Vor kurzem hat DrivenData (was ist das für ein Name?) sein allgemeineres Cookiecutter Data Science veröffentlicht.
Die wichtigsten Philosophien dieser Projekte sind:
- Eine einheitliche und gut organisierte Struktur erleichtert die Zusammenarbeit zwischen den Mitarbeitern.
- Ihre Analysen sollten reproduzierbar sein und Ihre Struktur sollte dies ermöglichen.
- Ein Projekt beginnt mit Rohdaten, die niemals bearbeitet werden sollten. Betrachten Sie Rohdaten als unveränderlich und bearbeiten Sie nur abgeleitete Quellen.
Ich konnte nicht anders, als meine eigene Projektstruktur zu erfinden, und meine Minimalstruktur sieht in etwa so aus:
Beispiel_Projekt/ ├── Daten/ Der ursprüngliche, unveränderliche Datenabzug. ├── figures/ Von Notebooks und Skripten gespeicherte Zahlen. ├── notebooks/ Jupyter-Notizbücher. ├── output/ Verarbeitete Daten, Modelle, Protokolle usw. ├── exampleproject/ Python-Paket mit Quellcode. │ └── __init__.py Machen Sie den Ordner zu einem Paket. └── process.py Beispielmodul. ├── tests/ Tests für Ihr Python-Paket. └── test_process.py Tests für process.py. ├── environment.yml Definition der virtuellen Umgebung. ├── README.md README mit Informationen zum Projekt. └── setup.py Installieren und verteilen Sie Ihr Modul.
Ein Beispiel finden Sie hier.
Sie folgt meist den anderen Strukturen:
- Rohdaten sind unveränderlich und gehen an
data/; - Die verarbeiteten Daten und die abgeleiteten Ausgaben werden in verschiedenen Ordnern wie
figures/undoutput/abgelegt; - Die Notebooks gehen an
notebooks/; - Projektinformationen finden Sie unter
README.md; - und der Projektcode befindet sich in einem separaten Ordner.
Ich versuche, aus meiner Projektstruktur ein vollwertiges Python-Paket (plus Tests) zu machen, damit der Schritt zwischen Prototyping und Produktion so klein wie möglich ist. Die setup.py ermöglicht es mir, das Paket in einer virtuellen Umgebung zu installieren und es in meinen Notebooks zu verwenden (mehr dazu in einem späteren Blogbeitrag).
Es ist eigentlich egal, welche Struktur Sie wählen, solange sie zu Ihrem Arbeitsablauf passt und Sie eine Zeit lang dabei bleiben. Versuchen Sie, die Philosophien der Projekte zu verstehen und wählen Sie die Struktur, die Ihren Bedürfnissen entspricht.
Virtuelle Umgebung
Projekte sollten voneinander unabhängig sein: Sie wollen nicht, dass Ihre neuen Experimente Ihre ältere Arbeit durcheinander bringen. Wir tun dies zum Teil, indem wir die Dateien der verschiedenen Projekte in verschiedenen Ordnern ablegen, aber Sie sollten auch separate Python-Umgebungen verwenden.
Virtuelle Umgebungen sind isolierte Umgebungen, die Abhängigkeiten zwischen verschiedenen Projekten trennen und Paketkonflikte vermeiden. Jede virtuelle Umgebung hat ihre eigenen Pakete und ihre eigenen Paketversionen. Umgebung A kann
Erstellen Sie eine neue virtuelle conda-Umgebung namens example_project mit Python 3.5:
$ conda install --name example_project python=3.5
Vergewissern Sie sich, dass Ihre virtuelle Umgebung aktiviert ist (lassen Sie die source weg, wenn Sie mit Windows arbeiten):
$ conda Beispiel_Projekt aktivieren
... und schon sind Sie bereit, Ihre Lieblingspakete zu installieren!
$ conda install pandas numpy jupyter scikit-learn
Wenn Sie zu einem anderen Projekt wechseln, führen Sie eine source deactivate aus und aktivieren Sie die virtuelle Umgebung des Projekts.
Wenn Sie sich erst einmal mit dem activate-deactivate-Ablauf vertraut gemacht haben, werden Sie feststellen, dass virtuelle Umgebungen ein leichtes Werkzeug sind, um Ihre Python-Umgebungen getrennt zu halten. Indem Sie Ihre Umgebungsdefinitionsdatei (d.h. alle installierten Pakete und ihre Versionen) exportieren, werden Ihre Projekte auch leicht reproduzierbar sein. Wenn Sie eine ausführlichere Diskussion wünschen, lesen Sie den Beitrag von Tim Hopper.
Git
Jedes Projekt sollte sein eigenes Git-Repository haben. Mit einem Repository pro Projekt können Sie den Verlauf eines Projekts verfolgen und komplexe Versionsabhängigkeiten zwischen Projekten verwalten.
Alternativ können Sie sich auch für ein Repository mit mehreren Projekten entscheiden und so das gesamte Wissen an einem einzigen Ort zusammenführen. Der Nachteil ist jedoch, dass es dabei oft zu hässlichen Merge-Konflikten kommt: Data Scientists sind in der Regel nicht sehr versiert im Umgang mit Git. Abgesehen von einer Menge Git-Frust, macht es Ihre Projekte weniger unabhängig voneinander.
Am einfachsten richten Sie Git ein, indem Sie ein neues Git-Repository auf Ihrem Git-Host (z.B. GitHub oder GitLab) anlegen und dieses klonen:
$ git clone https://github.com/hgrif/example-project.git
Sie können dann Ihre Projektstruktur in diesem leeren Ordner einrichten.
Wenn Sie diese Anleitung befolgt und bereits einen Ordner mit einigen Dateien erstellt haben, initialisieren Sie zunächst ein Git-Repository auf Ihrem Rechner:
$ git init
Erstellen Sie dann ein neues Git-Repository auf Ihrem Host, holen Sie sich dessen Link und führen Sie es aus:
$ git remote add origin https://github.com/hgrif/example-project.git
Dies fügt das entfernte Repository mit dem Link https://github.com/hgrif/example-project.git hinzu und benennt es origin. Wahrscheinlich müssen Sie Ihren aktuellen Zweig master nach origin verschieben:
$ git push --set-upstream origin master
Hinzufügen .gitignore zu Ihrem Projektverzeichnis hinzufügen, damit Sie nicht versehentlich Zahlen oder Daten zu Ihrem Repository hinzufügen. Ich beginne in der Regel mit einem .gitignore für Python und füge die Ordner
data/, figures/ und output/, so dass Git diese Ordner ignoriert.
Jetzt, wo Git eingerichtet ist, können Sie git add und git commit nach Herzenslust nutzen!
Werkzeugbau
Einige der sich wiederholenden Aufgaben können Sie sich durch den Einsatz von Werkzeugen ersparen!
Das Python-Paket cookiecutter erstellt automatisch Projektordner auf der Grundlage einer Vorlage. Sie können eine vorhandene Vorlage wie die Cookiecutter Data Science oder meine verwenden oder eine eigene erstellen.
Der einfachste Weg, virtuelle Umgebungen zu verwenden, ist die Verwendung eines Editors wie PyCharm, der sie unterstützt. Sie können auch autoenv oder direnv verwenden, um eine virtuelle Umgebung zu aktivieren und Umgebungsvariablen zu setzen, wenn Sie cd in ein Verzeichnis wechseln.
Fazit
Ein gutes Setup für Ihre Data Science-Projekte macht es anderen Personen leichter, an Ihren Projekten zu arbeiten, und macht sie reproduzierbarer. Eine gute Struktur, eine virtuelle Umgebung und ein Git-Repository sind die Bausteine für jedes Data Science-Projekt.
Die Fortsetzung in diesem Blog ist 'Weniger schrecklichen Code schreiben mit Jupyter Notebook'.
Vielen Dank an Stijn, mit dem ich schon seit Jahren über Projektstrukturen diskutiere, und an Giovanni und Robert für ihre Kommentare.
Sind Sie bereit, Ihre Data-Science-Kenntnisse auf die nächste Stufe zu heben?
Nehmen Sie an einem unserer Python-Kurse teil, um Ihren Einstieg in die Verwendung von Python zu finden:
- Python Essentials - Ein großartiger zweitägiger Kurs für alle Einsteiger.
- Data Science with Python Foundation - Für angehende Datenwissenschaftler, die bereits einige Erfahrung mit Python haben und ihre Fähigkeiten auf die nächste Stufe bringen möchten.
Sie sind noch kein Datenwissenschaftler, möchten aber in einem Datenwissenschaftsteam mitarbeiten? Auch dafür haben wir einen Kurs: Data Science für Produktverantwortliche!
Verfasst von
Henk Griffioen
Unsere Ideen
Weitere Blogs
Contact



