[PYTHON] Skflow, der TensorFlow wie Scicit-Learn verwenden kann

Aus scicit-learn, das häufig beim maschinellen Lernen mit Python verwendet wird, ist eine schillernde Bibliothek erschienen, die durch Aufrufen des kürzlich besprochenen TensorFlow verwendet werden kann. Darüber hinaus wird es von Google gemacht. Das ist skflow.

TF Learn

Bisher hatte scikit-learn keine Implementierung eines neuronalen Netzwerksystems, aber dies ermöglicht es, nicht nur neuronale Netzwerke, sondern auch Deep Learning zu handhaben. Auf der TensorFlow-Seite ist es auch möglich, eine Verknüpfung mit der Datenvorverarbeitungsfunktion (Vorverarbeitung usw.) herzustellen, die auf der Scikit-Lernseite häufig vorhanden ist. Das ist ein großer Vorteil.

In diesem Sinne denke ich, dass das Aufkommen von skflow, das die beiden verbindet, es sehr einfach machen wird, maschinelles Lernen zu verarbeiten.

Installation

Seit 0.8.0 von TensorFlow ist skflow in die Haupteinheit integriert, sodass eine separate Installation nicht mehr erforderlich ist. Optional ist es praktisch, "scikit-learn", "numpy", "pandas" zu installieren, aber Sie können es auch ohne verwenden.

Wie benutzt man

Dies ist ein Zitat von GitHub, aber der lineare Klassifikator verwendet Folgendes.

from tensorflow.contrib import skflow
from sklearn import datasets, metrics

iris = datasets.load_iris()
classifier = skflow.TensorFlowLinearClassifier(n_classes=3)
classifier.fit(iris.data, iris.target)
score = metrics.accuracy_score(iris.target, classifier.predict(iris.data))
print("Accuracy: %f" % score)

skflow.TensorFlowLinearClassifier ist die IF mit der TensorFlow-Seite. Danach können Sie mit der Verarbeitung mit vertrauten APIs in scicit-learn wie "fit" fortfahren.

Für das neuronale Netzwerk sieht es so aus: Mit TensorFlowDNNClassifier bauen wir ein neuronales Netzwerk mit versteckten Schichten von 10-20-10 auf.

from tensorflow.contrib import skflow
from sklearn import datasets, metrics

iris = datasets.load_iris()
classifier = skflow.TensorFlowDNNClassifier(hidden_units=[10, 20, 10], n_classes=3)
classifier.fit(iris.data, iris.target)
score = metrics.accuracy_score(iris.target, classifier.predict(iris.data))
print("Accuracy: %f" % score)

Wenn Sie das Modell detaillierter erstellen möchten, gehen Sie wie folgt vor. Es fühlt sich an, als würde man direkt mit skflow.ops erstellen.

from tensorflow.contrib import skflow
from sklearn import datasets, metrics

iris = datasets.load_iris()

def my_model(X, y):
    """This is DNN with 10, 20, 10 hidden layers, and dropout of 0.5 probability."""
    layers = skflow.ops.dnn(X, [10, 20, 10], dropout=0.5)
    return skflow.models.logistic_regression(layers, y)

classifier = skflow.TensorFlowEstimator(model_fn=my_model, n_classes=3)
classifier.fit(iris.data, iris.target)
score = metrics.accuracy_score(iris.target, classifier.predict(iris.data))
print("Accuracy: %f" % score)

Es war eine einfache Einführung, aber im Gegenteil, es ist so einfach, dass es selten eingeführt wird. Wenn Sie an TensorFlow interessiert sind, aber keine neue Schreibweise erlernen möchten, schauen Sie bitte.

Recommended Posts

Skflow, der TensorFlow wie Scicit-Learn verwenden kann
Docker-Image, das cx_Oracle verwenden kann
Erstellen Sie eine Docker-Umgebung, die PyTorch und JupyterLab verwenden kann