рдореБрдЦреНрдп рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЬрд╛рдПрдБ

Kaggle рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓: EDA рдФрд░ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ

рдЗрд╕ Kaggle рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдЖрдк рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ Titanic рдбреЗрдЯрд╛ рдкрд░ exploratory data analysis (EDA) рдХреА рдорджрдж рд╕реЗ supervised learning рдореЙрдбрд▓реНрд╕ рдХреЛ рдХреИрд╕реЗ рдЕрдкреНрд░реЛрдЪ рдХрд░реЗрдВ рдФрд░ рдмрдирд╛рдПрдБред
┬╖ 10 рдорд┐ре░ рдкрдврд╝реЗрдВ

AI рдХреЗ рд╕рд╛рде рдЦреЛрдЬреЗрдВ

рдЗрд╕ рдорд╣реАрдиреЗ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ Facebook Live Code Along рд╕рддреНрд░ рдХрд┐рдпрд╛ рдЬрд┐рд╕рдореЗрдВ рдореИрдВрдиреЗ (рдФрд░ рдЬрд┐рди-рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдиреЗ рд╕рд╛рде рдХреЛрдб рдХрд┐рдпрд╛) рдмрдврд╝рддреА рдЬрдЯрд┐рд▓рддрд╛ рд╡рд╛рд▓реЗ рдХрдИ рдПрд▓реНрдЧреЛрд░рд┐рджреНрдо рдмрдирд╛рдП рдЬреЛ рдпрд╣ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ Titanic рдкрд░ рдХреЛрдИ рднреА рдпрд╛рддреНрд░реА рдмрдЪрд╛ рдпрд╛ рдирд╣реАрдВ, рдмрд╢рд░реНрддреЗ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐рд░рд╛рдпрд╛, рдЪрдврд╝рдиреЗ рдХрд╛ рдмрдВрджрд░рдЧрд╛рд╣ рдФрд░ рдЖрдпреБ рдЬреИрд╕реА рдЬрд╛рдирдХрд╛рд░реА рджреА рдЧрдИ рд╣реЛред

рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рдЖрдк рдЙрди рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд░ рдлрд┐рд░ рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВрдЧреЗ рдЬреЛ рд╣рдордиреЗ рдЗрд╕ рд╕рддреНрд░ рдореЗрдВ рдХрд╡рд░ рдХреА рдереАрдВред рдЕрдЧрд░ рдЖрдк рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рд╡реАрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рджреЛрдмрд╛рд░рд╛ рджреЗрдЦрдирд╛ рдпрд╛ рдлреЙрд▓реЛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдБ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

рдЦрд╛рд╕ рддреМрд░ рдкрд░, рдЖрдкрдХреЛ рдпрд╛рдж рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдордиреЗ supervised learning рдореЙрдбрд▓ рдмрдирд╛рдП рдереЗред

Supervised learning, Machine Learning (ML) рдХреА рд╡рд╣ рд╢рд╛рдЦрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ 'Survived' рдпрд╛ 'Not' рдЬреИрд╕реЗ рд▓реЗрдмрд▓ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА рдЬрд╛рддреА рд╣реИред рдРрд╕реЗ рдореЙрдбрд▓ рд▓реЗрдмрд▓ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рд╕реЗ рд╕реАрдЦрддреЗ рд╣реИрдВ, рдпрд╛рдиреА рд╡рд╣ рдбреЗрдЯрд╛ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдпрд╛рддреНрд░реА рдмрдЪрд╛ рдерд╛ рдпрд╛ рдирд╣реАрдВ (рдЗрд╕реЗ "model training" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ), рдФрд░ рдлрд┐рд░ рдмрд┐рдирд╛ рд▓реЗрдмрд▓ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдкрд░ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рддреЗ рд╣реИрдВред

Kaggle рдкрд░, рдЬреЛ predictive modelling рдФрд░ analytics рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдПрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╣реИ, рдЗрдиреНрд╣реЗрдВ train рдФрд░ test рд╕реЗрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐

  • рдЖрдк рдРрд╕рд╛ рдореЙрдбрд▓ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ training рд╕реЗрдЯ рдореЗрдВ рдкреИрдЯрд░реНрди рд╕реАрдЦреЗ, рдФрд░
  • рдлрд┐рд░ рдЖрдк рдЙрд╕реА рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ test рд╕реЗрдЯ рдкрд░ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВред

рдЗрд╕рдХреЗ рдмрд╛рдж Kaggle рдЖрдкрдХреЛ рдЖрдкрдХреЗ рд╕рд╣реА рдЙрддреНрддрд░реЛрдВ рдХрд╛ рдкреНрд░рддрд┐рд╢рдд рдмрддрд╛рддрд╛ рд╣реИ: рдЗрд╕реЗ рдЖрдкрдХреЗ рдореЙрдбрд▓ рдХреА accuracy рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

Supervised Learning рдХреА рд╢реБрд░реБрдЖрдд рдХреИрд╕реЗ рдХрд░реЗрдВ

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реЛрдВрдЧреЗ, supervised learning рдХреЛ рдЕрдкреНрд░реЛрдЪ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ:

  • рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдкрд░ Exploratory Data Analysis (EDA) рдХрд░реЗрдВ;
  • рдПрдХ рддреНрд╡рд░рд┐рдд рдФрд░ рд╕рд╛рдзрд╛рд░рдг, рдпрд╛ baseline рдореЙрдбрд▓ рдмрдирд╛рдПрдВ, рдЬреЛ рдмрд╛рдж рдореЗрдВ рдмрдирдиреЗ рд╡рд╛рд▓реЗ рдореЙрдбрд▓реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рджреЗ рд╕рдХреЗ;
  • рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЛрд╣рд░рд╛рдПрдБред рдЖрдк рдФрд░ EDA рдХрд░реЗрдВрдЧреЗ рдФрд░ рдПрдХ рдЕрдиреНрдп рдореЙрдбрд▓ рдмрдирд╛рдПрдБрдЧреЗ;
  • рдлрд╝реАрдЪрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдХрд░реЗрдВ: рдореМрдЬреВрджрд╛ рдлрд╝реАрдЪрд░реНрд╕ рдХреЛ рдорд┐рд▓рд╛рдПрдБ рдпрд╛ рдЙрдирд╕реЗ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдХрд╛рд▓реЗрдВ рддрд╛рдХрд┐ рдЕрдВрддрддрдГ рдЖрдЦрд┐рд░реА рдмрд┐рдВрджреБ рддрдХ рдкрд╣реБрдБрдЪрд╛ рдЬрд╛ рд╕рдХреЗ, рдЬреЛ рд╣реИ
  • рдРрд╕рд╛ рдореЙрдбрд▓ рдкрд╛рдирд╛ рдЬреЛ рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗред

рдЗрд╕ code along рд╕рддреНрд░ рдореЗрдВ, рдЖрдкрдиреЗ рдпреЗ рд╕рднреА рдХрджрдо рдХрд┐рдП рд╣реИрдВ рдпрд╛ рдХрд░реЗрдВрдЧреЗ!

рдиреЛрдЯ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕реЗ рдХреЛрд░реНрд╕ рднреА рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ Titanic рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдореЗрдВ рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ, Python рдФрд░ R рдореЗрдВред

рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рдЗрдореНрдкреЛрд░реНрдЯ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦ рд▓реЗрдВ

рдкрд╣рд▓рд╛ рдХрджрдо рд╣рдореЗрд╢рд╛ рдпрд╣реА рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рдЗрдореНрдкреЛрд░реНрдЯ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЬрд┐рд╕ рдбреЗрдЯрд╛ рдкрд░ рдЖрдк рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВ, рдЙрд╕рдХреА рдПрдХ рддреНрд╡рд░рд┐рдд рдЭрд▓рдХ рдорд┐рд▓ рд╕рдХреЗред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк pandas рдкреИрдХреЗрдЬ рдЗрдореНрдкреЛрд░реНрдЯ рдХрд░реЗрдВрдЧреЗ рдФрд░ read_csv() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдкрдврд╝реЗрдВрдЧреЗ:

рдиреЛрдЯ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдЦрдВрдбреЛрдВ рдореЗрдВ, matplotlib, sklearn рдФрд░ seaborn рдЬреИрд╕реЗ рдЕрдиреНрдп рдкреИрдХреЗрдЬ рдФрд░ рдЙрдирдХреЗ рдореЙрдбреНрдпреВрд▓ рдкрд╣рд▓реЗ рд╕реЗ рдЗрдореНрдкреЛрд░реНрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЖрдк рдЖрдЧреЗ рдЪрд▓рдХрд░ (рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп) рдбреЗрдЯрд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдФрд░ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЗрдирдХрд╛ рдФрд░ рд╡реНрдпрд╛рдкрдХ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ!

рдЖрдк IPython рдХрд╛ рдореИрдЬрд┐рдХ рдХрдорд╛рдВрдб %matplotlib inline рднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрдкрдХреЗ рдкреНрд▓реЙрдЯреНрд╕ рдиреЛрдЯрдмреБрдХ рдореЗрдВ рд╣реА рджрд┐рдЦрд╛рдИ рджреЗрдВред рдЖрдк sns.set() рднреА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕реНрдЯрд╛рдЗрд▓ рдмреЗрд╕ Seaborn рд╕реНрдЯрд╛рдЗрд▓ рдореЗрдВ рдмрджрд▓ рдЬрд╛рдП:

# Import modules
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import tree
from sklearn.metrics import accuracy_score

# Figures inline and set visualization style
%matplotlib inline
sns.set()

рдЕрдм рдмрд┐рдирд╛ рджреЗрд░ рдХрд┐рдП, рдбреЗрдЯрд╛ рдЗрдореНрдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХреА рдкрдбрд╝рддрд╛рд▓ рдХрд╛ рдкрд╣рд▓рд╛ рдХрджрдо рдЙрдард╛рддреЗ рд╣реИрдВ:

# Import test and train datasets
df_train = pd.read_csv('../data/train.csv')
df_test = pd.read_csv('../data/test.csv')

# View first lines of training data
df_train.head(n=4)
┬аPassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S

рдпрджрд┐ рдЖрдк рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рд╕рднреА рдлрд╝реАрдЪрд░реНрд╕ рдХреНрдпрд╛ рд╣реИрдВ, рддреЛ Kaggle рдбреЗрдЯрд╛ рдбрд╛рдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдпрд╣рд╛рдБ рджреЗрдЦреЗрдВред

рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╢рдмреНрджрд╛рд╡рд▓реА рд╕реЗ рдЬреБрдбрд╝реА рдирд┐рдореНрди рдмрд╛рддреЗрдВ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ:

  • Target variable рд╡рд╣ рдЪрд░ рд╣реИ рдЬрд┐рд╕рдХреА рдЖрдк рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ;
  • рдЕрдиреНрдп рдЪрд░ "features" (рдпрд╛ "predictor variables", рдпрд╛рдиреА рд╡реЗ рдлрд╝реАрдЪрд░реНрд╕ рдЬрд┐рдирдХрд╛ рдкреНрд░рдпреЛрдЧ рдЖрдк target variable рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣реЗ рд╣реИрдВ) рдХрд╣рд▓рд╛рддреЗ рд╣реИрдВред

рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдЖрдк head() рдлрд╝рдВрдХреНрд╢рди рдХреА рдорджрдж рд╕реЗ рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рджреЗрдЦрдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреА рдкрд╣рд▓реА рдкрд╛рдБрдЪ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

# View first lines of test data
df_test.head()
┬аPassengerIdPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
08923Kelly, Mr. Jamesmale34.5003309117.8292NaNQ
18933Wilkes, Mrs. James (Ellen Needs)female47.0103632727.0000NaNS
28942Myles, Mr. Thomas Francismale62.0002402769.6875NaNQ
38953Wirz, Mr. Albertmale27.0003151548.6625NaNS
48963Hirvonen, Mrs. Alexander (Helga E Lindqvist)female22.011310129812.2875NaNS

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ df_test DataFrame рдореЗрдВ 'Survived' рдХреЙрд▓рдо рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣реА рд╡рд╣ рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕рдХреА рдЖрдк рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░реЗрдВрдЧреЗ!

  • рдЖрдк DataFrame рдХреА .info() рдореЗрдердб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ( df_train рдХрд╛) рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░, рдорд┐рд╕рд┐рдВрдЧ рд╡реИрд▓реНрдпреВ рдЖрджрд┐ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
df_train.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
PassengerId    891 non-null int64
Survived       891 non-null int64
Pclass         891 non-null int64
Name           891 non-null object
Sex            891 non-null object
Age            714 non-null float64
SibSp          891 non-null int64
Parch          891 non-null int64
Ticket         891 non-null object
Fare           891 non-null float64
Cabin          204 non-null object
Embarked       889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.6+ KB

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ DataFrame рдореЗрдВ 891 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реИрдВ, рд▓реЗрдХрд┐рди 'Age' рдХреЙрд▓рдо рдореЗрдВ рдХреЗрд╡рд▓ 714 non-null рдорд╛рди рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ 177 рдорд╛рди null рдпрд╛ missing рд╣реИрдВред

  • рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, DataFrame рдХреА .describe() рдореЗрдердб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ( df_train рдХреА) рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдХреЙрд▓рдореНрд╕ рдХреЗ рд╕рд╛рд░-рд╕рд╛рдВрдЦреНрдпрд┐рдХреА рджреЗрдЦреЗрдВред
df_train.describe()
┬аPassengerIdSurvivedPclassAgeSibSpParchFare
count891.000000891.000000891.000000714.000000891.000000891.000000891.000000
mean446.0000000.3838382.30864229.6991180.5230080.38159432.204208
std257.3538420.4865920.83607114.5264971.1027430.80605749.693429
min1.0000000.0000001.0000000.4200000.0000000.0000000.000000
25%223.5000000.0000002.00000020.1250000.0000000.0000007.910400
50%446.0000000.0000003.00000028.0000000.0000000.00000014.454200
75%668.5000001.0000003.00000038.0000001.0000000.00000031.000000
max891.0000001.0000003.00000080.0000008.0000006.000000512.329200

рджреГрд╢реНрдпрд╛рддреНрдордХ Exploratory Data Analysis (EDA) рдФрд░ рдЖрдкрдХрд╛ рдкрд╣рд▓рд╛ рдореЙрдбрд▓

рдЕрдм рдЬрдмрдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХрд╛ рдЕрдВрджрд╛рдЬрд╝рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рд╕рд╛рдВрдЦреНрдпрд┐рдХреА рджреЗрдЦ рд▓реА рд╣реИрдВ, рддреЛ рдЕрдм seaborn рдкреИрдХреЗрдЬ рдХреА рдорджрдж рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ:

  • рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, seaborn рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Titanic рдореЗрдВ survival рдХрд╛ рдмрд╛рд░ рдкреНрд▓реЙрдЯ рдмрдирд╛рдПрдВ, рдЬреЛ рдЖрдкрдХрд╛ target variable рд╣реИред
sns.countplot(x='Survived', data=df_train);

bar chart

рдирд┐рд╖реНрдХрд░реНрд╖: training рд╕реЗрдЯ рдореЗрдВ, рди рдмрдЪрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рдмрдЪрдиреЗ рд╡рд╛рд▓реЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред рдЪрд▓рд┐рдП рдлрд┐рд░ рдПрдХ рдкрд╣рд▓рд╛ рдореЙрдбрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдпрд╣ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░реЗ рдХрд┐ рдХреЛрдИ рднреА рдирд╣реАрдВ рдмрдЪрд╛ред

рдпрд╣ рдПрдХ рдЦрд░рд╛рдм рдореЙрдбрд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рдмрдЪреЗ рдереЗред рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрдВ рдПрдХ baseline рджреЗрддрд╛ рд╣реИ: рдЖрдЧреЗ рдЬреЛ рднреА рдореЙрдбрд▓ рд╣рдо рдмрдирд╛рдПрдБрдЧреЗ, рдЙрд╕реЗ рдЗрд╕рд╕реЗ рдмреЗрд╣рддрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЖрдк рдпрд╣ рдЗрди рдЪрд░рдгреЛрдВ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  • df_test рдХреЗ рд▓рд┐рдП рдПрдХ 'Survived' рдХреЙрд▓рдо рдмрдирд╛рдПрдБ рдЬреЛ рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП 'рдирд╣реАрдВ рдмрдЪреЗ' рдХреЛ рдПрдиреНрдХреЛрдб рдХрд░реЗ;
  • df_test рдХреЗ 'PassengerId' рдФрд░ 'Survived' рдХреЙрд▓рдореНрд╕ рдХреЛ .csv рдореЗрдВ рд╕реЗрд╡ рдХрд░реЗрдВ рдФрд░ Kaggle рдкрд░ рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВред
df_test['Survived'] = 0
df_test[['PassengerId', 'Survived']].to_csv('data/predictions/no_survivors.csv', index=False)

рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рдХреНрдпрд╛ accuracy рдорд┐рд▓реА? Kaggle рдкрд░ accuracy 62.7 рд╣реИред

kaggle

рдмреБрд░рд╛ рдирд╣реАрдВ!

рдорд╣рддреНрд╡рдкреВрд░реНрдг рдиреЛрдЯ! рдЖрдк accuracy рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ!

рдлрд╝реАрдЪрд░ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдкрд░ EDA

рдЕрдм рдЬрдм рдЖрдкрдиреЗ рдПрдХ рддреНрд╡рд░рд┐рдд-рд╕рд░рд▓ рдореЙрдбрд▓ рдмрдирд╛ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рджреЛрдмрд╛рд░рд╛ рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ: рдЖрдЗрдП рдХреБрдЫ рдФрд░ Exploratory Data Analysis рдХрд░реЗрдВ рдФрд░ рдЬрд▓реНрдж рд╣реА рдПрдХ рдФрд░ рдореЙрдбрд▓ рдмрдирд╛рдПрдВ!

  • seaborn рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Titanic рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЗ рдлрд╝реАрдЪрд░ 'Sex' ( df_train рдХрд╛) рдХрд╛ рдмрд╛рд░ рдкреНрд▓реЙрдЯ рдмрдирд╛рдПрдВред
sns.countplot(x='Sex', data=df_train);

bar plot

  • рд╕рд╛рде рд╣реА, seaborn рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝реАрдЪрд░ 'Survived' рдХреЗ рдмрд╛рд░ рдкреНрд▓реЙрдЯ рдмрдирд╛рдПрдВ рдЬреЛ рдлрд╝реАрдЪрд░ 'Sex' рдкрд░ рд╡рд┐рднрд╛рдЬрд┐рдд (faceted) рд╣реЛрдВред
sns.factorplot(x='Survived', col='Sex', kind='count', data=df_train);

bar plot

рдирд┐рд╖реНрдХрд░реНрд╖: рдорд╣рд┐рд▓рд╛рдУрдВ рдХреЗ рдмрдЪрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкреБрд░реБрд╖реЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдереАред

  • рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рд╕рд╛рде, рдЖрдк pandas рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрддрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рддрдиреА рдорд╣рд┐рд▓рд╛рдПрдБ рдФрд░ рдХрд┐рддрдиреЗ рдкреБрд░реБрд╖ рдмрдЪреЗ:
df_train.groupby(['Sex']).Survived.sum()
Sex
female    233
male      109
Name: Survived, dtype: int64
  • pandas рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рдирд┐рдХрд╛рд▓реЗрдВ рдХрд┐ рдорд╣рд┐рд▓рд╛рдУрдВ рдХрд╛ рдХрд┐рддрдирд╛ рдЕрдиреБрдкрд╛рдд рдмрдЪрд╛ рдФрд░ рдкреБрд░реБрд╖реЛрдВ рдХрд╛ рдХрд┐рддрдирд╛:
print(df_train[df_train.Sex == 'female'].Survived.sum()/df_train[df_train.Sex == 'female'].Survived.count())
print(df_train[df_train.Sex == 'male'].Survived.sum()/df_train[df_train.Sex == 'male'].Survived.count())
0.742038216561
0.188908145581

74% рдорд╣рд┐рд▓рд╛рдПрдБ рдмрдЪреАрдВ, рдЬрдмрдХрд┐ 19% рдкреБрд░реБрд╖ рдмрдЪреЗред

рдЕрдм рдЪрд▓рд┐рдП рджреВрд╕рд░рд╛ рдореЙрдбрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рдорд╣рд┐рд▓рд╛рдПрдБ рдмрдЪреАрдВ рдФрд░ рд╕рднреА рдкреБрд░реБрд╖ рдирд╣реАрдВ рдмрдЪреЗред рдпрд╣ рдлрд┐рд░ рд╕реЗ рдПрдХ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореЙрдбрд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдЧреЗ рдХреЗ рдореЙрдбрд▓реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ baseline рджреЗрдЧрд╛ред

  • df_test рдХреЗ рд▓рд┐рдП 'Survived' рдХреЙрд▓рдо рдмрдирд╛рдПрдБ рдЬреЛ рдКрдкрд░ рджреА рдЧрдИ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЛ рдПрдиреНрдХреЛрдб рдХрд░реЗред
  • df_test рдХреЗ 'PassengerId' рдФрд░ 'Survived' рдХреЙрд▓рдореНрд╕ рдХреЛ .csv рдореЗрдВ рд╕реЗрд╡ рдХрд░реЗрдВ рдФрд░ Kaggle рдкрд░ рд╕рдмрдорд┐рдЯ рдХрд░реЗрдВред
df_test['Survived'] = df_test.Sex == 'female'
df_test['Survived'] = df_test.Survived.apply(lambda x: int(x))
df_test.head()
┬аPassengerIdPclassNameSexAgeSibSpParchTicketFareCabinEmbarkedSurvived
08923Kelly, Mr. Jamesmale34.5003309117.8292NaNQ0
18933Wilkes, Mrs. James (Ellen Needs)female47.0103632727.0000NaNS1
28942Myles, Mr. Thomas Francismale62.0002402769.6875NaNQ0
38953Wirz, Mr. Albertmale27.0003151548.6625NaNS0
48963Hirvonen, Mrs. Alexander (Helga E Lindqvist)female22.011310129812.2875NaNS1
df_test[['PassengerId', 'Survived']].to_csv('../data/predictions/women_survive.csv', index=False)

рдЕрдм, рдЬрдм рдЖрдк рдЗрд╕реЗ Kaggle рдкрд░ рд╕рдмрдорд┐рдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдореЙрдбрд▓ рдиреЗ рдЖрдкрдХреЛ рдХреНрдпрд╛ accuracy рджреА?

Kaggle рдкрд░ accuracy 76.6% рд╣реИ:

kaggle

рдЗрд╕ submission рдХреЗ рд╕рд╛рде, рдЖрдк рд▓реАрдбрд░рдмреЛрд░реНрдб рдкрд░ рдХрд░реАрдм 2,000 рд╕реНрдерд╛рди рдКрдкрд░ рдЪрд▓реЗ рдЧрдП! рд╕рд╛рде рд╣реА, рдЖрдкрдиреЗ рдЕрдкрдирд╛ рд╕реНрдХреЛрд░ рдмреЗрд╣рддрд░ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдиреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ!

рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХрд╛ рдФрд░ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░реЗрдВ!

  • seaborn рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝реАрдЪрд░ 'Survived' рдХреЗ рдмрд╛рд░ рдкреНрд▓реЙрдЯ рдмрдирд╛рдПрдВ рдЬреЛ рдлрд╝реАрдЪрд░ 'Pclass' рдкрд░ рд╡рд┐рднрд╛рдЬрд┐рдд (faceted) рд╣реЛрдВред
sns.factorplot(x='Survived', col='Pclass', kind='count', data=df_train);

bar plot

рдирд┐рд╖реНрдХрд░реНрд╖: рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдореЗрдВ рдпрд╛рддреНрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдпрд╛рддреНрд░рд┐рдпреЛрдВ рдХреЗ рдмрдЪрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЕрдзрд┐рдХ рдереАред рджреВрд╕рд░реА рдУрд░, рддреГрддреАрдп рд╢реНрд░реЗрдгреА рдореЗрдВ рдпрд╛рддреНрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдпрд╛рддреНрд░рд┐рдпреЛрдВ рдХреЗ рди рдмрдЪрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЕрдзрд┐рдХ рдереАред

  • seaborn рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝реАрдЪрд░ 'Survived' рдХреЗ рдмрд╛рд░ рдкреНрд▓реЙрдЯ рдмрдирд╛рдПрдВ рдЬреЛ рдлрд╝реАрдЪрд░ 'Embarked' рдкрд░ рд╡рд┐рднрд╛рдЬрд┐рдд (faceted) рд╣реЛрдВред
sns.factorplot(x='Survived', col='Embarked', kind='count', data=df_train);

bar plot

рдирд┐рд╖реНрдХрд░реНрд╖: Southampton рд╕реЗ рдЪрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рдпрд╛рддреНрд░рд┐рдпреЛрдВ рдХреЗ рдмрдЪрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рдереАред

рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рд╕рд╛рде EDA

  • seaborn рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ df_train рдХреЗ 'Fare' рдХреЙрд▓рдо рдХрд╛ histogram рдкреНрд▓реЙрдЯ рдХрд░реЗрдВред
sns.distplot(df_train.Fare, kde=False);

histogram

рдирд┐рд╖реНрдХрд░реНрд╖: рдЕрдзрд┐рдХрд╛рдВрд╢ рдпрд╛рддреНрд░рд┐рдпреЛрдВ рдиреЗ Titanic рд╕реЗ рдпрд╛рддреНрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 100 рд╕реЗ рдХрдо рдХрд┐рд░рд╛рдпрд╛ рджрд┐рдпрд╛ рдерд╛ред

  • рдПрдХ pandas plotting рдореЗрдердб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, 'Survived' рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рди рдХреЗ рд▓рд┐рдП 'Fare' рдХреЙрд▓рдо рдХреЛ рдПрдХ рд╣реА рдкреНрд▓реЙрдЯ рдкрд░ рдкреНрд▓реЙрдЯ рдХрд░реЗрдВред
df_train.groupby('Survived').Fare.hist(alpha=0.6);

bar plot

рдирд┐рд╖реНрдХрд░реНрд╖: рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрдзрд┐рдХ рдХрд┐рд░рд╛рдпрд╛ рджрд┐рдпрд╛ рдЙрдирдХреА рдмрдЪрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЕрдзрд┐рдХ рдереАред

  • seaborn рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ df_train рдХреЗ 'Age' рдХреЙрд▓рдо рдХрд╛ histogram рдкреНрд▓реЙрдЯ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ null рдорд╛рди рд╣рдЯрд╛рдиреЗ рд╣реЛрдВрдЧреЗред
df_train_drop = df_train.dropna()
sns.distplot(df_train_drop.Age, kde=False);

histogram

  • 'Fare' рдХрд╛ strip plot рдФрд░ swarm plot рдмрдирд╛рдПрдВ, рдЬрд┐рд╕рдореЗрдВ x-рдЕрдХреНрд╖ рдкрд░ 'Survived' рд╣реЛред
sns.stripplot(x='Survived', y='Fare', data=df_train, alpha=0.3, jitter=True);

strip plot

sns.swarmplot(x='Survived', y='Fare', data=df_train);

swarm plot

рдирд┐рд╖реНрдХрд░реНрд╖: Fare рдХрд╛ Titanic рдкрд░ survival рдХреЗ рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рд╕рд╣-рд╕рдВрдмрдВрдз рджрд┐рдЦрддрд╛ рд╣реИред

  • DataFrame рдореЗрдердб .describe() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ 'Survived' рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ 'Fare' рдХреА рд╕рд╛рд░-рд╕рд╛рдВрдЦреНрдпрд┐рдХреА рджреЗрдЦреЗрдВред
df_train.groupby('Survived').Fare.describe()
┬аcountmeanstdmin25%50%75%max
Survived┬а┬а┬а┬а┬а┬а┬а┬а
0549.022.11788731.3882070.07.854210.526.0263.0000
1342.048.39540866.5969980.012.475026.057.0512.3292
  • seaborn рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ 'Age' рдмрдирд╛рдо 'Fare' рдХрд╛ scatter plot рдмрдирд╛рдПрдВ, рдЬрд┐рд╕реЗ 'Survived' рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд░рдВрдЧ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред
sns.lmplot(x='Age', y='Fare', hue='Survived', data=df_train, fit_reg=False, scatter_kws={'alpha':0.5});

scatter plot

рдирд┐рд╖реНрдХрд░реНрд╖: рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЛ рдмрдЪреЗ рд╡реЗ рдпрд╛ рддреЛ рдЕрдкрдиреЗ рдЯрд┐рдХрдЯ рдХреЗ рд▓рд┐рдП рдХрд╛рдлрд╝реА рднреБрдЧрддрд╛рди рдХрд░ рд░рд╣реЗ рдереЗ рдпрд╛ рд╡реЗ рдХрдо рдЙрдореНрд░ рдХреЗ рдереЗред

  • seaborn рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ df_train рдХрд╛ pairplot рдмрдирд╛рдПрдВ, рдЬрд┐рд╕реЗ 'Survived' рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд░рдВрдЧ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред pairplot рдПрдХ рдмрдврд╝рд┐рдпрд╛ рддрд░реАрдХрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЖрдк рдПрдХ рд╣реА рдЧреНрд░рд┐рдб рдореЗрдВ рд╡рд╣ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдиреЗ рдЕрдм рддрдХ рдЦреЛрдЬреА рд╣реИред
sns.pairplot(df_train_drop, hue='Survived');

plots

EDA рд╕реЗ Machine Learning рдореЙрдбрд▓ рддрдХ

рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдЖрдкрдиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ:

  • рд╣рдорд╛рд░рд╛ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд┐рдпрд╛ рдФрд░ рдЙрд╕реЗ рджреЗрдЦрд╛ред
  • рдЕрдкрдиреЗ target variable рдХрд╛ рджреГрд╢реНрдпрд╛рддреНрдордХ рдЕрдиреНрд╡реЗрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдЕрдкрдиреА рдкрд╣рд▓реА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпрд╛рдБ рдХреАрдВред
  • рдЕрдкрдиреЗ рдХреБрдЫ feature variables рдХрд╛ рджреГрд╢реНрдпрд╛рддреНрдордХ рдЕрдиреНрд╡реЗрд╖рдг рдХрд┐рдпрд╛ рдФрд░ EDA рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмреЗрд╣рддрд░ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпрд╛рдБ рдХреАрдВред
  • рдлрд╝реАрдЪрд░ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕, рд╢реНрд░реЗрдгреАрдмрджреНрдз рдФрд░ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ, рдХреА рдЧрд╣рди EDA рдХреАред

рдЕрдЧрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ, рдЖрдк рдпрд╣рд╛рдБ рдХреА рдЕрдкрдиреА EDA рд╕реЗ рдорд┐рд▓реА рд╕реАрдЦ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреБрдЫ Machine Learning рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓реЗрдВрдЧреЗред рд╣рдо рдпрд╣ рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдЕрдЧрд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ рдХрд░реЗрдВрдЧреЗ (рдЬреЛ 27 рджрд┐рд╕рдВрдмрд░ рдХреЛ рд▓реЙрдиреНрдЪ рд╣реЛрдЧреА)ред

рд╡рд┐рд╖рдп