Читать книгу Praxiseinstieg Machine Learning mit Scikit-Learn, Keras und TensorFlow - Aurélien Géron - Страница 73
Das Design von Scikit-Learn
ОглавлениеDas Design der API von Scikit-Learn ist bemerkenswert gut gelungen. Die wichtigsten Designprinzipien (https://homl.info/11) sind:17
Konsistenz. Alle Objekte besitzen eine konsistente, einfache Schnittstelle:– Estimatoren. Jedes Objekt, das Parameter anhand eines Datensatzes abschätzen kann, wird Estimator genannt (z.B. ist ein Imputer ein Estimator). Das Abschätzen der Parameter wird von der Methode fit() durchgeführt, die als Parameter lediglich einen Datensatz benötigt (zwei bei überwachten Lernalgorithmen, der zweite Datensatz enthält in diesem Fall die Labels). Jeder andere für das Abschätzen benötigte Parameter wird als Hyperparameter angesehen (wie strategy beim Imputer) und muss als Attribut der Instanz gesetzt werden (für gewöhnlich als Parameter im Konstruktor).–Transformer. Einige Estimatoren (wie der Imputer) können einen Datensatz außerdem transformieren; diese werden Transformatoren genannt. Wieder einmal ist der Aufbau der API recht einfach: Die Methode trans form() nimmt die Transformation selbst vor, der Datensatz wird als Parameter übergeben. Zurückgegeben wird der transformierte Datensatz. Diese Transformation beruht im Allgemeinen auf den erlernten Parametern, wie es auch beim Imputer der Fall ist. Sämtliche Transformer besitzen außerdem die bequemere Methode fit_transform(), die den aufeinanderfolgenden Aufrufen von fit() und transform() entspricht (manchmal ist fit_transform() aber auf höhere Geschwindigkeit optimiert).–Prädiktoren. Schließlich sind einige Estimatoren in der Lage, auf einem gegebenen Datensatz Vorhersagen zu treffen; diese werden als Prädiktoren bezeichnet. Beispielsweise ist das Modell LinearRegression aus dem vorigen Kapitel ein Prädiktor: Es sagt die Zufriedenheit aus dem Pro-Kopf-BIP eines Lands vorher. Jeder Prädiktor besitzt die Methode pre dict(), die einen Datensatz mit neuen Datenpunkten annimmt und einen Satz entsprechender Vorhersagen zurückgibt. Jeder Prädiktor besitzt darüber hinaus die Methode score() zum Bestimmen der Vorhersagequalität anhand eines Testdatensatzes (und bei überwachten Lernalgorithmen auch der entsprechenden Labels).18
Inspektion. Sämtliche Hyperparameter eines Estimators sind direkt als öffentliche Attribute der Instanz abrufbar (z.B. imputer.strategy), auch die von einem Estimator erlernten Parameter sind über ein öffentliches Attribut mit einem Unterstrich als Suffix verfügbar (z.B. imputer.statistics_).
Nicht-proliferierende Klassen. Datensätze werden in NumPy-Arrays oder Sparse Matrices aus SciPy anstatt in eigenen Klassen abgelegt. Die Hyperparameter sind gewöhnliche Python-Strings oder Zahlen.
Komposition. Existierende Komponenten werden so weit wie möglich wiederverwendet. Beispielsweise können Sie eine Pipeline als beliebige Abfolge von Transformatoren und einem Estimator am Ende definieren und als eigenen Estimator speichern, wie wir noch sehen werden.
Sinnvolle Standardwerte. Die Standardwerte der meisten Parameter in Scikit-Learn sind sinnvoll ausgewählt, sodass Sie schnell ein lauffähiges Grundsystem erstellen können.