Versuchen Sie, das Modell des maschinellen Lernens in das Python-Paket aufzunehmen

Overview

Eine Person in Mercari hat wundervolles Wissen in Bezug auf Entwicklung und Betrieb rund um maschinelles Lernen veröffentlicht. https://mercari.github.io/ml-system-design-pattern/README_ja.html Lassen Sie uns das Management des Modells ein wenig erweitern.

Lassen Sie mich zunächst das Gesamtbild geben. https://github.com/arc279/model-in-package-sample Ich meine, das ist alles.

Das Folgende ist eine Erklärung der Hauptpunkte. Ich werde die Setup-Tools nicht erklären. Bitte googeln Sie sie bei Bedarf.

Die Beispielausführungsumgebung ist

(.venv) $ python -V
Python 3.8.1

Ich sende es an.

Nicht-Quelldaten können im Python-Paket enthalten sein

Vor einiger Zeit waren im Bereich "setuptools" Dinge wie "package_data" und "data_files" verwirrend, aber Kürzlich MANIFEST.in und [importlib.resources](https: // docs) Es scheint, dass es zu .python.org / ja / 3 / library / importlib.html (module-importlib.resources) konvergiert hat.

Beachten Sie, dass "importlib.resources" seit Python 3.7 hinzugefügt wurde und ältere Versionen die Verwendung von "pkg_resources" erfordern. Um ehrlich zu sein, ist die Verwendung nicht einfach. Verwenden Sie daher nach Möglichkeit "importlib.resources" in Version 3.7 oder höher.

In diesem Bereich erfahren Sie, wie Sie es verwenden.

https://github.com/arc279/model-in-package-sample/blob/master/MANIFEST.in https://github.com/arc279/model-in-package-sample/blob/master/src/mymodel/init.py#L5

Wenn es zu einem Rad gehärtet ist, sieht es so aus

Es enthält eine * .pkl-Datei.

$ python setup.py bdist_wheel

(..snip..)

$ zipinfo -1 dist/mymodel-1.1.1_titanic.from_kaggle-py3-none-any.whl
mymodel/__init__.py
mymodel/version.py
mymodel/titanic_sample/__init__.py
mymodel/titanic_sample/models/__init__.py
mymodel/titanic_sample/models/LogisticRegression/__init__.py
mymodel/titanic_sample/models/LogisticRegression/model.pkl
mymodel/titanic_sample/models/RandomForestClassifier/__init__.py
mymodel/titanic_sample/models/RandomForestClassifier/model.pkl
mymodel/titanic_sample/models/SVC/__init__.py
mymodel/titanic_sample/models/SVC/model.pkl
mymodel/titanic_sample/models/SVC/__pycache__/__init__.cpython-38.pyc
mymodel/titanic_sample/models/__pycache__/__init__.cpython-38.pyc
mymodel-1.1.1_titanic.from_kaggle.dist-info/METADATA
mymodel-1.1.1_titanic.from_kaggle.dist-info/WHEEL
mymodel-1.1.1_titanic.from_kaggle.dist-info/top_level.txt
mymodel-1.1.1_titanic.from_kaggle.dist-info/RECORD

Benutzerseite

Sobald es im Rad verfestigt ist, kann es mit einem Rohr eingesetzt werden.

(.venv) $ pip install dist/mymodel-1.1.1_titanic.from_kaggle-py3-none-any.whl

(..snip..)

(.venv) $ pip list
Package         Version
--------------- -------------------------
joblib          0.15.1
mymodel         1.1.1-titanic.from-kaggle
numpy           1.18.5
pandas          1.0.4
pip             19.2.3
python-dateutil 2.8.1
pytz            2020.1
scikit-learn    0.23.1
scipy           1.4.1
setuptools      41.2.0
six             1.15.0
threadpoolctl   2.1.0
wheel           0.34.2

Anruf

(.venv) $ ipython
In [1]: import mymodel

In [2]: mymodel.__version__
Out[2]: '1.1.1-titanic.from-kaggle'

Lesen Sie die Daten im Paket

Es ist eine Fortsetzung von Ipython.

In [3]: import importlib.resources

In [4]: import pickle

In [5]: import mymodel.titanic_sample.models.LogisticRegression

In [6]: b = importlib.resources.read_binary(mymodel.titanic_sample.models.LogisticRegression, "model.pkl")

In [9]: len(b)
Out[9]: 739

In [10]: c = pickle.loads(b)

In [11]: c.__class__
Out[11]: sklearn.linear_model._logistic.LogisticRegression

Du kannst es schaffen. Weitere Informationen finden Sie in diesem Bereich.

Apropos

Indem wir die obigen Punkte unterdrücken, können wir die Implikation erhalten, dass ** ein Python-Paket, das nur Daten enthält **, ebenfalls möglich ist. Ich denke, es hängt vom Projekt ab, wie viel Sie einbeziehen sollten, damit Sie verschiedene Dinge berücksichtigen können.

Zum Schluss noch zur Versionierung

Die Versionskonvention des Python-Pakets ist ziemlich schlampig, und die semantische Versionierung ja /) kann übernommen werden. Sie können dieses Beispiel von Mercari also so verwenden, wie es ist. https://mercari.github.io/ml-system-design-pattern/Operation-patterns/Data-model-versioning-pattern/design_ja.html

So was. https://github.com/arc279/model-in-package-sample/blob/master/setup.cfg#L3 https://github.com/arc279/model-in-package-sample/blob/master/src/mymodel/version.py

Ich spreche darüber. Siehe Beispiel-Github für das Gesamtbild.

Recommended Posts

Versuchen Sie, das Modell des maschinellen Lernens in das Python-Paket aufzunehmen
Python: Vorverarbeitung beim maschinellen Lernen: Übersicht
Ich habe Python 3.5.1 installiert, um maschinelles Lernen zu studieren
Python: Vorverarbeitung beim maschinellen Lernen: Datenerfassung
Eine Einführung in Python für maschinelles Lernen
[Python] Speichern von Lernergebnissen (Modellen) beim maschinellen Lernen
Python: Vorverarbeitung beim maschinellen Lernen: Datenkonvertierung
Coursera Machine Learning Challenge in Python: ex6 (Anpassen von SVM-Parametern)
[Python] Einfache Einführung in das maschinelle Lernen mit Python (SVM)
Ich habe versucht, TOPIC MODEL in Python zu implementieren
Lassen Sie uns einen Teil des maschinellen Lernens mit Python berühren
[Für Anfänger] Einführung in die Vektorisierung beim maschinellen Lernen
Einführung in das maschinelle Lernen
Ich habe versucht, die beim maschinellen Lernen verwendeten Bewertungsindizes zu organisieren (Regressionsmodell).
Ein Anfänger des maschinellen Lernens versuchte, mit Python ein Vorhersagemodell für Pferderennen zu erstellen
Erstellen Sie mit Python eine interaktive Umgebung für maschinelles Lernen
Tool MALSS (Anwendung), das maschinelles Lernen in Python unterstützt
Coursera-Herausforderungen beim maschinellen Lernen in Python: ex2 (Logistic Return)
Tool MALSS (Basic), das maschinelles Lernen in Python unterstützt
Vorbereitung zum Starten von "Python Machine Learning Programming" (für macOS)
Coursera Machine Learning Challenge in Python: ex1 (lineare Regression)
Cross-Entropie zur Überprüfung in Coursera Machine Learning Woche 2 Aufgaben
Verwendung des in Lobe in Python erlernten Modells
MALSS (Einführung), ein Tool, das maschinelles Lernen in Python unterstützt
Modell des maschinellen Lernens unter Berücksichtigung der Wartbarkeit
Maschinelles Lernen in Delemas (Praxis)
Python-Paketverwaltung mit IntelliJ
Melden Sie sich auf der Website in Python an
Maschinelles Lernen mit Python! Vorbereitung
Python Machine Learning Programming> Schlüsselwörter
Sprechen mit Python [Text zu Sprache]
Wird in EDA für maschinelles Lernen verwendet
Beginnend mit maschinellem Python-Lernen
Wie man in Python entwickelt
Super Einführung in das maschinelle Lernen
Post an Slack in Python
So passen Sie mehrere Bibliotheken für maschinelles Lernen auf einmal an
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Regression zu bewerten
Das Ergebnis des maschinellen Lernens von Java-Ingenieuren mit Python www
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Klassifizierung zu bewerten
Wie nutzt man maschinelles Lernen für die Arbeit? 03_Python-Codierungsverfahren
Coursera-Herausforderungen für maschinelles Lernen in Python: ex7-2 (Primäranalyse)
Implementieren Sie das Stacking-Lernen in Python [Kaggle]
[Python] Wie man PCA mit Python macht
Einführung in das maschinelle Lernen Schreiben von Notizen
Konvertieren Sie Markdown in Python in PDF
Wie wäre es mit Anaconda zum Erstellen einer maschinellen Lernumgebung mit Python?
So sammeln Sie Bilder in Python
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 8 Einführung in Numpy
Coursera-Herausforderungen beim maschinellen Lernen in Python: ex5 (Anpassung der Regularisierungsparameter)
Einführung in die Python-Grundlagen des maschinellen Lernens (unbeaufsichtigtes Lernen / Hauptanalyse)
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 10 Einführung in Cupy
Maschinelles Lernen mit Python (1) Gesamtklassifizierung
Verwendung von SQLite in Python
Zusammenfassung des maschinellen Lernens von Python-Anfängern
Automatisieren Sie Routineaufgaben beim maschinellen Lernen
Im Python-Befehl zeigt Python auf Python3.8
In Python implementierte Widrow-Hoff-Lernregeln