[PYTHON] Pokemon maschinelles Lernen N-te Abkochung

Einführung

Ich wollte maschinelles Lernen machen, also entschied ich mich für "Pokemon". Ich dachte, dass Pokemon eine Juwelenkiste mit Daten ist, weil der Rennwert für jedes Pokemon festgelegt wurde.

Diesmal handelt es sich jedoch um einen vollständig abwärtskompatiblen </ b> Artikel, der auf dem Artikel basiert, der oben bei der Suche nach "Pokemon Machine Learning" bei Google veröffentlicht wurde. Wenn Sie ihn also imitieren möchten, lesen Sie bitte den Originalartikel. Bitte gib mir. Maschinelles Lernen mit Pokemon

Umgebung

OS:Win10 home IDE:VScode Sprache: Python 3.7.3 64bit

Was ich getan habe

Basierend auf Pokemon-Datenbank bis zu 7 Generationen werden Pokemon von "Hiko" und "Esper" durch logistische Regression extrahiert und binarisiert. Ich versuchte es. Übrigens ist die Anzahl jedes Typs in Pokemon wie folgt (bis zu 7 Generationen)

Art Anzahl der Tiere
normal 116 Tiere
Schließlich 63 Tiere
Doku 69 Tiere
Jimen 75 Tiere
Flug 113 Tiere
Insekt 89 Tiere
Iwa 67 Tiere
Geist 55 Tiere
Hagane 58 Tiere
Hono 72 Tiere
Mizu 141 Tiere
Denki 60 Tiere
Kusa 103 Tiere
Koori 43 Tiere
Esper 100 Tiere
Drachen 59 Tiere
Böse 59 Tiere
Fee 54 Tiere

Mizu war der größte und Koori der kleinste. Es ist gefriergetrocknet und verdoppelt.

Code ist unten.

lr_pokemon.py



import pandas as pd
import codecs
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt


# read data by pandas
with codecs.open("data/pokemon_status.csv", "r", "Shift-JIS", "ignore") as file:
    df = pd.read_table(file, delimiter=",")

# print(df.head(15))

p_type = ["normal","Schließlich","Doku","Jimen","Flug","Insekt","Iwa","Geist","Hagane","Hono","Mizu","Denki","Kusa","Koori","Esper","Drachen","Böse","Fee"]
print(len(p_type))

# make functions
def count_type(p_type):
    list1 = df[df['Typ 1'] == p_type]
    list2 = df[df['Typ 2'] == p_type]
    lists = pd.concat([list1, list2])
    print(p_type + "Pokémon: %d Tiere" % len(lists))

def type_to_num(p_type):
    if p_type == "Flug":
        return 1
    else:
        return 0

# count number of type in pokemons
for i in p_type:
    count_type(i)

# make sky_df
sky1 = df[df['Typ 1'] == "Flug"]
sky2 = df[df['Typ 2'] == "Flug"]
sky = pd.concat([sky1, sky2])

# make psycho_df
psycho1 = df[df['Typ 1'] == "Esper"]
psycho2 = df[df['Typ 2'] == "Esper"]
psycho = pd.concat([psycho1, psycho2])

df_s_p = pd.concat([sky, psycho], ignore_index=True)

type1 = df_s_p['Typ 1'].apply(type_to_num)
type2 = df_s_p['Typ 2'].apply(type_to_num)
df_s_p['type_num'] = type1 + type2

print(df_s_p)

X = df_s_p.iloc[:,7:13].values
y = df_s_p['type_num'].values

X_train,X_test,y_train,y_test = train_test_split(X, y, test_size = 0.3, random_state = 0)

lr = LogisticRegression(C = 1.0)
lr.fit(X_train, y_train)
# show scores
print("train_score: %.3f" % lr.score(X_train, y_train))
print("test_score: %.3f" % lr.score(X_test, y_test))

i = 0
error1 = 0
success1 = 0
error2 = 0
success2 = 0
print("[Liste der Pokémon vom Typ Hiko]")
print("----------------------------------------")
print("")
while i < len(df_s_p):
    y_pred = lr.predict(X[i].reshape(1, -1))
    if y_pred == 1:
        print(df_s_p.loc[i, ["Pokemon Name"]])
        if df_s_p.loc[i, ["type_num"]].values == 1:
            success1 += 1
            print("Es ist ein Hikou-Typ, nicht wahr?")
            print("")
        else:
            error1 += 1
            print("Ich dachte, es wäre ein Hikou-Typ")
            print("")
    else:
        print(df_s_p.loc[i, ["Pokemon Name"]])
        if df_s_p.loc[i, ["type_num"]].values == 0:
            error2 += 1
            print("Es ist ein Esper-Typ, nicht wahr?")
            print("")
        else:
            success2 += 1
            print("Ich dachte, es wäre ein Esper-Typ")
            print("")
    i += 1
print("----------------------------------------")
print("Anzahl der Pokémon, die als der richtige Typ eingestuft wurden: %d Tiere" % success1)
print("Anzahl der Pokémon, die korrekt als Esper-Typ beurteilt wurden: %d Tiere" % success2)
print("Anzahl der Pokémon, die fälschlicherweise als Wandertyp identifiziert wurden: %d Tiere" % error1)
print("Anzahl der Pokémon, die fälschlicherweise als Esper-Typ identifiziert wurden: %d Tiere" % error2)
print("")




Ergebnis

Das Ergebnis war eine korrekte Rücklaufquote von 75%. Es ist tief. Es war eine Zahl, die beim maschinellen Lernen nicht verwendet werden konnte.

Ich dachte, ich könnte bessere Zahlen bekommen. Dies liegt daran, dass ich dachte, dass "Hiko" grob in physische Angreifer und "Esper" grob in spezielle Angreifer unterteilt werden könnte. Die Realität ist nicht so einfach. Als ich jedoch tatsächlich ein Pokemon sah, das fälschlicherweise erkannt wurde, bekam ich den Grund, dass es nicht fälschlicherweise erkannt wurde. Zum Beispiel gab es "Thunder" und "Freezer" als Kinder, die mit Esper verwechselt wurden, obwohl sie lustig waren, aber das ist richtig, weil sie teuer sind. Ich würde einen Fehler machen, wenn ich ihn zum ersten Mal sehen würde. Auf der anderen Seite gab es "Casey" und "Lartos" als Kinder, die fälschlicherweise als Esper bezeichnet wurden, aber ich dachte, es könnte nicht geholfen werden, da dies niedrige Rassenwerte sind. Weil es schwierig ist, den numerischen Wert im niedrigen Rennwertbereich zu unterscheiden. Die evolutionären "Hoodin", "Sarnite" und "El Reid" wurden Bakko Esper zugewiesen, daher bin ich erleichtert.




Hmm? ??


![erureido.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/208060/08320895-7b06-30f7-e6c0-c5a2080413b6.jpeg)

El Reid Han! Ich frage mich, ob Sie für einen Hikou-Typ gehalten werden könnten! !! !!

abschließend

Schließlich ist es falsch, Pokemon nur nach dem Rassenwert zu beurteilen.

Recommended Posts

Pokemon maschinelles Lernen N-te Abkochung
Maschinelles Lernen mit Pokemon gelernt
Maschinelles Lernen
[Memo] Maschinelles Lernen
Klassifikation des maschinellen Lernens
Beispiel für maschinelles 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
Maschinelles Lernen studieren ~ matplotlib ~
Lineare Regression des maschinellen Lernens
Memo zum Kurs für maschinelles Lernen
Bibliothek für maschinelles Lernen dlib
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?
Modell des maschinellen Lernens unter Berücksichtigung der Wartbarkeit
Datensatz für maschinelles Lernen
Japanische Vorverarbeitung für maschinelles Lernen
Maschinelles Lernen in Delemas (Praxis)
Eine Einführung in das maschinelle Lernen
Techniken im Zusammenhang mit maschinellem Lernen / Klassifizierung
Maschinelles Lernen: Überwacht - Lineare Regression
Grundlagen des maschinellen Lernens (Denkmal)
Anfänger des maschinellen Lernens versuchten RBM
[Maschinelles Lernen] Zufällige Gesamtstruktur verstehen
Maschinelles Lernen mit Python! Vorbereitung
Lernressourcen-Lernblock für maschinelles Lernen
Maschinelles Lernen ② Naive Bayes Zusammenfassung
Verstehe maschinelles Lernen ~ Ridge Regression ~.
Zusammenfassung der Artikel zum maschinellen Lernen (selbst verfasst)
Über maschinelles Lernen gemischte Matrix
Maschinelles Lernen: Überwacht - Zufälliger Wald
Praktisches Memo zum maschinellen Lernsystem
Maschinelles Lernen Minesweeper mit PyTorch
Python Machine Learning Programming> Schlüsselwörter
Algorithmus für maschinelles Lernen (einfaches Perzeptron)
Wird in EDA für maschinelles Lernen verwendet
Bedeutung von Datensätzen für maschinelles Lernen
Maschinelles Lernen und mathematische Optimierung
Maschinelles Lernen: Überwacht - Support Vector Machine
Überwachtes maschinelles Lernen (Klassifikation / Regression)
Ich habe versucht, die Extreme-Lernmaschine zu implementieren
Super Einführung in das maschinelle Lernen
4 [/] Vier Arithmetik durch maschinelles Lernen
Versuchen Sie es mit Kaggle leicht maschinell
Generiere Pokemon mit Deep Learning
Stapelvorlage für maschinelles Lernen (Rückgabe)
Maschinelles Lernen: Überwacht - Entscheidungsbaum
Algorithmus für maschinelles Lernen (logistische Regression)
<Kurs> Maschinelles Lernen Kapitel 6: Algorithmus 2 (k-Mittel)
Einführung in das maschinelle Lernen Schreiben von Notizen
Bedeutung des maschinellen Lernens und des Mini-Batch-Lernens
[Maschinelles Lernen] Lassen Sie uns den Entscheidungsbaum studieren
[Maschinelles Lernen] Unkorrelation aus der Mathematik verstehen
Algorithmus für maschinelles Lernen (Unterstützung von Vektor-Maschinenanwendungen)