[PYTHON] Vous serez ingénieur dans 100 jours ――Jour 79 ――Programmation ――À propos de l'apprentissage automatique 4

Cliquez ici jusqu'à hier

Vous deviendrez ingénieur dans 100 jours - Jour 76 - Programmation - À propos de l'apprentissage automatique

Vous deviendrez ingénieur dans 100 jours-70-Programmation-À propos du scraping

Vous deviendrez ingénieur dans 100 jours - Jour 66 - Programmation - À propos du traitement du langage naturel

Vous deviendrez ingénieur dans 100 jours - Jour 63 - Programmation - À propos de la probabilité 1

Vous deviendrez ingénieur dans 100 jours - Jour 59 - Programmation - À propos des algorithmes

Vous deviendrez ingénieur dans 100 jours --- Jour 53 --Git --À propos de Git

Vous deviendrez ingénieur dans 100 jours - Jour 42 --Cloud --À propos des services cloud

Vous deviendrez ingénieur dans 100 jours - Jour 36 --Base de données --À propos de la base de données

Vous deviendrez ingénieur dans 100 jours-24 jours-Python-Bases du langage Python 1

Vous deviendrez ingénieur dans 100 jours --Jour 18 --Javascript --Les bases de JavaScript 1

Vous deviendrez ingénieur dans 100 jours - Jour 14 --CSS --CSS Basics 1

Vous deviendrez ingénieur dans 100 jours - Jour 6 --HTML - Bases du HTML 1

Cette fois, c'est une continuation de l'histoire de l'apprentissage automatique.

À propos du flux de traitement des données de l'apprentissage automatique

Le flux de travail lors de l'intégration de l'apprentissage automatique est le suivant.

  1. Décidez de l'objectif
  2. Acquisition de données
  3. Compréhension / sélection / traitement des données
  4. Création d'un magasin de données (ensemble de données)
  5. Création de modèles
  6. Vérification de l'exactitude
  7. Mise en œuvre du système

Parmi celles-ci, 2-3 parties sont appelées prétraitement des données.

Cette fois, je voudrais créer un data mart à partir de ce prétraitement.

À propos de la création d'un data mart

Le langage est Python Les bibliothèques pour l'apprentissage automatique sont «Pandas» et «Numpy» La bibliothèque de visualisation utilise «seaborn», «matplotlib».

** Chargement de la bibliothèque **

#Charger la bibliothèque
import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')

%matplotlib inline

** Détails des données **

Les données utilisées cette fois sont la «liste des passagers du Titanic».

PassengerID:ID du passager
Survived:Résultat de survie(0=mort, 1=Survie)
Pclass:Classe de passagers(1 semble être le meilleur)
Name:Nom du passager
Sex:sexe
Age:âge
SibSp Nombre de frères et conjoints
Parch Nombre de parents et d'enfants
Numéro de billet
Frais d'embarquement
Numéro de chambre cabine
Port embarqué à bord

Supposons que vous ayez un fichier appelé titanic_train.csv.

** Lire le fichier **

Dans la bibliothèque pandas, il existe de nombreuses méthodes de lecture pour le format de fichier appelé read_xxx, alors utilisez-les pour lire le fichier. Cette fois, c'est un fichier CSV, donc c'est read_csv.

La bibliothèque pandas est une bibliothèque qui gère les formats de données appelés cadres de données tabulaires. Chargez le fichier dans le bloc de données.

#Lire les données du fichier
file_path = 'data/titanic_train.csv'
train_df = pd.read_csv(file_path,encoding='utf-8')
train_df.head()
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
0 1 0 3 Braund, Mr. Owen Harris male 22 1 0 A/5 21171 7.25 NaN S
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38 1 0 PC 17599 71.2833 C85 C
2 3 1 3 Heikkinen, Miss. Laina female 26 0 0 STON/O2. 3101282 7.925 NaN S
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35 1 0 113803 53.1 C123 S
4 5 0 3 Allen, Mr. William Henry male 35 0 0 373450 8.05 NaN S

Les données ressemblent à ceci.

La dernière fois, j'ai examiné le contenu de diverses données et demandé quel type de données pouvait être utilisé. Cette fois, nous allons continuer avec cela, en utilisant des données qui semblent utilisables, et les incorporer dans des données pour l'apprentissage automatique.

** Vérifiez les valeurs manquantes **

Lorsque les données sont lues, s'il n'y a pas de données, elles seront traitées comme une valeur manquante sur la trame de données.

Combien de valeurs manquantes sont Trame de données .isnull (). Sum () Vous pouvez vérifier le nombre de valeurs manquantes dans chaque colonne avec.

train_df.isnull().sum()

PassengerId 0 Survived 0 Pclass 0 Name 0 Sex 0 Age 177 SibSp 0 Parch 0 Ticket 0 Fare 0 Cabin 687 Embarked 2 dtype: int64

En regardant cela, il semble que seules certaines colonnes ont des valeurs manquantes. Il semble y avoir un défaut dans «Age», «Cabin» et «Embarked».

N'afficherons que la partie avec des valeurs manquantes.

** Extraire les lignes qui correspondent aux conditions **

Trame de données [expression conditionnelle]

** Extraire les lignes avec des valeurs manquantes **

Trame de données [Trame de données ['nom de la colonne']. Isnull ()]

train_df[train_df['Embarked'].isnull()]
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
61 62 1 1 Icard, Miss. Amelie female 38 0 0 113572 80 B28 NaN
829 830 1 1 Stone, Mrs. George Nelson (Martha Evelyn) female 62 0 0 113572 80 B28 NaN

En regardant la valeur dans la colonne ʻEmbarked, c'est NaN`. Les valeurs manquantes sur le bloc de données sont affichées sous la forme «NaN».

En cas de numéros manquants ·Valeur moyenne ·Médian ・ Valeur arbitraire Dans de nombreux cas, les valeurs manquantes sont complétées par.

Les valeurs de catégorie telles que «Marqué» ne sont pas des nombres et ne peuvent pas être remplacées par des nombres.

Si vous voulez remplir les valeurs manquantes, vous pouvez les remplir avec fillna.

** Compléter les valeurs manquantes avec des valeurs arbitraires **

Trame de données .fillna (valeur de remplissage)

Si vous souhaitez compléter avec la valeur moyenne de cette colonne, recherchez d'abord la valeur moyenne.

** Calculer la moyenne de la colonne **

Trame de données ['nom de la colonne']. Mean ()

** Trouvez la valeur médiane de la colonne **

Trame de données ['nom de la colonne']. Median ()

print(train_df['Fare'].mean())
print(train_df['Fare'].median())

32.2042079685746 14.4542

#Compléter l'âge avec la valeur moyenne
train_df['Age'] = train_df['Age'].fillna(train_df['Age'].mean())

** Vectorisation des valeurs de catégorie **

Dans l'apprentissage automatique, toutes les valeurs utilisées pour le calcul doivent être des valeurs numériques. Dans le cas d'une valeur de catégorie composée de chaînes de caractères, dans de nombreux cas, à l'exception de certains modèles, elle ne peut pas être utilisée telle quelle en tant que données d'apprentissage automatique.

Par conséquent, il convertit la valeur de la catégorie en une valeur numérique en tant que «vecteur unique».

** Faire de la valeur de catégorie un vecteur one-hot **

«Un vecteur chaud» est les données qui créent une colonne de valeurs de catégorie et définit la valeur à 1 si le nom de la colonne est différent et à 0 si la valeur est différente.

pd.get_dummies (bloc de données [['nom de la colonne']])

#Classification des lieux d'embarquement
train_df["Embarked"] = train_df["Embarked"].fillna('N')
one_hot_df = pd.get_dummies(train_df["Embarked"],prefix='Em')
one_hot_df.head()
Em_C Em_N Em_Q Em_S
0 0 0 0 1
1 1 0 0 0
2 0 0 0 1
3 0 0 0 1
4 0 0 0 1

Puisque la colonne ʻEmbarkeda un défaut, elle est transformée en valeur de catégorie après avoir remplacé le défaut parN`. Génère une nouvelle trame de données qui est remplacée par 1 là où il y a une valeur de catégorie et 0 là où elle ne l'est pas.

Vous allez créer des colonnes pour chaque type de données. S'il y a trop de types de données, les données seront brutes (presque 0). C'est une bonne idée de créer des variables catégorielles uniquement pour celles qui sont limitées dans une certaine mesure.

** Conversion de nombres et de chaînes ** Nous changerons les données d'une chaîne de caractères en une valeur numérique, ou changerons la valeur numérique en une chaîne de caractères pour en faire des données pouvant être utilisées pour l'apprentissage automatique.

Étant donné que Gender (Sex) est une chaîne de caractères, il ne peut pas être utilisé pour l'apprentissage automatique tel quel. Nous convertirons une chaîne de caractères en une valeur numérique.

Cadre de données ['nom de la colonne'] .replace ({valeur: valeur, valeur: valeur ...})

#Quantification du genre(0 hommes,1 femme)
train_df['Sex2'] = train_df['Sex'].replace({'male':0,'female':1})
train_df.head()
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked Sex2
0 1 0 3 Braund, Mr. Owen Harris male 22 1 0 A/5 21171 7.25 NaN S 0
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38 1 0 PC 17599 71.2833 C85 C 1
2 3 1 3 Heikkinen, Miss. Laina female 26 0 0 STON/O2. 3101282 7.925 NaN S 1
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35 1 0 113803 53.1 C123 S 1
4 5 0 3 Allen, Mr. William Henry male 35 0 0 373450 8.05 NaN S 0

Création d'une nouvelle colonne de genre.

Vous pouvez également utiliser replace lors de la conversion d'un nombre en chaîne. Lors du changement de tout le type de données d'une colonne

Trame de données ['nom de la colonne']. Astype (np. Type de données)

** Numérisation **

Calculons l'âge en utilisant l'âge. Si vous arrondissez l'âge par 10 et le divisez, vous obtenez l'âge. Vous pouvez également créer une colonne pour les éléments manquants sans âge.


#Catégorisation par âge
train_df['period'] = train_df['Age']//10
train_df['period'] = train_df['period'].fillna('NaN')
train_df['period'] = train_df['period'].astype(np.str)
period_df = pd.get_dummies(train_df["period"],prefix='Pe')
period_df.head()
Pe_0.0 Pe_1.0 Pe_2.0 Pe_3.0 Pe_4.0 Pe_5.0 Pe_6.0 Pe_7.0 Pe_8.0
0 0 0 1 0 0 0 0 0 0
1 0 0 0 1 0 0 0 0 0
2 0 0 1 0 0 0 0 0 0
3 0 0 0 1 0 0 0 0 0
4 0 0 0 1 0 0 0 0 0

** Combiner des trames de données **

Nous combinerons les trames de données nouvellement créées en une seule. Utilisez pd.concat pour l'assembler.

pd.concat ([bloc de données, bloc de données], axe = 1)


con_df = pd.concat([train_df,period_df],axis=1)
con_df = pd.concat([con_df,one_hot_df],axis=1)
con_df.head(1)
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare ... Pe_3.0 Pe_4.0 Pe_5.0 Pe_6.0 Pe_7.0 Pe_8.0 Em_C Em_N Em_Q Em_S
0 1 0 3 Braund, Mr. Owen Harris male 22 1 0 A/5 21171 7.25 ... 0 0 0 0 0 0 0 0 0 1

Vous avez maintenant concaténé les blocs de données horizontalement.

** Supprimer les données inutiles **

Lors de la combinaison de blocs de données, la colonne d'origine est supprimée car les données avant la conversion ne sont pas nécessaires.

Data frame.drop (['nom de la colonne'], axe = 1)

data_df = con_df.drop(['PassengerId','Pclass','Name','Age','Ticket','Cabin','Embarked','period','Sex'], axis=1)
data_df.head()
Survived SibSp Parch Fare Sex2 Pe_0.0 Pe_1.0 Pe_2.0 Pe_3.0 Pe_4.0 Pe_5.0 Pe_6.0 Pe_7.0 Pe_8.0 Em_C Em_N Em_Q Em_S
0 0 1 0 7.25 0 0 0 1 0 0 0 0 0 0 0 0 0 1
1 1 1 0 71.2833 1 0 0 0 1 0 0 0 0 0 1 0 0 0
2 1 0 0 7.925 1 0 0 1 0 0 0 0 0 0 0 0 0 1
3 1 1 0 53.1 1 0 0 0 1 0 0 0 0 0 0 0 0 1
4 0 0 0 8.05 0 0 0 0 1 0 0 0 0 0 0 0 0 1

Toutes les données sont des valeurs numériques. De cette manière, elles peuvent être utilisées comme données finales pour l'apprentissage automatique.

Résumé

Aujourd'hui, j'ai traité les données et créé un data mart pour l'apprentissage automatique. Nous n'avons introduit que quelques méthodes de traitement aujourd'hui.

Tout d'abord, apprenons le déroulement approximatif. Et une fois que vous l'avez compris dans une certaine mesure, je pense que c'est une bonne idée de trouver des moyens d'améliorer la précision ou d'essayer de nouvelles méthodes.

21 jours avant de devenir ingénieur

Informations sur l'auteur

HP d'Otsu py: http://www.otupy.net/

Youtube: https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter: https://twitter.com/otupython

Recommended Posts

Vous serez ingénieur dans 100 jours ――Jour 82 ――Programmation ――À propos de l'apprentissage automatique 7
Vous serez ingénieur dans 100 jours ――Jour 79 ――Programmation ――À propos de l'apprentissage automatique 4
Vous serez ingénieur dans 100 jours ――Jour 76 ――Programmation ――À propos de l'apprentissage automatique
Vous serez ingénieur dans 100 jours ―― Jour 80 ―― Programmation ―― À propos de l'apprentissage automatique 5
Vous serez ingénieur dans 100 jours ――Jour 78 ――Programmation ――À propos de l'apprentissage automatique 3
Vous serez ingénieur dans 100 jours ――Jour 84 ――Programmation ――À propos de l'apprentissage automatique 9
Vous serez ingénieur dans 100 jours ――Jour 83 ――Programmation ――À propos de l'apprentissage automatique 8
Vous serez ingénieur dans 100 jours ――Jour 77 ――Programmation ――À propos de l'apprentissage automatique 2
Vous serez ingénieur dans 100 jours ――Jour 85 ――Programmation ――À propos de l'apprentissage automatique 10
Vous serez ingénieur dans 100 jours ――Jour 71 ――Programmation ――À propos du scraping 2
Vous serez ingénieur dans 100 jours ――Jour 61 ――Programmation ――A propos de l'exploration
Vous serez ingénieur dans 100 jours ――Jour 74 ――Programmation ――À propos du scraping 5
Vous serez ingénieur dans 100 jours ――Jour 73 ――Programmation ――À propos du scraping 4
Vous serez ingénieur dans 100 jours ――Jour 75 ――Programmation ――À propos du scraping 6
Vous deviendrez ingénieur dans 100 jours --Jour 68 --Programmation --A propos de TF-IDF
Vous serez ingénieur dans 100 jours ――Jour 70 ――Programmation ――À propos du grattage
Vous serez ingénieur dans 100 jours ――Jour 63 ――Programmation ――À propos de la probabilité 1
Vous serez ingénieur dans 100 jours ――Jour 64 ――Programmation ――À propos de la probabilité 2
Vous serez ingénieur dans 100 jours ―― Jour 60 ―― Programmation ―― À propos de la structure des données et de l'algorithme de tri
Vous serez ingénieur dans 100 jours - Jour 27 - Python - Exercice Python 1
Vous serez ingénieur dans 100 jours - Jour 34 - Python - Exercice Python 3
Vous serez ingénieur dans 100 jours - Jour 31 - Python - Python Exercice 2
Vous devenez ingénieur en 100 jours ――Jour 67 ――Programmation ――A propos de l'analyse morphologique
Vous devenez ingénieur en 100 jours ――Jour 66 ――Programmation ――À propos du traitement du langage naturel
Vous serez ingénieur dans 100 jours ――Jour 24 ―― Python ―― Bases du langage Python 1
Vous serez ingénieur dans 100 jours ――Jour 30 ―― Python ―― Bases du langage Python 6
Vous serez ingénieur dans 100 jours ――Jour 25 ―― Python ―― Bases du langage Python 2
Vous serez ingénieur dans 100 jours - Jour 29 - Python - Bases du langage Python 5
Vous serez ingénieur dans 100 jours - Jour 33 - Python - Bases du langage Python 8
Vous serez ingénieur dans 100 jours --Jour 26 --Python --Basiques du langage Python 3
Vous devenez ingénieur en 100 jours - Jour 35 - Python - Ce que vous pouvez faire avec Python
Vous serez ingénieur dans 100 jours --Jour 32 --Python --Basiques du langage Python 7
Vous serez ingénieur dans 100 jours --Jour 28 --Python --Les bases du langage Python 4
Devenez bientôt un ingénieur IA! Apprenez complètement Python / AI / Machine learning / Deep learning / Analyse statistique en quelques jours!
Vous devez faire attention aux commandes que vous utilisez quotidiennement dans l'environnement de production.
Créez un environnement interactif pour l'apprentissage automatique avec Python
À propos des tests dans la mise en œuvre de modèles d'apprentissage automatique
Apprentissage automatique sur le surapprentissage
Enregistrement d'apprentissage de la programmation 2ème jour
Jusqu'à ce qu'un ingénieur qui était autrefois frustré par l'apprentissage automatique parvienne à utiliser l'apprentissage automatique au travail
[Apprentissage automatique] Résumons la forêt aléatoire de manière simple à comprendre
Apprentissage automatique dans Delemas (s'entraîner)
Une introduction à l'apprentissage automatique
À propos de la matrice mixte d'apprentissage automatique
Programmation Python Machine Learning> Mots-clés
Utilisé en EDA pour l'apprentissage automatique
Que diriez-vous d'Anaconda pour créer un environnement d'apprentissage automatique avec Python?
Apprenez le machine learning à tout moment et en tout lieu dans l'environnement Jupyter Notebook à la demande