[PYTHON] [Pour les débutants] Résumé de la souffrance de l'AED de Kaggle et de sa lutte

1. Objet

J'ai commencé à apprendre la programmation en janvier 2019, et je suis allé dans une école de programmation en ligne et j'ai commencé à apprendre sérieusement en juillet 2019.

Je travaillais sur kaggle comme exercice, mais ** je suis trop tombé sur la partie visualisation des données avant de construire un modèle pour l'apprentissage automatique, et je me suis brisé le cœur plusieurs fois **.

Mais en fait, je ne suis pas le seul à s'inquiéter, ** je pense que toutes les parties qui trébuchent de manière inattendue sont les mêmes **, ** j'ai posté un article qui est même un peu utile pour les super débutants qui souffrent maintenant Que faire / est le but **. Aussi, j'essaie d'écrire non seulement les conclusions mais aussi mes pensées. Même si je suis encore débutant, je pourrai travailler dans une entreprise spécialisée en IA à partir d'avril prochain, donc en ce sens j'espère pouvoir contribuer à ** la motivation des débutants ** ..

※Mise en garde※ Cet article n'est pas un article qui enseigne la connaissance, "Si vous faites cela, vous serez en mesure de le résoudre." Jusqu'au dernier, basé sur ma propre connaissance du super débutant actuel, j'ai écrit un compte rendu de la lutte qui semble tout à fait le cas. S'il y a quelque chose qui fonctionnera mieux si vous faites cela, je suis désolé de vous déranger, mais j'apprécierais que vous me le disiez.

2. Présentation de kaggle

Kickstarter Projects C'est peut-être un sentiment de super introduction avant le Titanic. Il classe le succès ou l'échec du financement du cloud. https://www.kaggle.com/kemical/kickstarter-projects

3. Introduction de la lutte EDA à reprendre cette fois

[1] Il y avait une valeur aberrante lors de la visualisation des données

Je pense que la visualisation des données est la première étape à franchir, mais en réalité il a fallu beaucoup de temps pour remarquer le fait qu'elle n'était pas bien visualisée à cause des valeurs aberrantes **.

[2] Dans la figure, il y a trop de fonctionnalités pour lire les caractères.

Tout d'abord, la visualisation! J'étais enthousiaste et j'ai essayé de faire un graphique à barres que j'ai recherché dans un livre ou sur le net, mais je ne pouvais pas du tout lire les caractères visualisés car il y avait trop de variables, ** Je veux visualiser uniquement les éléments supérieurs ... Il faut beaucoup de temps pour savoir comment faire. Il a fallu ** record.

4. Lutte [1] Il y avait une valeur aberrante lors de la visualisation des données

(1) Avant d'entrer dans le sujet principal

Importez ce dont vous avez besoin et lisez les données.

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import math
import pandas as pd
import seaborn as sns

df = pd.read_csv(r"C:~~\ks-projects-201801.csv")

(2) Essayez diverses visualisations

D'accord, il est important de regarder les données avant tout, à la fois dans le lapin et dans le coin! Je pensais que ce kaggle lui-même n'avait pas beaucoup de fonctionnalités, alors j'ai décidé de le regarder un par un.

◆ état (classification des résultats de réussite ou d'échec)

Si vous écrivez ce code et le visualisez, il ressemblera à ceci:

df["state"].value_counts().plot(kind = "bar")
キャプチャ1.PNG

Hmm ... j'échoue tellement ... Cependant, il existe diverses possibilités autres que l'échec et le succès, comme des choses qui se sont terminées au milieu ... Mais la plupart d'entre elles sont des échecs et des succès, alors j'aimerais couper les données sauf pour ces deux dans un premier temps!

En effet, j'ai pensé qu'il était important de visualiser et de considérer les données pour y réfléchir. Après avoir visualisé diverses autres fonctionnalités, nous sommes finalement arrivés à la fonctionnalité en question.

◆ objectif (montant cible)

Selon le montant cible de financement cloud, il peut réussir ou échouer! J'ai pensé, j'ai essayé de le visualiser avec un histogramme général.

plt.hist(df["goal"])

Puis ... un histogramme comme celui-ci a été complété.

キャプチャ2.PNG

Quand j'y pense maintenant, c'est parce qu'il y a une valeur aberrante, mais à ce moment-là, je ne l'ai pas remarqué du tout (je connaissais la valeur aberrante elle-même, mais je ne pouvais pas me connecter), "Qu'est-ce que c'est ...? C'est la même chose, mais ... qu'est-ce que 1e8 sur le côté droit de l'axe des x? Quelle est la puissance de 10? "

J'aurais dû le remarquer en regardant la valeur numérique dans l'objectif du montant de la fonctionnalité, mais je ne l'ai pas remarqué du tout. Peut-être, je pense qu'on considère maintenant que ** la «visualisation» elle-même était le but, et ce n'était pas l'analyse des données d'origine **.

En fait, j'étais perdu parce que je ne pouvais pas du tout le savoir, même si je l'ai vérifié pendant mon temps libre pendant un jour ou deux. Au contraire, je ne pouvais pas vraiment penser à ce qu'il fallait rechercher en premier lieu.

(3) Main arrière ... Demandez à l'enseignant

C'est mauvais, peut-être super rudimentaire, mais je ne sais pas du tout ... Je suis désolé ce n'est pas une solution très générale, mais je suivais un cours d'apprentissage automatique dans une certaine entreprise à ce moment-là, alors j'ai demandé au professeur. fait.

Quand j'ai montré à l'enseignant mon code et l'histogramme visualisé, il m'a immédiatement répondu: "N'est-ce pas parce qu'il y a une valeur aberrante?"

Outliers ... ouais ... sérieusement ... J'ai seulement eu l'impression, mais le professeur ne m'a plus appris pour mon étude, donc j'étais sur le chemin du retour. J'ai vaguement pensé qu'il valait mieux regarder le diagramme de barbe boîte pour le hors-prix, alors j'ai continué à la maison.

(4) Non résolu immédiatement ...

J'avais des connaissances de base parce que j'étudiais les moustaches lorsque j'ai passé le test statistique de 3e année. Sur les conseils de la valeur aberrante de l'enseignant, j'ai décidé de faire un dessin de barbe en boîte pour le moment.

sns.boxplot(y = "goal",data=df)
キャプチャ4.PNG

D'une certaine manière ... c'est différent de ce à quoi je m'attendais ... La barbe en boîte n'est pas un type si étrange ...?

Quand j'y pense maintenant, il y a trop de données autour de 0,0 et la boîte est écrasée, et les valeurs aberrantes elles-mêmes sont représentées sous forme de points, mais je n'ai même pas remarqué la ligne épaisse autour de 0,0 et j'ai pensé que cela n'avait pas de sens. C'était.

Alors, j'ai pensé: "Oui, si vous utilisez l'intrigue de violon, vous pouvez voir combien de données sont rassemblées autour de l'endroit. Faisons-le pendant un moment." J'ai fait ce qui suit.

sns.violinplot(y = "goal",data=df)
キャプチャ5.PNG

Quand j'ai vu cette intrigue de violon, qui ne semblait pas différente du diagramme de barbe boîte, j'ai finalement réalisé qu'il y avait trop de données autour de 0,0 et que le diagramme était étrange.

La plupart des données devraient probablement être autour de 0,0, alors prenons une grande donnée pour le moment! J'ai pensé. Pour le moment, j'ai fait ce qui suit pour couper plus d'un million de données.

df_goal_train = df[(df["goal"]<1000000)]
sns.boxplot(y = "goal",data=df_goal_train)
キャプチャ6.PNG

Je pense que c'est toujours inutile, alors la prochaine fois, je vais essayer de le réduire à 100 000 ou moins.

df_goal_train = df[(df["goal"]<100000)]
sns.boxplot(y = "goal",data=df_goal_train)
キャプチャ7.PNG

C'est assez proche de la silhouette de barbe à laquelle je pensais! !! Essayons l'intrigue du violon dans cet état.

sns.violinplot(y = "goal",data=df_goal_train)
キャプチャ8.PNG

Ça fait du bien! !! À ce stade, nous avons réduit certaines données, mais nous pouvons voir que le montant cible médian est d'environ 10 000 ou moins, et que la zone de volume est également de 5 000 ou moins lorsque l'on regarde le tracé du violon. En d'autres termes, je pense que vous pouvez voir d'après l'analyse des données qu'il y a beaucoup de financement cloud relativement faible.

Cependant, il n'est pas bon de supprimer le financement cloud à très haut prix qui a été une fois supprimé à titre d'illustration cette fois des données, et s'il y a un financement cloud à très haut prix à l'avenir, ces données ne pourront pas être bien prédites. , Je pense que vous pouvez voir à partir de cette visualisation que le traitement des données lui-même semble devoir être soigneusement déterminé.

Ceci conclut le chapitre sur la visualisation des objectifs.

5. Lutte [2] Je ne peux pas lire les caractères car il y a trop de fonctionnalités dans la figure.

(1) Avant d'entrer dans le sujet principal

Comme pour [1], nous utiliserons les projets Kickstarter. C'est exactement la même chose qu'avant, mais importons ce dont nous avons besoin.

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import math
import pandas as pd
import seaborn as sns

df = pd.read_csv(r"C:~~\ks-projects-201801.csv")

(2) Essayez diverses visualisations

Tout comme avant, j'ai rencontré ce problème en regardant les fonctionnalités une par une.

Regardons d'abord le nombre de "catégories principales"! J'ai pensé, j'ai essayé de l'illustrer.

df["main_category"].value_counts().plot(kind = "bar", stacked = True
キャプチャ9.PNG

Par contre, je ne suis vraiment biaisé envers personne ... Après cela, je pensais vaguement que je voudrais illustrer par le succès et l'échec.

Eh bien, pour le moment, j'ai pensé essayer d'illustrer une «catégorie» similaire la prochaine fois, alors je l'ai essayé.

df["category"].value_counts().plot(kind ="bar")
キャプチャ10.PNG

... ne peut pas lire·····. En fait, j'étais coincé avec exactement la même chose avant, et à ce moment-là, je ne pouvais pas le savoir même si je regardais, alors je l'ai laissé seul.

Je pensais que ce serait à nouveau la même chose à l'avenir, alors j'ai pensé à quoi faire. Ce que je voulais savoir, c'était le type de catégorie qui était fréquemment utilisé, alors j'ai décidé de jeter un coup d'œil sur les principaux éléments.

Par conséquent, j'ai décidé de me limiter aux données qui apparaissent 10 000 fois ou plus et j'ai fait ce qui suit.

df["category"].value_counts()[df["category"].value_counts() > 10000].plot(kind="bar")
plt.show()
キャプチャ11.PNG

Ensuite, seuls les meilleurs éléments étaient bien affichés! !!

J'ai fait des recherches, mais je pense que c'est probablement la meilleure façon d'examiner les données pour la première fois, au niveau.

Il est normal de penser calmement, mais ** Quand j'étudiais la programmation, j'ai perdu du temps à penser à quelque chose de magique qui a l'air magnifique d'un seul coup * * Mais maintenant, j'en suis venu à la conclusion que c'est la voie à suivre, compte tenu de ce que je veux faire.

6. Conclusion

C'est tout. Si vous l'écrivez avec des mots comme celui-ci, c'est un moment, et je pense que beaucoup de gens disent: «C'est vrai». Mais je fais.

** J'espère que vous pouvez dire que "tout le monde ne sait pas bien le faire depuis le début" et "tout le monde est capable de travailler constamment un par un et de devenir progressivement capable de le faire" **.

Il y a des livres et des sites qui disent "je devrais faire ça", mais je pense qu'il n'y a pas beaucoup de contenu qui décrit le processus de "j'ai souffert dans un tel endroit et je l'ai résolu en pensant de cette façon", donc je pense que cela motivera les débutants comme moi. J'espère que cela vous aidera à renforcer vos connaissances.

Recommended Posts

[Pour les débutants] Résumé de la souffrance de l'AED de Kaggle et de sa lutte
"Moyenne des sommes de 1 à 10" et sa vitesse d'exécution
[Pour les débutants] Résumé de l'entrée standard en Python (avec explication)
Résumé de la prise en charge des opérations de hachage (dictionnaire) pour Ruby et Python
Principes de base de Pandas pour les débutants ④ Gestion des éléments de date et d'heure
[Pour les débutants] Un résumé en mots des langages de programmation populaires (version 2018)
Vue d'ensemble de Docker (pour les débutants)
Résumé des API recommandées pour l'intelligence artificielle, l'apprentissage automatique et l'IA
Qu'est-ce que le grattage? [Résumé pour les débutants]
J'ai brièvement résumé les bits quantiques (débutants)
Lien récapitulatif des bases de Pandas pour les débutants
[Pour les professionnels de la concurrence] Résumé du doublement
Résumé des index et des tranches Python
Procédure du développement AWS CDK (Python) à la construction de ressources AWS * Pour les débutants