2016-11-06 2 views
-1

Ich benutze Python, um meine eigenen maschinellen Lernmodelle für die Praxis zu schreiben. Es gibt zwei Möglichkeiten, wie ich damit umgehen kann:Machine Learning-Modelle: Soll ich eine Klasse oder Funktion definieren

  1. Eine Funktion schreiben, z. def logisticRegression(...):

  2. Schreiben Sie eine Klasse z. class logisticRegression:

Offensichtlich werden beide arbeiten. Aber was ist mehr Pythonic?

+2

entweder, aber 'pythonic' verwenden 'def logistic_regression' oder' class LogisticRegression' –

+1

Dies ist leider nicht-Thema, da es keine eindeutige endgültige richtige Antwort hier gibt und unterliegt der Meinung, da es mehrere Faktoren gibt berücksichtigen. Der Entwurfsansatz für ein Lernmodell würde wahrscheinlich einige Überlegungen erfordern und Klassenstrukturen aufweisen, um eine besser lesbare, wartbare Lösung zu erstellen. Wie bereits im obigen Kommentar erwähnt, ist der Benennungsstil Teil von * pythonic *. Daher sollten Sie sich den [Style Guide] (https://www.python.org/dev/peps/pep-0008/) ansehen. – idjaw

+0

Darüber hinaus ist hier eine Erklärung von [was ist Pythonic] (http://blog.startifact.com/posts/older/what-is-pythonic.html). Öffnen Sie Ihren Interpreter und geben Sie 'import this' ein. Lies das auch. :) – idjaw

Antwort

1

Für mich ist es mehr Sinn macht, mit einem Class-Ansatz zu gehen, wie Sie Ihr Modell als Instanz der Klasse speichern und als Klassenfunktionen so etwas wie ein train() haben das Modell und eine predict() Methode zur Initialisierung Ihres Modell mehrfach zu verwenden ohne es umschulen zu müssen.

Schauen Sie sich die scikit-learn class for Logistic Regression, macht es sehr sinnvoll und ist sehr intuitiv.

+0

erwähnenswert, dass beim Umgang mit einigen Bibliotheken, klassenbasierten Ansatz problematisch sein könnte. Insbesondere Tensorflow geht eher mit funktionalen Ansatz (aufgrund der Besonderheiten der Graph-basierte Berechnungen Paradigma) – lejlot

Verwandte Themen