[PYTHON] Maschinelles Lernen in Delemas (Praxis)

Dies ist eine Fortsetzung von Letztes Mal. [Idol Master Cinderella Girls](https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%A4%E3%83%89%E3%83%AB%E3%83%9E% E3% 82% B9% E3% 82% BF% E3% 83% BC_% E3% 82% B7% E3% 83% B3% E3% 83% 87% E3% 83% AC% E3% 83% A9% E3% Vorhersage von 3 Typen (Cu, Co, Pa) aus Profildaten von 183 Personen (Stand April 2017) von 82% AC% E3% 83% BC% E3% 83% AB% E3% 82% BA) Ich werde.

Die folgenden 16 Artikel wurden erworben. Es ist eine 183 x 16 Matrix. [Typ, Name, Alter, Geburt, Konstellation, Blutgruppe, Größe, Gewicht, B, B, H, dominante Hand, Heimatstadt, Hobbys, Lebenslauf, Implementierungsdatum]

Von diesen werden wir dieses Mal die folgenden 6 Daten verwenden, um den Typ vorherzusagen. [Alter, Größe, Gewicht, B, B, H]

Datenformung

Da die Typen der erfassten Daten alle Objekte sind, konvertieren Sie sie in numerische Typen.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import csv
import pandas as pd
from pandas import DataFrame
import matplotlib
import matplotlib.pyplot as plt

def translate(df):

    #Konvertieren Sie den Datentyp in float
    df['Alter']=df['Alter'].str.extract('([0-9]+)').astype(float)
    df['Höhe']=df['Höhe'].astype(float)
    df['Körpergewicht']=df['Körpergewicht'].str.extract('([0-9]+)').astype(float)
    df['B']=df['B'].str.extract('([0-9]+)').astype(float)
    df['W']=df['W'].str.extract('([0-9]+)').astype(float)
    df['H']=df['H'].str.extract('([0-9]+)').astype(float)

    #Numerische Konvertierung von Attributwerten
    df.loc[df['Attribut'] == "Cu", 'Attribut'] = 0
    df.loc[df['Attribut'] == "Co", 'Attribut'] = 1
    df.loc[df['Attribut'] == "Pa", 'Attribut'] = 2
    df['Attribut']=df['Attribut'].astype(int)

    return df

if __name__ == '__main__':
    #Daten gelesen
    df = pd.read_csv('aimasudata.csv')
    df=translate(df)

―― Da Japanisch manchmal in Daten wie Alter gemischt wird, wird str.extract ('([0-9] +)') verwendet, um nur die Zahlen zu extrahieren. \ ([Ewig ○ Jahre alt] → [○]. Du hast es geschafft!)

Bestätigung der Daten

Lassen Sie uns die Daten grafisch darstellen, um festzustellen, ob sie durch maschinelles Lernen wirklich erkennbar sind.

def checkdata(df,index):

    #Daten für jeden Typ abrufen
    x1 = [df[index][df['Attribut']==0]]
    x2 = [df[index][df['Attribut']==1]]
    x3 = [df[index][df['Attribut']==2]]
    
    #Histogramm erstellen
    plt.hist([x1,x2,x3], bins=16)

    #Bild speichern
    plt.savefig("%s_graph.png " %index)

    #Bildschirm
    plt.show()

if __name__ == '__main__':
    #Daten gelesen
    df = pd.read_csv('row_data.csv')
    df=translate(df)
    checkdata(df,"Alter")

Ergebnis

Alter

年齢_graph.png Blau: Cu, Orange: Co, Grün: Pa. Co hat einen hohen Anteil älterer Menschen.

Höhe

身長_graph.png Ist Cu niedrig und Co hoch? Diese Daten machen den größten Unterschied.

Körpergewicht

体重_graph.png Der Unterschied ist nicht groß, aber Co ist etwas höher. Insgesamt zu leicht.

B B_graph.png

W W_graph.png

H H_graph.png Im Körperdatensystem ist der Wert von Co insgesamt hoch. Ist die Trennung von Cu und Pa subtil?

Rastersuche

Dieses Mal werden wir SVM verwenden, um drei Klassen (Co, Cu, Pa) zu bestimmen. Da bei der Implementierung von SVM Parameter festgelegt werden müssen, Verwenden Sie zunächst die Rastersuche, um die Parameter zu bestimmen, die auf SVM angewendet werden sollen.

[Parameteroptimierung durch Rastersuche von Scikit lernen] (http://qiita.com/SE96UoC5AfUt7uY/items/c81f7cea72a44a7bfd3a)

def gridsearch(df):
    tuned_parameters = [{'C': [1, 10, 100, 1000, 10000], 'kernel': ['rbf'], 'gamma': [0.01,0.001, 0.0001]}]
    score = 'f1'
    clf = GridSearchCV(
        SVC(), #Identifikator
        tuned_parameters, #Parametersatz, den Sie optimieren möchten
        cv=5, #Anzahl der Kreuztests
        scoring='%s_weighted' % score ) #Angabe der Bewertungsfunktion des Modells

    df = df.dropna(subset=['Alter','Höhe','Körpergewicht','B','W','H'])
    X = df[['Alter','Höhe','Körpergewicht','B','W','H']]
    y = df["Attribut"]

    clf.fit(X, y)

    print"mean score for cross-validation:\n"
    for params, mean_score, all_scores in clf.grid_scores_:
        print "{:.3f} (+/- {:.3f}) for {}".format(mean_score, all_scores.std() / 2, params)
    print clf.best_params_

Ergebnis

スクリーンショット 2017-04-07 22.15.29.png

Das Ergebnis scheint am besten zu sein, wenn C = 100 und Gamma = 0,0001.

SVM-Implementierung

Implementieren Sie SVM mithilfe der durch die Rastersuche erhaltenen Parameter.

def dosvm(df):
    #Löschen Sie Zeilen mit fehlenden Werten
    df=df.dropna(subset=['Alter','Höhe','Körpergewicht','B','W','H'])

    X = df[['Alter','Höhe','Körpergewicht','B','W','H']]
    y = df["Attribut"]
   
    data_train,data_test,label_train,label_test=train_test_split(X,y,test_size=0.2)

    clf = svm.SVC(kernel="rbf",C=100,gamma=0.0001)
    clf.fit(data_train, label_train)
    result=clf.predict(data_test)
    cmat=confusion_matrix(label_test,result)
    acc=accuracy_score(label_test,result)
    
    print cmat
    print acc

Ergebnis

スクリーンショット 2017-04-07 22.22.49.png

Nach ungefähr 100 Versuchen konnte ich mit einer Genauigkeit von ungefähr 0,45 bestimmen. Betrachtet man die Verwirrungsmatrix, so scheint es, dass Pa nicht gut vorhergesagt wird.

Memo

―― Als ich anfing, fragte ich mich, ob ich es überhaupt identifizieren konnte, aber ich konnte es unerwartet identifizieren.

Recommended Posts

Maschinelles Lernen in Delemas (Praxis)
Maschinelles Lernen in Delemas (Datenerfassung)
Wird in EDA für maschinelles Lernen verwendet
Maschinelles Lernen
Automatisieren Sie Routineaufgaben beim maschinellen Lernen
Klassifikation und Regression beim maschinellen Lernen
Python: Vorverarbeitung beim maschinellen Lernen: Übersicht
Vorverarbeitung beim maschinellen Lernen 2 Datenerfassung
Random Seed Research im maschinellen Lernen
Vorverarbeitung beim maschinellen Lernen 4 Datenkonvertierung
[Python] Techniken, die häufig beim maschinellen Lernen verwendet werden
Python: Vorverarbeitung beim maschinellen Lernen: Datenerfassung
[Memo] Maschinelles Lernen
Klassifikation des maschinellen Lernens
[Python] Speichern von Lernergebnissen (Modellen) beim maschinellen Lernen
Python: Vorverarbeitung beim maschinellen Lernen: Datenkonvertierung
Vorverarbeitung beim maschinellen Lernen 1 Datenanalyseprozess
Beispiel für maschinelles Lernen
Datenversorgungstricks mit deque beim maschinellen Lernen
Vollständige Offenlegung der beim maschinellen Lernen verwendeten Methoden
[Python] Datenanalyse, maschinelles Lernen (Kaggle) -Datenvorverarbeitung-
Zusammenfassung der beim maschinellen Lernen verwendeten Bewertungsfunktionen
Lassen Sie uns einen Teil des maschinellen Lernens mit Python berühren
[Für Anfänger] Einführung in die Vektorisierung beim maschinellen Lernen
Zusammenfassung des Lernprogramms für maschinelles Lernen
Maschinelles Lernen Über Overlearning
Maschinelles Lernen ⑤ AdaBoost-Zusammenfassung
Maschinelles Lernen: Betreut --AdaBoost
Logistische Regression beim maschinellen Lernen
Deep Learning 1 Übung des Deep Learning
Maschinelles Lernen unterstützt Vektormaschine
Maschinelles Lernen studieren ~ matplotlib ~
Lineare Regression des maschinellen Lernens
Memo zum Kurs für maschinelles Lernen
Bibliothek für maschinelles Lernen dlib
Maschinelles Lernen (TensorFlow) + Lotto 6
Lerne irgendwie maschinelles Lernen
Bibliothek für maschinelles Lernen Shogun
Maschinelles Lernen Kaninchen Herausforderung
Einführung in das maschinelle Lernen
Maschinelles Lernen: k-Nächste Nachbarn
Was ist maschinelles Lernen?
Erstellen Sie mit Python eine interaktive Umgebung für maschinelles Lernen
Tool MALSS (Anwendung), das maschinelles Lernen in Python unterstützt
Coursera-Herausforderungen beim maschinellen Lernen in Python: ex2 (Logistic Return)
Tool MALSS (Basic), das maschinelles Lernen in Python unterstützt
Über das Testen bei der Implementierung von Modellen für maschinelles Lernen
Coursera Machine Learning Challenge in Python: ex1 (lineare Regression)
Versuchen Sie, das Modell des maschinellen Lernens in das Python-Paket aufzunehmen
Cross-Entropie zur Überprüfung in Coursera Machine Learning Woche 2 Aufgaben
MALSS (Einführung), ein Tool, das maschinelles Lernen in Python unterstützt
Modell des maschinellen Lernens unter Berücksichtigung der Wartbarkeit
Einbettung der Maschinensprache in die Sprache C.
Maschinelles Lernen mit Pokemon gelernt
Datensatz für maschinelles Lernen
[Maschinelles Lernen] Fassen wir die zufällige Gesamtstruktur auf leicht verständliche Weise zusammen
Japanische Vorverarbeitung für maschinelles Lernen
So passen Sie mehrere Bibliotheken für maschinelles Lernen auf einmal an
Maschinelles Lernen mit Jupyter Notebook in einer OCI Always Free-Umgebung (17.12.2019)
Eine Einführung in das maschinelle Lernen
Techniken im Zusammenhang mit maschinellem Lernen / Klassifizierung