Lassen Sie uns einen Teil des maschinellen Lernens mit Python berühren

Ich frage mich, was maschinelles Lernen ist, und wenn ich es so schreibe, wie ich es mir vorstellen kann, sieht es so aus.

--Kategorie --Rückkehr --Diskriminierung

Es mag andere geben, aber ich kann nicht an sie denken. Ich verwende Irisdaten, wenn ich hier in R ein Tutorial empfehle, aber ich frage mich, ob es in Python ist. → Es scheint zu geben.

Maschinelles Lernen mit R.

Beispiel für Klassifizierung und Diskriminierung

Versuchen Sie zuerst R. Das Erstellen eines Klassifikators in R mithilfe von SVM, NeuralNet, NaiveBayse, RandomForest usw. ist fast kein Grund zum Nachdenken. Unter Verwendung jeder Clustering-Methode wird ein Trainingssatz verwendet, um einen Klassifizierer zu erstellen, und der Testsatz wird ausgewertet, um festzustellen, ob er vom Klassifizierer korrekt klassifiziert werden kann.

Wenn Sie in R Daten (Iris) ausführen, können Sie die Daten von Show, Iris oder Tintenfisch verwenden.

20160903001.png

Dies ist eine Datentabelle aller 150 Proben mit Iris-Sorten (setosa, versicolor, virginica) als erklärenden Variablen, wobei 萼 Länge, 萼 Breite, Blütenblattlänge und Blütenblattbreite als erklärende Variablen sind.

Verwenden Sie zunächst sample (), um die Hälfte zufällig in einen Trainingssatz und den Rest in einen Testsatz zu unterteilen.

##Irisdaten lesen
data(iris)
##Wählen Sie nach dem Zufallsprinzip einen halben Trainingssatz
train_ids <- sample(nrow(iris), nrow(iris)*0.5)
##Trainingsset erstellen
iris.train <- iris[train_ids,]
##Verwenden Sie die andere Hälfte als Testset
iris.test  <- iris[-train_ids,]

Übrigens haben die drei Irisarten Setosa, Versicolor und Virignica die folgenden Blüten. Jeder ist gleich! Es ist ein Bestrafungsspiel, das sich beispielsweise durch die Form der Blütenblätter unterscheidet.

20160903004.png

###SVM-Ausführung
library(kernlab)
iris.svm <- ksvm(Species~., data=iris.train)
svm.predict <- predict(iris.svm, iris.test)
###Ergebnisanzeige
table(svm.predict, iris.test$Species)

###Führen Sie neuralnet aus
library(nnet)
iris.nnet<-nnet(Species ~ ., data = iris.train, size = 3)
nnet.predict <- predict(iris.nnet, iris.test, type="class")
###Ergebnisanzeige
table( nnet.predict,  iris.test$Species)

###laufen naive Bayes
library(e1071)
iris.nb <- naiveBayes(Species~., iris.train)
nbayes.predict <- predict(iris.nb, iris.test)
###Ergebnisanzeige
table(nbayes.predict, iris.test$Species)

###Zufällige Gesamtstrukturausführung
library(randomForest)
iris.rf <- randomForest(Species~., iris.train)
rf.predict <- predict(iris.rf, iris.test)
###Ergebnisanzeige
table(rf.predict, iris.test$Species)

Wenn Sie es versuchen, können Sie es mit einer korrekten Antwortrate von etwa 73/75 identifizieren, unabhängig davon, welche Methode Sie verwenden. Es sind nicht hundert Aufnahmen, aber es kann (oder auch nicht) durch Anpassen von Parametern verwaltet werden.

Um dasselbe in Python zu versuchen, verwenden Sie scicit-learn. Weitere Details finden Sie in scikit-learn tutorial.

Von Python identifiziert

Versuchen Sie, SVM mit Python ausführen zu können

Warum machen Sie mit Python, was Ihnen unbekannt ist, "was Sie mit R wie oben leicht machen können"? Ich kann nur sagen, dass ich es mit Python versuchen möchte. Wenn es in Soko einen Berg gibt, werde ich ihn besteigen, wenn es eine Pfütze gibt, werde ich süchtig danach sein, und wenn es einen gedeckten Tisch gibt, werde ich ihn essen.

Wenn Anaconda bereits installiert ist, ist scikit-learn bereits installiert. Importieren Sie es daher. Ich importiere, aber der Bibliotheksname ist sklearn. Iris kann auch als Datensatz in diese Bibliothek geladen werden.

from sklearn import svm, datasets
iris = datasets.load_iris()

Der Inhalt kann durch Drucken (iris.data) oder Drucken (iris.target) ermittelt werden. Iris.data verfügt jedoch über eine erklärende Variable und iris.target über eine objektive Variable. Teilen Sie dies in einen Trainingsdatensatz und einen Testdatensatz ein. In R habe ich die Funktion sample () verwendet, aber im Fall von scikit-learn gibt es in sklearn.cross_varidation eine Methode namens train_test_split (). Jetzt habe ich, wie in R, die Hälfte in einen Trainingssatz (iris_data_train, iris_target_train) und einen Testsatz (iris_data_test, iris_target_test) aufgeteilt.

from sklearn import svm, datasets
from sklearn.cross_validation import train_test_split
import numpy as np

iris = datasets.load_iris()
iris_data_train, iris_data_test, iris_target_train, iris_target_test = train_test_split(iris.data, iris.target, test_size=0.5)

Erstellen Sie mit diesem Trainingsset einen Klassifikator. Es gibt verschiedene Dinge in SVM, ist es linear? Ist es nicht linear? Ich muss verschiedene Parameter einstellen, aber das ist alles standardmäßig.

svc = svm.SVC()
svc.fit(iris_data_train, iris_target_train)
svc.predict(iris_data_test)

Ich habe fit () und Predict () in zwei Zeilen geschrieben, aber ich kann es einfach initialisieren, die Trainingsdaten und die Testdaten eingeben, damit ich es in einer Zeile schreiben kann.

iris_predict = svm.SVC().fit(iris_data_train, iris_target_train).predict(iris_data_test)

20160903005.png

Sie können die Übereinstimmungsrate zwischen dem Ergebnis dieses svc.predict () (iris_predict) und iris_target_test sehen. In R wird es in tabellarischer Form wie in der Tabelle (svm.predict, iris.test $ Species) ausgegeben. Versuchen Sie es also gleich. Diese Tabelle heißt confusion_matrix. Mit Genauigkeit_Wert können Sie schnell die richtige Antwortrate erhalten.

from sklearn.metrics import confusion_matrix, accuracy_score

print (confusion_matrix(iris_target_test, iris_predict))
print (accuracy_score(iris_target_test, iris_predict))

Nach dem offiziellen Dokument hat confusion_matrix () das erste Argument als wahren Wert und das zweite Argument als Identifikation. Es scheint, dass es ein diskriminierender Wert des Schiffes ist, also geben Sie ihn als solchen weiter.

20160903006.png

Es ist einfach typisierter als R, aber ich bin gekommen, um ähnliche Ergebnisse zu erzielen.

Gemäß dem obigen Dokument kann dies auch in der Figur dargestellt werden. Normalisieren Sie zunächst jede Zeile von confusion_matrix so, dass sie 1 ergibt. Ich kann diese Formel nicht selbst schreiben.

cm = confusion_matrix(iris_target_test, iris_predict)
cm_normalized = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]

Verwenden Sie diese normalisierte Verwirrungsmatrix, um eine Heatmap mit der Funktion von matplotlib zu erstellen. Übrigens, da svc.predict () viele Male ausgeführt wird und das Ergebnis jedes Mal leicht unterschiedlich ist, unterscheidet sich der Inhalt von confusion_matrix zwischen den obigen und unteren Zahlen geringfügig.

def plot_confusion_matrix(cm, title='Confusion matrix', cmap=plt.cm.Blues):
    ''' confusion_Funktion zur Anzeige der Matrix als Heatmap
    Keyword arguments:
        cm -- confusion_matrix
        title --Bildtitel
        cmap --Farbkarte zu verwenden
        
    '''
    plt.imshow(cm, interpolation='nearest', cmap=cmap)
    plt.title(title)
    plt.colorbar()
    tick_marks = np.arange(len(iris.target_names))
    plt.xticks(tick_marks, iris.target_names, rotation=45)
    plt.yticks(tick_marks, iris.target_names)
    plt.tight_layout()
    plt.ylabel('True label')
    plt.xlabel('Predicted label')

20160903007.png

Dieses Mal war alles Standard, wie z. B. svc = svm.SVC (), aber natürlich sollten Sie in der Lage sein, verschiedene Kernel für die Klassifizierung zu verwenden. Auf der Seite Beispiele der offiziellen Website von scikit-learn finden Sie verschiedene Demos und Tutorials. Wenn Sie diese benötigen, finden Sie hier einige Tipps. Ich denke ich kann es finden.

Wie in R frage ich mich, ob NeuralNet naiveBayes und randomForest ist, aber es ist wahrscheinlich dasselbe (ich habe es nicht überprüft).

Diese Schlussfolgerung

Ich habe das Gefühl, einen Teil des maschinellen Lernens berührt zu haben, aber am Ende wusste ich nicht, ob Iris eine Show, ein Eichhörnchen oder ein Eichhörnchen ist.

Nachtrag

Ursprünglich lautete der Titel "Versuch, maschinelles Lernen mit Python zu berühren", aber es wurde gesagt, dass "Berührung der aufregendste Ort ist, daher ist der Titel nicht geeignet", also habe ich ihn korrigiert.

Ich persönlich denke, dass "ein Diskriminator mit SVM mit Python machen" ein aufregender Punkt ist, aber es scheint, dass er egoistisch war. Es tut mir leid, über maschinelles Lernen wie SVM zu sprechen. Ich werde wiederkommen.

Dieser Code

Recommended Posts

Lassen Sie uns einen Teil des maschinellen Lernens mit Python berühren
Holen Sie sich den Aufrufer einer Funktion in Python
MALSS (Einführung), ein Tool, das maschinelles Lernen in Python unterstützt
Python: Vorverarbeitung beim maschinellen Lernen: Übersicht
Das Ergebnis des maschinellen Lernens von Java-Ingenieuren mit Python www
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
So erhalten Sie eine Liste der integrierten Ausnahmen für Python
Die Zusammenfassung des maschinellen Lernens in Python für Anfänger ist sehr kurz.
Zeigen Sie eine Liste der Alphabete in Python 3 an
[Python] Techniken, die häufig beim maschinellen Lernen verwendet werden
Wie bekomme ich Stacktrace in Python?
Python: Vorverarbeitung beim maschinellen Lernen: Datenerfassung
Holen Sie sich ein Zeichen für Conoha mit Python
[Python] Speichern von Lernergebnissen (Modellen) beim maschinellen Lernen
Python: Vorverarbeitung beim maschinellen Lernen: Datenkonvertierung
[Python] Nur eine Liste der Ordner abrufen
Entfernen Sie DICOM-Bilder in Python
Versuchen Sie, die Thread-Liste der Nachrichten (Abneigung) mit Python zu erhalten.
Wie wäre es mit Anaconda zum Erstellen einer maschinellen Lernumgebung mit Python?
Memorandum of Scraping & Machine Learning [Entwicklungstechnik] von Python (Kapitel 4)
Memorandum of Scraping & Machine Learning [Entwicklungstechnik] von Python (Kapitel 5)
Ruft eine Liste der Dateien in einem Ordner mit Python ohne Pfad ab
Holen Sie sich die Anzahl der Leser von Artikeln über Mendeley in Python
Maschinelles Lernen eines jungen Ingenieurs Teil 1
Zeichnen Sie in Python ein Diagramm einer quadratischen Funktion
Python VBA, um mit Selenium die gesamte WEB-Seite zu erfassen
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Python & Machine Learning Study Memo ⑤: Klassifikation von Ayame
Rufen Sie mit Python eine Liste der in der aktuellen Umgebung installierten Pakete ab
Python & Machine Learning Study Memo Introduction: Einführung in die Bibliothek
Vollständige Offenlegung der beim maschinellen Lernen verwendeten Methoden
Kopieren Sie die Liste in Python
Umschreiben von Elementen in einer Listenschleife (Python)
Zusammenfassung der beim maschinellen Lernen verwendeten Bewertungsfunktionen
Holen Sie sich Datum in Python
Machen Sie mit Python eine Joyplot-ähnliche Handlung von R.
Ausgabe in Form eines Python-Arrays
Maschinelles Lernen eines jungen Ingenieurs Teil 2
Holen Sie sich zu jeder Tageszeit eine Datums- / Uhrzeitinstanz in Python
Aufgezeichnete Umgebung für die Datenanalyse mit Python
Python: Vorverarbeitung beim maschinellen Lernen: Umgang mit fehlenden / Ausreißern / unausgeglichenen Daten
Erstellen Sie eine Python-Umgebung für maschinelles Lernen mit Containern
Werden Sie bald KI-Ingenieur! Lernen Sie in wenigen Tagen umfassend Python / KI / Maschinelles Lernen / Deep Learning / Statistische Analyse!
Liste der wichtigsten Wahrscheinlichkeitsverteilungen, die beim maschinellen Lernen und in der Statistik verwendet werden, sowie Code in Python
Grundlegende Datenrahmenoperationen, die von Anfängern in einer Woche Python-Lernen geschrieben wurden
Ein Memorandum über Methoden, die häufig beim maschinellen Lernen mit Scikit-Learn (für Anfänger) verwendet werden.
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
So ermitteln Sie die Anzahl der Stellen in Python
Führen Sie eine Pipeline für maschinelles Lernen mit Cloud Dataflow (Python) aus.
Tool MALSS (Anwendung), das maschinelles Lernen in Python unterstützt
Eine Code-Sammlung, die häufig in persönlichem Python verwendet wird
Erstellen Sie eine Python-Umgebung für maschinelles Lernen unter Mac OS
[Python] Ruft die Liste der im Modul definierten Klassen ab
Tool MALSS (Basic), das maschinelles Lernen in Python unterstützt
Installation von TensorFlow, einer Bibliothek für maschinelles Lernen von Google
Über das Testen bei der Implementierung von Modellen für maschinelles Lernen
Ermitteln Sie die Größe (Anzahl der Elemente) von Union Find in Python
BigQuery - Wenn Sie einen Grund erhalten: responseTooLarge-Fehler in Python
Erstellen Sie mit Python eine Entwicklungsumgebung für maschinelles Lernen