[PYTHON] Übersicht und nützliche Funktionen von Scikit-Learn, die auch für Deep Learning verwendet werden können

scikit-learn: Python-Bibliothek für maschinelles Lernen. Es gibt keine Konstruktion von Deep Learning selbst, aber es gibt eine praktische API für Bewertungsmetriken und die Suche nach Hyperparametern.

スクリーンショット 2017-04-13 12.09.31.png

Installation

$ pip install scikit-learn

1. Erstellen eines Lernmodells

  1. Erstellen einer Instanz eines maschinellen Lernmodells
  2. Lernen (fit), Hyperparameterbestimmung
  3. Vorhersage, Bewertung

lasso.py


from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import accuracy_score

# 0.Daten gelesen
from sklearn.datasets import load_iris
iris = load_iris()
X_train, X_test = iris.data[:120], iris.data[120:]
y_train, y_test = iris.target[:120], iris.target[120:]

# 1.Erstellen einer Instanz eines maschinellen Lernmodells
model = DecisionTreeClassifier(criterion="entropy")

# 2.Lernen(fit), Hyperparameterbestimmung
clf = GridSearchCV(model, {'max_depth': [2, 3, 4, 5, 6]}, verbose=1)
clf.fit(X_train, y_train)
print clf.best_params_, clf.best_score_

# 3.Prognose(predict), Bewertung
pred = clf.predict(X_test)
print accuracy_score(y_true, y_pred)

2. Bewertung der Lernergebnisse

Bewertung der Präzision, Rückruf, F1-Score

Nützlich, wenn die Anzahl der Klassenbezeichnungen voreingenommen ist

from sklearn.metrics import classification_report

pred = clf.predict(X_test)
print classification_report(y_test, pred)

#               precision    recall  f1-score   support
# 
#           0       0.94      0.97      0.96        79
#           1       0.90      0.79      0.84        80
#           2       0.99      0.88      0.93        77
#           3       0.89      0.82      0.86        79
#           4       0.94      0.90      0.92        83
#           5       0.92      0.95      0.93        82
#           6       0.95      0.97      0.96        80
#           7       0.96      0.96      0.96        80
#           8       0.82      0.91      0.86        76
#           9       0.79      0.90      0.84        81
# 
# avg / total       0.91      0.91      0.91       797

Ausgabe der Verwirrungsmatrix

Klassenbezeichnung Nützlich zur Bewertung von Aufgaben vom Typ 3 oder höher

from sklearn.metrics import confusion_matrix
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

pred = clf.predict(X_test)
conf_mat = confusion_matrix(y_test, pred)
print conf_mat

# [[77  0  0  0  0  0  0  0  2  0]
#  [ 0 63  0  2  3  0  0  0  1 11]
#  [ 1  0 68  6  0  0  0  0  0  2]
#  [ 0  2  0 65  0  1  0  2  9  0]
#  [ 2  0  0  0 75  0  2  0  0  4]
#  [ 0  1  0  0  0 78  2  0  0  1]
#  [ 0  1  1  0  0  0 78  0  0  0]
#  [ 0  0  0  0  1  1  0 77  1  0]
#  [ 0  3  0  0  1  2  0  0 69  1]
#  [ 2  0  0  0  0  3  0  1  2 73]]


# seaborn.Plotten mit Heatmap
index = list("0123456789")
columns = list("0123456789")
df = pd.DataFrame(conf_mat, index=index, columns=columns)

fig = plt.figure(figsize = (7,7))
sns.heatmap(df, annot=True, square=True, fmt='.0f', cmap="Blues")
plt.title('hand_written digit classification')
plt.xlabel('ground_truth')
plt.ylabel('prediction')
fig.savefig("conf_mat.png ")

conf_mat.png

Entscheidungsbaumplot

import pydotplus

dot_data = tree.export_graphviz(clf, out_file=None, 
                         feature_names=iris.feature_names,  
                         class_names=iris.target_names,  
                         filled=True, rounded=True,  
                         special_characters=True)  

graph = pydotplus.graph_from_dot_data(dot_data)  
graph.write_png('iris_tree.png')

hoge.png

3. Andere

Trainingsmodell speichern und laden

import pickle
pickle.dump(clf, open("model.pkl", "wb"))
clf = pickle.load(open("model.pkl", "rb"))

#Bei Verwendung der Joblib von sklearn (y__Siehe Samas Kommentar)
from sklearn.externals import joblib
joblib.dump(clf, 'model.pkl')
clf = joblib.load('model.pkl') 

Beispieldatensatz laden [sklearn.datasets]

from sklearn import datasets

#Datensatz (Klassifizierung) von 3 Arten von Iris
# 150samples x 4features
iris = datasets.load_iris()

#Datensatz handschriftlicher Zahlen (Klassifizierung)
# 1794samples x 64features
digits = datasets.load_digits()

#Immobilienpreise in Boston nach Region (Rückgabe)
# 506samples x 14features
boston = datasets.load_boston()

#Krankheitsverlauf 1 Jahr nach Diabetikern (Rückkehr)
# 442samples x 10features
diabetes = datasets.load_diabetes()

#Bilder von China. gestalten==(427, 640, 3)
im = datasets.load_sample_image('china.jpg')

Recommended Posts

Übersicht und nützliche Funktionen von Scikit-Learn, die auch für Deep Learning verwendet werden können
Funktionen, die in der for-Anweisung verwendet werden können
Zusammenfassung der Scikit-Learn-Datenquellen, die beim Schreiben von Analyseartikeln verwendet werden können
Eine Sammlung von Ressourcen, die zum Erstellen und Erweitern von Punktedateien hilfreich sein können
Deep Learning Kurs, der vor Ort zerquetscht werden kann
Einführung des automatischen Bildersammlungspakets "icrawler" (0.6.3), das beim maschinellen Lernen verwendet werden kann
Erstellen Sie AND / OR / NAND / XOR-Schaltkreise mit FPGA, die für Deep Learning mit Polyphony erforderlich sein können
Verstehen Sie die Wahrscheinlichkeiten und Statistiken, die für das Fortschrittsmanagement mit einem Python-Programm verwendet werden können
Zusammenfassung der Seiten, die zum Studium des Deep Learning Framework Chainer nützlich sind
Ich habe einen Tri-Tree geschrieben, der für die Implementierung von Hochgeschwindigkeitswörterbüchern in D-Sprache und Python verwendet werden kann
Über die Angelegenheit, dass das re.compiled-Objekt für das re.match-Muster verwendet werden kann
Einfaches Auffüllen von Daten, die in der Verarbeitung natürlicher Sprache verwendet werden können
Ich habe eine generische Python-Projektvorlage erstellt
[Zusammenfassung der Bücher und Online-Kurse für Programmierung und datenwissenschaftliches Lernen]
Bedeutung von Deep-Learning-Modellen und -Parametern
Klasse für PYTHON, die ohne Kenntnis von LDAP betrieben werden kann
[Für Anfänger künstlicher Intelligenz] Maschinelles Lernen / Deep Learning Programming Lernpfad und Nachschlagewerke
Persönliche Notizen zu Pandas-bezogenen Vorgängen, die in der Praxis verwendet werden können
Einfache Programminstallation und automatische Programmaktualisierung, die in jeder Sprache verwendet werden kann
Skope-Rules-Algorithmus zum Erlernen interpretierbarer Regeln-Kann auch von Microsoft Researchs lnterpretML- verwendet werden.
Ein Memorandum über Methoden, die häufig beim maschinellen Lernen mit Scikit-Learn (für Anfänger) verwendet werden.
Dateitypen, die mit Go verwendet werden können
Ein Memorandum zum Studieren und Implementieren von Deep Learning
Paralleles Lernen von Deep Learning durch Keras und Kubernetes
Überblick über maschinelle Lerntechniken, die aus Scikit-Learn gelernt wurden
PDF-Dateien und Websites zum Erlernen von Python 3
Implementierung eines Deep Learning-Modells zur Bilderkennung
Dies und das ist nützlich, wenn es mit nohup verwendet wird
Zusammenfassung der statistischen Datenanalysemethoden mit Python, die im Geschäftsleben verwendet werden können
Visualisierung von geografischen Informationen von R und Python, die von Power BI ausgedrückt werden können
[Python] Einführung in das WEB-Scraping | Zusammenfassung der Methoden, die mit dem Webdriver verwendet werden können
Mit Raspberry Pi erstellter Dateifreigabeserver, der für Remote-Arbeiten verwendet werden kann
Einfache Statistiken, mit denen die Auswirkungen von Maßnahmen auf EG-Standorte und Codes analysiert werden können, die in Jupyter-Notebooks verwendet werden können
Ich habe ein Tool erstellt, um automatisch ein Zustandsübergangsdiagramm zu generieren, das sowohl für die Webentwicklung als auch für die Anwendungsentwicklung verwendet werden kann
Grundlegende Algorithmen, die bei Wettkampfprofis eingesetzt werden können
Ich habe den Deep Learning Library Chainer installiert und verwendet
Merkmalsmenge, die aus Zeitreihendaten extrahiert werden kann
Hinweise zu Python-Kenntnissen, die mit AtCoder verwendet werden können
ANTs Bildregistrierung, die in 5 Minuten verwendet werden kann
Techniken zum Verständnis der Grundlagen von Deep-Learning-Entscheidungen
Vorhersagen von Tags durch Extrahieren von Musikfunktionen mit Deep Learning
DNN (Deep Learning) Library: Vergleich von Chainer und TensorFlow (1)
[Django] Über Benutzer, die für Vorlagen verwendet werden können
4 Boxen, die für Pepper-Hacker nützlich sein könnten
Sammlung und Automatisierung erotischer Bilder durch Deep Learning
Führen Sie PyQt5 in MacOS ein (Linux kann auch verwendet werden)
Eine Szene, in der GPU für tiefes Lernen nützlich ist?
Installieren Sie Mecab und CaboCha auf ubuntu16.04LTS, damit es aus der Python3-Serie verwendet werden kann
Kann mit AtCoder verwendet werden! Eine Sammlung von Techniken zum Zeichnen von Kurzcode in Python!
[Django] Feldnamen, die für das Benutzermodell, die Benutzerregistrierung und die Anmeldemethoden verwendet werden können
[Python] Ein Programm, um die Anzahl der Äpfel und Orangen zu ermitteln, die geerntet werden können
So legen Sie Variablen fest, die in der gesamten Django-App verwendet werden können ~ Praktisch für Vorlagen usw. ~