[PYTHON] Skflow qui peut utiliser TensorFlow comme scicit-learn

De scikit-learn, qui est souvent utilisé pour l'apprentissage automatique avec Python, une bibliothèque éblouissante qui peut être utilisée en appelant le TensorFlow dont on parle récemment est apparue. De plus, il est fait par google. C'est skflow.

TF Learn

Jusqu'à présent, scikit-learn n'avait pas d'implémentation de système de réseau de neurones, mais cela permet de gérer non seulement les réseaux de neurones mais aussi le deep learning. Aussi, pour le côté TensorFlow, il est possible de faire un lien avec la fonction de prétraitement des données (Preprocessing etc.) qui est abondante du côté scikit-learn. C'est un gros avantage.

En ce sens, je pense que l'avènement de skflow, qui relie les deux, rendra très facile la création de processus d'apprentissage automatique.

Installation

Depuis 0.8.0 de TensorFlow, skflow a été incorporé dans l'unité principale, donc une installation séparée n'est plus nécessaire. En option, il est pratique d'installer scikit-learn, numpy, pandas, mais vous pouvez l'utiliser sans cela.

Comment utiliser

Ceci est une citation de GitHub, mais le classificateur linéaire utilise ce qui suit.

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 est le IF avec le côté TensorFlow. Après cela, vous pouvez poursuivre le traitement avec l'API familière dans scicit-learn telle que fit.

Pour le réseau neuronal, cela ressemble à ceci: En utilisant TensorFlowDNNClassifier, nous construisons un réseau neuronal avec des couches cachées de 10-20-10.

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)

Si vous souhaitez créer le modèle plus en détail, procédez comme suit. On a l'impression de construire directement avec skflow.ops.

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)

C'était une simple introduction, mais au contraire, elle est si simple qu'elle est rarement introduite. Si vous êtes intéressé par TensorFlow mais que vous ne souhaitez pas apprendre une nouvelle façon d'écrire, veuillez jeter un coup d'œil.

Recommended Posts

Skflow qui peut utiliser TensorFlow comme scicit-learn
Image Docker pouvant utiliser cx_Oracle
Créer un environnement Docker qui peut utiliser PyTorch et JupyterLab