Votre premier pas en Data Science. Titanesque

Un petit mot d'introduction

Je crois que nous pourrions faire plus de choses si nous recevions des instructions étape par étape qui nous diraient quoi faire et comment le faire. Je me souviens moi-même de moments de ma vie où je ne pouvais pas commencer quelque chose parce qu’il était tout simplement difficile de comprendre par où commencer. Peut-être qu'il était une fois sur Internet les mots « Data Science » et avez-vous décidé que vous en étiez loin, et que les gens qui font cela étaient quelque part là-bas, dans un autre monde. Non, ils sont ici. Et, peut-être, grâce à des personnes de ce domaine, un article est apparu sur votre flux. Il existe de nombreux cours qui vous aideront à vous habituer à ce métier, mais ici, je vais vous aider à faire le premier pas.

Eh bien, êtes-vous prêt ? Laissez-moi vous dire tout de suite que vous aurez besoin de connaître Python 3, puisque c'est ce que j'utiliserai ici. Je vous conseille également de l'installer au préalable sur Jupyter Notebook ou de voir comment utiliser Google Colab.

Шаг первый

Votre premier pas en Data Science. Titanesque

Kaggle est votre assistant important dans cette affaire. En principe, vous pouvez vous en passer, mais j'en parlerai dans un autre article. Il s'agit d'une plateforme qui héberge des concours de Data Science. Dans chacun de ces concours, au début, vous acquerrez une quantité irréaliste d'expérience dans la résolution de problèmes de toutes sortes, une expérience de développement et une expérience de travail en équipe, ce qui est important à notre époque.

Nous prendrons notre tâche à partir de là. Ça s'appelle "Titanic". La condition est la suivante : prédire si chaque individu survivra. De manière générale, la tâche d'une personne impliquée dans DS consiste à collecter des données, à les traiter, à former un modèle, à faire des prévisions, etc. Dans Kaggle, nous sommes autorisés à sauter l'étape de collecte des données : elles sont présentées sur la plateforme. Nous devons les télécharger et nous pouvons commencer !

Vous pouvez procéder comme suit :

l'onglet Données contient des fichiers contenant des données

Votre premier pas en Data Science. Titanesque

Votre premier pas en Data Science. Titanesque

Nous avons téléchargé les données, préparé nos notebooks Jupyter et...

Шаг второй

Comment pouvons-nous maintenant charger ces données ?

Commençons par importer les bibliothèques nécessaires :

import pandas as pd
import numpy as np

Pandas nous permettra de télécharger des fichiers .csv pour un traitement ultérieur.

Numpy est nécessaire pour représenter notre tableau de données sous forme de matrice avec des nombres.
Poursuivre. Prenons le fichier train.csv et téléversons-le-nous :

dataset = pd.read_csv('train.csv')

Nous ferons référence à notre sélection de données train.csv via la variable dataset. Voyons ce qu'il y a :

dataset.head()

Votre premier pas en Data Science. Titanesque

La fonction head() nous permet de regarder les premières lignes d'une trame de données.

Les colonnes Survived sont précisément nos résultats, qui sont connus dans cette base de données. Pour la question de la tâche, nous devons prédire la colonne Survived pour les données test.csv. Ces données stockent des informations sur les autres passagers du Titanic, pour lesquelles nous, en résolvant le problème, ne connaissons pas l'issue.

Divisons donc notre tableau en données dépendantes et indépendantes. Tout est simple ici. Les données dépendantes sont les données qui dépendent des données indépendantes contenues dans les résultats. Les données indépendantes sont les données qui influencent le résultat.

Par exemple, nous avons l'ensemble de données suivant :

« Vova a enseigné l'informatique - non.
Vova a obtenu un 2 en informatique.

La note en informatique dépend de la réponse à la question : Vova a-t-il étudié l'informatique ? Est-ce clair? Passons à autre chose, nous sommes déjà plus proches du but !

La variable traditionnelle pour les données indépendantes est X. Pour les données dépendantes, y.

Nous procédons comme suit :

X = dataset.iloc[ : , 2 : ]
y = dataset.iloc[ : , 1 : 2 ]

Ce que c'est? Avec la fonction iloc[:, 2: ] on dit à Python : je veux voir dans la variable X les données à partir de la deuxième colonne (incluse et à condition que le comptage commence à zéro). Dans la deuxième ligne, nous disons que nous voulons voir les données de la première colonne.

[ a:b, c:d ] est la construction de ce que nous utilisons entre parenthèses. Si vous ne spécifiez aucune variable, elles seront enregistrées par défaut. Autrement dit, nous pouvons spécifier [:,: d] et nous obtiendrons ensuite toutes les colonnes du dataframe, à l'exception de celles qui partent du numéro d. Les variables a et b définissent des chaînes, mais nous en avons toutes besoin, nous laissons donc cela par défaut.

Voyons ce que nous avons obtenu :

X.head()

Votre premier pas en Data Science. Titanesque

y.head()

Votre premier pas en Data Science. Titanesque

Afin de simplifier cette petite leçon, nous supprimerons les colonnes qui nécessitent un soin particulier ou n'affectent pas du tout la capacité de survie. Ils contiennent des données de type str.

count = ['Name', 'Ticket', 'Cabin', 'Embarked']
X.drop(count, inplace=True, axis=1)

Super! Passons à l'étape suivante.

Troisième étape

Ici, nous devons coder nos données afin que la machine comprenne mieux comment ces données affectent le résultat. Mais nous n'encoderons pas tout, mais seulement les données str que nous avons laissées. Colonne "Sexe". Comment voulons-nous coder ? Représentons les données sur le sexe d'une personne sous forme de vecteur : 10 - homme, 01 - femme.

Tout d'abord, convertissons nos tables en une matrice NumPy :

X = np.array(X)
y = np.array(y)

Et maintenant regardons :

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder

ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])],
                       remainder='passthrough')
X = np.array(ct.fit_transform(X))

La bibliothèque sklearn est une bibliothèque tellement intéressante qui nous permet de faire un travail complet en Data Science. Il contient un grand nombre de modèles d’apprentissage automatique intéressants et nous permet également de préparer des données.

OneHotEncoder nous permettra d'encoder le sexe d'une personne dans cette représentation, comme nous l'avons décrit. 2 classes seront créées : masculine, féminine. Si la personne est un homme, alors 1 sera écrit respectivement dans la colonne « homme » et 0 dans la colonne « femme ».

Après OneHotEncoder() il y a [1] - cela signifie que nous voulons encoder la colonne numéro 1 (en comptant à partir de zéro).

Super. Allons encore plus loin !

En règle générale, il arrive que certaines données restent vides (c'est-à-dire NaN - pas un nombre). Par exemple, il y a des informations sur une personne : son nom, son sexe. Mais il n'y a aucune information sur son âge. Dans ce cas, nous appliquerons la méthode suivante : nous trouverons la moyenne arithmétique sur toutes les colonnes et, s'il manque certaines données dans la colonne, alors nous comblerons le vide avec la moyenne arithmétique.

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(X)
X = imputer.transform(X)

Prenons maintenant en compte le fait que des situations se produisent lorsque les données sont très volumineuses. Certaines données se situent dans l'intervalle [0:1], tandis que d'autres peuvent dépasser les centaines et les milliers. Pour éliminer cette dispersion et rendre l'ordinateur plus précis dans ses calculs, nous allons analyser les données et les mettre à l'échelle. Que tous les nombres ne dépassent pas trois. Pour ce faire, nous utiliserons la fonction StandardScaler.

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X[:, 2:] = sc.fit_transform(X[:, 2:])

Maintenant, nos données ressemblent à ceci :

Votre premier pas en Data Science. Titanesque

Classe. Nous sommes déjà proches de notre objectif !

Quatrième étape

Formons notre premier modèle ! Dans la bibliothèque sklearn, nous pouvons trouver un grand nombre de choses intéressantes. J'ai appliqué le modèle Gradient Boosting Classifier à ce problème. Nous utilisons un classificateur car notre tâche est une tâche de classification. Le pronostic doit être attribué à 1 (a survécu) ou à 0 (n’a pas survécu).

from sklearn.ensemble import GradientBoostingClassifier
gbc = GradientBoostingClassifier(learning_rate=0.5, max_depth=5, n_estimators=150)
gbc.fit(X, y)

La fonction fit dit à Python : laissez le modèle rechercher les dépendances entre X et y.

Moins d'une seconde et le modèle est prêt.

Votre premier pas en Data Science. Titanesque

Comment l'appliquer ? Nous verrons maintenant !

Cinquième étape. Conclusion

Nous devons maintenant charger un tableau avec nos données de test pour lesquelles nous devons faire une prévision. Avec ce tableau, nous ferons toutes les mêmes actions que pour X.

X_test = pd.read_csv('test.csv', index_col=0)

count = ['Name', 'Ticket', 'Cabin', 'Embarked']
X_test.drop(count, inplace=True, axis=1)

X_test = np.array(X_test)

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])],
                       remainder='passthrough')
X_test = np.array(ct.fit_transform(X_test))

from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(X_test)
X_test = imputer.transform(X_test)

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_test[:, 2:] = sc.fit_transform(X_test[:, 2:])

Appliquons notre modèle maintenant !

gbc_predict = gbc.predict(X_test)

Tous. Nous avons fait une prévision. Il doit maintenant être enregistré au format CSV et envoyé au site Web.

np.savetxt('my_gbc_predict.csv', gbc_predict, delimiter=",", header = 'Survived')

Prêt. Nous avons reçu un fichier contenant des prédictions pour chaque passager. Il ne reste plus qu'à télécharger ces solutions sur le site et à obtenir une évaluation des prévisions. Une solution aussi primitive donne non seulement 74 % de bonnes réponses au public, mais aussi une certaine impulsion dans la science des données. Les plus curieux peuvent à tout moment m'écrire en messages privés et me poser une question. Merci à tous!

Source: habr.com

Ajouter un commentaire