[PYTHON] Pokemon Machine Learning Nth décoction

introduction

Je voulais faire du machine learning, alors j'ai choisi "Pokemon". Je pensais que Pokemon était un joyau de données car la valeur de la race était décidée pour chaque Pokémon.

Cependant, cette fois, il s'agit d'un article entièrement rétrocompatible </ b> basé sur celui qui est sorti en haut en recherchant "Pokemon Machine Learning" sur Google, donc si vous souhaitez l'imiter, veuillez vous référer à l'article original. S'il te plait donne moi. Apprentissage automatique avec Pokemon

environnement

OS:Win10 home IDE:VScode Langage: python 3.7.3 64bit

Ce que j'ai fait

Basé sur base de données Pokemon jusqu'à 7 générations, les Pokémon de "Hiko" et "Esper" sont extraits et binarisés par régression logistique. Je l'ai essayé. À propos, le nombre de chaque type dans Pokemon est le suivant (jusqu'à 7 générations)

type Nombre d'animaux
Ordinaire 116 animaux
finalement 63 animaux
Doku 69 animaux
Jimen 75 animaux
vol 113 animaux
insecte 89 animaux
Iwa 67 animaux
fantôme 55 animaux
Hagane 58 animaux
Hono 72 animaux
Mizu 141 animaux
Denki 60 animaux
Kusa 103 animaux
Koori 43 animaux
Esper 100 animaux
Dragon 59 animaux
Mal 59 animaux
Fée 54 animaux

Mizu était le plus grand et Koori était le plus petit. Il est lyophilisé et doublé.

Le code est ci-dessous.

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 = ["Ordinaire","finalement","Doku","Jimen","vol","insecte","Iwa","fantôme","Hagane","Hono","Mizu","Denki","Kusa","Koori","Esper","Dragon","Mal","Fée"]
print(len(p_type))

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

def type_to_num(p_type):
    if p_type == "vol":
        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['Type 1'] == "vol"]
sky2 = df[df['Type 2'] == "vol"]
sky = pd.concat([sky1, sky2])

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

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

type1 = df_s_p['Type 1'].apply(type_to_num)
type2 = df_s_p['Type 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 des Pokémon jugés de type 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, ["Nom du Pokémon"]])
        if df_s_p.loc[i, ["type_num"]].values == 1:
            success1 += 1
            print("C'est du type hikou, n'est-ce pas?")
            print("")
        else:
            error1 += 1
            print("Je pensais que c'était du type hikou")
            print("")
    else:
        print(df_s_p.loc[i, ["Nom du Pokémon"]])
        if df_s_p.loc[i, ["type_num"]].values == 0:
            error2 += 1
            print("C'est du type Esper, n'est-ce pas?")
            print("")
        else:
            success2 += 1
            print("Je pensais que c'était un type Esper")
            print("")
    i += 1
print("----------------------------------------")
print("Nombre de Pokémon jugés du type correct: %d animaux" % success1)
print("Nombre de Pokémon correctement jugés de type Esper: %d animaux" % success2)
print("Nombre de Pokémon identifiés par erreur comme un type de randonnée: %d animaux" % error1)
print("Nombre de Pokémon identifiés par erreur comme de type Esper: %d animaux" % error2)
print("")




résultat

Le résultat a été un taux de réponse correcte de 75%. C'est bas. C'était un nombre qui ne pouvait pas être utilisé dans l'apprentissage automatique.

Je pensais pouvoir obtenir de meilleurs chiffres. Parce que je pensais que "Hiko" pouvait être grossièrement divisé en attaquants physiques et "Esper" pourrait être grossièrement divisé en attaquants spéciaux. La réalité n'est pas si simple. Cependant, quand j'ai vu le Pokémon faussement détecté, j'ai eu la raison pour laquelle je ne le détecterais même pas à tort. Par exemple, il y avait "Thunder" et "Freezer" comme des enfants qui ont été confondus avec Esper même s'ils étaient hilarants, mais c'est vrai parce qu'ils sont chers. Je ferais une erreur si je le voyais pour la première fois. D'un autre côté, il y avait "Casey" et "Lartos" en tant qu'enfants qui ont été pris à tort pour être un Esper, mais je pensais que cela ne pouvait pas être aidé parce que ce sont de faibles valeurs raciales. Parce qu'il est difficile de faire une différence dans la valeur numérique dans la plage de valeurs de course basse. L'évolutionnaire "Hoodin", "Sarnite" et "El Reid" ont été assignés à Bakko Esper, donc je suis soulagé.




Hmm? ??


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

El Reid Han! Je me demande si vous auriez pu être confondu avec un type hikou! !! !!

en conclusion

Après tout, il est faux de juger Pokemon uniquement par la valeur de la race.

Recommended Posts

Pokemon Machine Learning Nth décoction
L'apprentissage automatique appris avec Pokemon
Apprentissage automatique
[Memo] Apprentissage automatique
Classification de l'apprentissage automatique
Exemple d'apprentissage automatique
Résumé du didacticiel d'apprentissage automatique
Apprentissage automatique sur le surapprentissage
Apprentissage automatique ⑤ Résumé AdaBoost
Apprentissage automatique: supervisé - AdaBoost
Régression logistique d'apprentissage automatique
Étudier l'apprentissage automatique ~ matplotlib ~
Régression linéaire d'apprentissage automatique
Mémo du cours d'apprentissage automatique
Bibliothèque d'apprentissage automatique dlib
Bibliothèque d'apprentissage automatique Shogun
Défi de lapin d'apprentissage automatique
Introduction à l'apprentissage automatique
Apprentissage automatique: k-voisins les plus proches
Qu'est-ce que l'apprentissage automatique?
Modèle d'apprentissage automatique prenant en compte la maintenabilité
Ensemble de données pour l'apprentissage automatique
Prétraitement japonais pour l'apprentissage automatique
Apprentissage automatique dans Delemas (s'entraîner)
Une introduction à l'apprentissage automatique
Techniques liées à l'apprentissage automatique / à la classification
Machine Learning: Supervision - Régression linéaire
Bases de l'apprentissage automatique (mémoire)
Un débutant en apprentissage automatique a essayé la RBM
[Apprentissage automatique] Comprendre la forêt aléatoire
Apprentissage automatique avec Python! Préparation
Bloc-notes de ressources d'étude d'apprentissage automatique
Apprentissage automatique ② Résumé Naive Bayes
Comprendre l'apprentissage automatique ~ régression de crête ~.
Résumé de l'article sur l'apprentissage automatique (auto-écrit)
À propos de la matrice mixte d'apprentissage automatique
Apprentissage automatique: forêt supervisée - aléatoire
Mémo pratique du système d'apprentissage automatique
Démineur d'apprentissage automatique avec PyTorch
Programmation Python Machine Learning> Mots-clés
Algorithme d'apprentissage automatique (perceptron simple)
Utilisé en EDA pour l'apprentissage automatique
Importance des ensembles de données d'apprentissage automatique
Apprentissage automatique et optimisation mathématique
Machine Learning: Supervisé - Support Vector Machine
Machine learning supervisé (classification / régression)
J'ai essayé d'implémenter Extreme Learning Machine
Super introduction à l'apprentissage automatique
4 [/] Quatre arithmétiques par apprentissage automatique
Essayez le machine learning à la légère avec Kaggle
Générez des Pokémon avec Deep Learning
Modèle d'empilage d'apprentissage automatique (retour)
Machine Learning: Supervisé - Arbre de décision
Algorithme d'apprentissage automatique (régression logistique)
<Course> Machine learning Chapitre 6: Algorithme 2 (k-means)
Introduction à la rédaction de notes d'apprentissage automatique
Importance de l'apprentissage automatique et de l'apprentissage par mini-lots
[Apprentissage automatique] Étudions l'arbre de décision
[Apprentissage automatique] Comprendre la décorrélation des mathématiques
Algorithme d'apprentissage automatique (prise en charge de l'application de machine vectorielle)