Votre première étape dans la science des données. Titanesque

Une petite introduction


Je crois que nous pourrions faire plus de choses si on nous fournissait des instructions étape par étape qui diraient quoi et comment faire. Je me rappelle dans ma vie ces moments où une entreprise ne pouvait pas démarrer car il était tout simplement difficile de comprendre par où commencer. Peut-être, une fois sur Internet, vous avez vu les mots «Data Science» et décidé que vous êtes loin de cela, et des gens qui font ça quelque part là-bas, dans un autre monde. Alors non, ils sont ici. Et, peut-être, grâce à des gens de cette sphère, un article est apparu dans votre flux. Il existe de nombreux cours qui vous aideront à vous familiariser avec ce métier, ici je vous aiderai à faire le premier pas.

Tu es prêt? Je dois dire tout de suite que vous devrez connaître Python 3, car je vais l'utiliser ici. Et je vous conseille également de pré-installer sur le portable Jupyter ou de voir comment utiliser google colab.

La première étape


image

Kaggle est votre assistant important dans cette affaire. En principe, vous pouvez vous en passer, mais je vais en parler dans un autre article. Il s'agit de la plateforme qui héberge le concours Data Science. Dans chacune de ces compétitions au début, vous recevrez une quantité irréaliste d'expérience dans la résolution de divers problèmes, une expérience de développement et une expérience de travail d'équipe, ce qui est important à notre époque.

Nous prendrons notre tâche à partir de là. Il est appelé ainsi: "Titanic". La condition est la suivante: prédire que chaque personne survivra. De manière générale, la tâche de la personne impliquée dans DS est la collecte des données, leur traitement, la formation des modèles, les prévisions, etc. Chez 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 vous pouvez commencer!

Vous pouvez le faire comme suit:

dans l'onglet Données sont les fichiers qui contiennent les données Données

image

image

téléchargées, préparé nos cahiers Jupyter et ...

Deuxième étape


Comment téléchargeons-nous ces données maintenant?

Tout d'abord, nous importons les bibliothèques nécessaires:

import pandas as pd
import numpy as np

Les pandas nous permettront de télécharger des fichiers .csv pour un traitement ultérieur.

Numpy est nécessaire pour présenter notre tableau de données sous forme de matrice avec des nombres.
Passez. Prenez le fichier train.csv et téléchargez-le nous:

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

Nous ferons référence à nos exemples de données train.csv via la variable d'ensemble de données. Jetons un coup d'œil à ce qui s'y trouve:

dataset.head()

image

La fonction head () nous permet de visualiser les premières lignes de la trame de données.

Les colonnes survivantes ne sont que nos résultats, qui sont connus dans ce cadre de données. Sur la question du problème, nous devons prévoir la colonne Survived pour les données test.csv. Ces données stockent des informations sur d'autres passagers du Titanic, pour lesquels nous, les décideurs, ne sommes pas au courant des résultats.

Nous allons donc diviser notre table en données dépendantes et indépendantes. Ici, tout est simple. Les données dépendantes sont des données indépendantes de ce qui se trouve dans les résultats. Les données indépendantes sont des données qui influencent le résultat.

Par exemple, nous avons un tel ensemble de données:

«Vova a enseigné l'informatique - no.
Vova reçu sur l'informatique 2. "

L'évaluation en informatique dépend de la réponse à la question: Vova a-t-il enseigné l'informatique? Est-ce clair? Passons à autre chose, nous sommes plus près de l'objectif!

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

Nous faisons ce qui suit:

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

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

[a: b, c: d] est une construction de ce que nous utilisons entre parenthèses. Si vous ne spécifiez aucune variable, elles resteront par défaut. Autrement dit, nous pouvons spécifier [:,: d], puis nous obtiendrons dans le bloc de données toutes les colonnes, sauf celles qui vont, à partir du nombre d et plus. Les variables a et b définissent des chaînes, mais nous en avons tous besoin, nous laissons donc cette valeur par défaut.

Voyons ce qui se passe:

X.head()

image

y.head()

image

Afin de simplifier cette petite leçon, nous allons supprimer les colonnes qui nécessitent des «soins» spéciaux, ou qui n'affectent pas du tout la survie. Ils contiennent des données de type str.

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

Super! Nous 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 ne coderons pas tout, mais uniquement les données de type str que nous avons laissées. Colonne "Sexe". Comment voulons-nous encoder? Imaginez les données sur le genre humain par le vecteur: 10 - mâle, 01 - femelle.

Pour commencer, nous allons traduire nos tableaux dans la matrice NumPy:

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

Et maintenant, nous 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 cool qui nous permet de faire tout le travail 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 de coder le sexe de la personne dans cette représentation, comme nous l'avons décrit. 2 classes seront créées: homme, femme. Si la personne est un homme, alors 1 sera écrit dans la colonne «homme» et 0, respectivement.

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

Super. Nous allons encore plus loin!

En règle générale, cela 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 pas de données sur son âge. Dans ce cas, nous utiliserons cette méthode: nous trouvons la moyenne arithmétique de toutes les colonnes et, s'il manque des données dans la colonne, remplissons 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 que de telles situations se produisent lorsque les données sont très dispersées. Certaines données sont dans l'intervalle [0: 1], et certaines peuvent aller pour des centaines et des milliers. Pour exclure une telle propagation et l'ordinateur était plus précis dans les calculs, nous allons mettre à l'échelle les données, les mettre à l'échelle. Que tous les nombres ne dépassent pas trois. Pour ce faire, utilisez la fonction StandartScaler.

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

Maintenant, nos données ressemblent à ceci:

image

Classe. Nous sommes proches de notre objectif!

Quatrième étape


Former notre premier modèle! De la bibliothèque sklearn, nous pouvons trouver une énorme quantité de choses intéressantes. J'ai appliqué le modèle Gradient Boosting Classifier à cette tâche. Nous utilisons un classificateur, car notre tâche est une tâche de classification. Il est nécessaire d'attribuer la prévision à 1 (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.

image

Comment l'appliquer? Nous allons voir maintenant!

Cinquième étape Conclusion


Maintenant, nous devons charger le 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 nous avons faites 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:])

Nous appliquerons déjà notre modèle!

gbc_predict = gbc.predict(X_test)

Tout. Nous avons fait une prévision. Il doit maintenant être enregistré en csv et envoyé sur le site.

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

Terminé. Vous avez un fichier contenant des prévisions pour chaque passager. Reste à télécharger ces décisions sur le site et à obtenir une estimation des prévisions. Une telle solution primitive donne non seulement 74% des réponses correctes au public, mais aussi un élan à la Data Science. Les plus curieux peuvent à tout moment m'écrire dans des messages privés et poser une question. Merci à tous!

All Articles