Π§Π°ΡΡΠΎ Π»ΡΠ΄ΠΈ, ΡΠΎ Π·Π°Ρ
ΠΎΠ΄ΡΡΡ Π² ΠΎΠ±Π»Π°ΡΡΡ Data Science, ΠΌΠ°ΡΡΡ Π½Π΅ Π·ΠΎΠ²ΡΡΠΌ ΡΠ΅Π°Π»ΡΡΡΠΈΡΠ½Ρ ΡΡΠ²Π»Π΅Π½Π½Ρ ΠΏΡΠΎ ΡΠ΅, ΡΠΎ Π½Π° Π½ΠΈΡ
ΡΠ΅ΠΊΠ°Ρ. ΠΠ°Π³Π°ΡΠΎ Ρ
ΡΠΎ Π΄ΡΠΌΠ°Ρ, ΡΠΎ Π·Π°ΡΠ°Π· Π²ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡΡ ΠΊΡΡΡΠΎ ΠΏΠΈΡΠ°ΡΠΈ Π½Π΅ΠΉΡΠΎΠΌΠ΅ΡΠ΅ΠΆΡ, ΡΡΠ²ΠΎΡΡΠ²Π°ΡΠΈ Π³ΠΎΠ»ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠΌΡΡΠ½ΠΈΠΊΠ° ΡΠ· ΠΠ°Π»ΡΠ·Π½ΠΎΡ ΠΡΠ΄ΠΈΠ½ΠΈ Π°Π±ΠΎ ΠΎΠ±ΡΠ³ΡΠ°Π²Π°ΡΠΈ Π²ΡΡΡ
Π½Π° ΡΡΠ½Π°Π½ΡΠΎΠ²ΠΈΡ
ΡΠΈΠ½ΠΊΠ°Ρ
.
ΠΠ»Π΅ ΡΠΎΠ±ΠΎΡΠ° Π΄Π°Π½Ρ Scientist ΠΏΠΎΠ²'ΡΠ·Π°Π½Π° Π· Π΄Π°Π½ΠΈΠΌΠΈ, Ρ Π· Π½Π°ΠΉΠ²Π°ΠΆΠ»ΠΈΠ²ΡΡΠΈΡ
Ρ ΡΠ°Ρ Π²ΠΈΡΡΠ°ΡΠ½ΠΈΡ
ΠΌΠΎΠΌΠ΅Π½ΡΡΠ² β ΡΠ΅ ΠΎΠ±ΡΠΎΠ±ΠΊΠ° Π΄Π°Π½ΠΈΡ
ΠΏΠ΅ΡΠ΅Π΄ ΡΠΈΠΌ, ΡΠΊ ΡΡ
ΠΏΠΎΠ΄Π°Π²Π°ΡΠΈ Π² Π½Π΅ΠΉΡΠΎΠΌΠ΅ΡΠ΅ΠΆΡ ΡΠΈ Π°Π½Π°Π»ΡΠ·ΡΠ²Π°ΡΠΈ ΠΏΠ΅Π²Π½ΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.
Π£ ΡΡΠΉ ΡΡΠ°ΡΡΡ Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΠΏΠΈΡΠ΅ ΡΠ΅, ΡΠΊ ΠΌΠΎΠΆΠ½Π° Π»Π΅Π³ΠΊΠΎ ΡΠ° ΡΠ²ΠΈΠ΄ΠΊΠΎ ΠΎΠ±ΡΠΎΠ±ΠΈΡΠΈ Π΄Π°Π½Ρ Π· ΠΏΠΎΠΊΡΠΎΠΊΠΎΠ²ΠΎΡ ΡΠ½ΡΡΡΡΠΊΡΡΡΡ ΡΠ° ΠΊΠΎΠ΄ΠΎΠΌ. ΠΠΈ Π½Π°ΠΌΠ°Π³Π°Π»ΠΈΡΡ Π·ΡΠΎΠ±ΠΈΡΠΈ ΡΠ°ΠΊ, ΡΠΎΠ± ΠΊΠΎΠ΄ Π±ΡΠ² Π΄ΠΎΡΠΈΡΡ Π³Π½ΡΡΠΊΠΈΠΌ Ρ ΠΉΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½Π° Π±ΡΠ»ΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ Π΄Π»Ρ ΡΡΠ·Π½ΠΈΡ Π΄Π°ΡΠ°ΡΠ΅ΡΡΠ².
ΠΠ°Π³Π°ΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ² ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ Ρ Π½Π΅ Π·Π½Π°ΠΉΠ΄ΡΡΡ Π½ΡΡΠΎΠ³ΠΎ Π΅ΠΊΡΡΡΠ°ΠΎΡΠ΄ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ Π² ΡΡΠΉ ΡΡΠ°ΡΡΡ, Π°Π»Π΅ ΠΏΠΎΡΠ°ΡΠΊΡΠ²ΡΡ Π·ΠΌΠΎΠΆΡΡΡ ΠΏΡΠ΄ΠΊΡΠ΅ΡΠ»ΠΈΡΠΈ ΡΠΎΡΡ Π½ΠΎΠ²Π΅, Π° ΡΠ°ΠΊΠΎΠΆ ΠΊΠΎΠΆΠ΅Π½, Ρ
ΡΠΎ Π΄Π°Π²Π½ΠΎ ΠΌΡΡΡΠ² Π·ΡΠΎΠ±ΠΈΡΠΈ ΡΠΎΠ±Ρ ΠΎΠΊΡΠ΅ΠΌΠΈΠΉ notebook Π΄Π»Ρ ΡΠ²ΠΈΠ΄ΠΊΠΎΡ ΡΠ° ΡΡΡΡΠΊΡΡΡΠΎΠ²Π°Π½ΠΎΡ ΠΎΠ±ΡΠΎΠ±ΠΊΠΈ Π΄Π°Π½ΠΈΡ
, ΠΌΠΎΠΆΠ΅ ΡΠΊΠΎΠΏΡΡΠ²Π°ΡΠΈ ΠΊΠΎΠ΄ Ρ Π²ΡΠ΄ΡΠΎΡΠΌΠ°ΡΡΠ²Π°ΡΠΈ ΠΉΠΎΠ³ΠΎ ΠΏΡΠ΄ ΡΠ΅Π±Π΅, Π°Π±ΠΎ
ΠΡΡΠΈΠΌΠ°Π»ΠΈ dataset. Π©ΠΎ ΡΠΎΠ±ΠΈΡΠΈ Π΄Π°Π»Ρ?
ΠΡΠΆΠ΅, ΡΡΠ°Π½Π΄Π°ΡΡ: ΡΡΠ΅Π±Π° Π·ΡΠΎΠ·ΡΠΌΡΡΠΈ, ΡΠ· ΡΠΈΠΌ ΠΌΠ°ΡΠΌΠΎ ΡΠΏΡΠ°Π²Ρ, Π·Π°Π³Π°Π»ΡΠ½Ρ ΠΊΠ°ΡΡΠΈΠ½Ρ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΠΌΠΎ ΠΏΠ°Π½Π΄Π°, ΡΠΎΠ± ΠΏΡΠΎΡΡΠΎ Π²ΠΈΠ·Π½Π°ΡΠΈΡΠΈ ΡΡΠ·Π½Ρ ΡΠΈΠΏΠΈ Π΄Π°Π½ΠΈΡ .
import pandas as pd #ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ pandas
import numpy as np #ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ numpy
df = pd.read_csv("AB_NYC_2019.csv") #ΡΠΈΡΠ°Π΅ΠΌ Π΄Π°ΡΠ°ΡΠ΅Ρ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ df
df.head(3) #ΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΏΠ΅ΡΠ²ΡΠ΅ 3 ΡΡΡΠΎΡΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ Π²ΡΠ³Π»ΡΠ΄ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ 
df.info() #ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°Ρ

ΠΠΈΠ²ΠΈΠΌΠΎΡΡ Π½Π° Π·Π½Π°ΡΠ΅Π½Π½Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ:
- Π§ΠΈ Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Π°Ρ ΠΊΡΠ»ΡΠΊΡΡΡΡ ΡΡΠ΄ΠΊΡΠ² ΠΊΠΎΠΆΠ½ΠΎΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π·Π°Π³Π°Π»ΡΠ½ΡΠΉ ΠΊΡΠ»ΡΠΊΠΎΡΡΡ ΡΡΠ΄ΠΊΡΠ²?
- Π―ΠΊΠ° ΡΡΡΡ Π΄Π°Π½ΠΈΡ Ρ ΠΊΠΎΠΆΠ½ΡΠΉ ΠΊΠΎΠ»ΠΎΠ½ΡΡ?
- Π―ΠΊΡ ΡΡΠΎΠ²ΠΏΡΠΈΠΊ ΠΌΠΈ Ρ ΠΎΡΠ΅ΠΌΠΎ Π·ΡΠΎΠ±ΠΈΡΠΈ target, ΡΠΎΠ± ΡΠΎΠ±ΠΈΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π±Π°ΡΠ΅Π½Π½Ρ Π΄Π»Ρ Π½Π΅Ρ?
ΠΡΠ΄ΠΏΠΎΠ²ΡΠ΄Ρ Π½Π° ΡΡ ΠΏΠΈΡΠ°Π½Π½Ρ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΡΠΎΠ°Π½Π°Π»ΡΠ·ΡΠ²Π°ΡΠΈ Π΄Π°ΡΠ°ΡΠ΅Ρ Ρ ΠΏΡΠΈΠ±Π»ΠΈΠ·Π½ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π°ΡΠΈ ΠΏΠ»Π°Π½ Π½Π°ΠΉΠ±Π»ΠΈΠΆΡΠΈΡ Π΄ΡΠΉ.
Π’Π°ΠΊΠΎΠΆ Π΄Π»Ρ Π±ΡΠ»ΡΡ Π³Π»ΠΈΠ±ΠΎΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ³Π»ΡΠ΄Ρ Π½Π° Π·Π½Π°ΡΠ΅Π½Π½Ρ Π² ΠΊΠΎΠΆΠ½ΡΠΉ ΠΊΠΎΠ»ΠΎΠ½ΡΡ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΡΠΊΠΎΡΠΈΡΡΠ°ΡΠΈΡΡ ΡΡΠ½ΠΊΡΡΡΡ pandas describe(). Π©ΠΎΠΏΡΠ°Π²Π΄Π°, Π½Π΅Π΄ΠΎΠ»ΡΠΊ ΡΡΡΡ ΡΡΠ½ΠΊΡΡΡ Ρ ΡΡΠΎΠΌΡ, ΡΠΎ Π²ΠΎΠ½Π° Π΄Π°Ρ ΡΠ½ΡΠΎΡΠΌΠ°ΡΡΡ ΠΏΡΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ Π·Ρ Π·Π½Π°ΡΠ΅Π½Π½ΡΠΌΠΈ string. Π Π½ΠΈΠΌΠΈ ΠΌΠΈ ΡΠΎΠ·Π±Π΅ΡΠ΅ΠΌΠΎΡΡ ΠΏΡΠ·Π½ΡΡΠ΅.
df.describe() 
Π§Π°ΡΡΠ²Π½Π° Π²ΡΠ·ΡΠ°Π»ΡΠ·Π°ΡΡΡ
ΠΠΎΡΠΎΡΠΎΠΌΠΈΠΌΠΎ Π½Π° ΡΠ΅, Π΄Π΅ Π² Π½Π°Ρ Π²ΡΠ΄ΡΡΡΠ½Ρ Π·Π½Π°ΡΠ΅Π½Π½Ρ Π²Π·Π°Π³Π°Π»Ρ:
import seaborn as sns
sns.heatmap(df.isnull(),yticklabels=False,cbar=False,cmap='viridis') 
Π¦Π΅ Π±ΡΠ² Π½Π΅Π²Π΅Π»ΠΈΠΊΠΈΠΉ ΠΏΠΎΠ³Π»ΡΠ΄ Π·Π²Π΅ΡΡ
Ρ, Π·Π°ΡΠ°Π· ΠΌΠΈ ΠΏΡΠΈΡΡΡΠΏΠΈΠΌΠΎ Π΄ΠΎ ΡΡΠΊΠ°Π²ΡΡΠΈΡ
ΡΠ΅ΡΠ΅ΠΉ
Π‘ΠΏΡΠΎΠ±ΡΡΠΌΠΎ Π·Π½Π°ΠΉΡΠΈ Ρ ΠΏΠΎ ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎΡΡΡ Π²ΠΈΠ΄Π°Π»ΠΈΡΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, Π² ΡΠΊΠΈΡ Ρ Π»ΠΈΡΠ΅ ΠΎΠ΄Π½Π΅ Π·Π½Π°ΡΠ΅Π½Π½Ρ Ρ Π²ΡΡΡ ΡΡΠ΄ΠΊΠ°Ρ (Π²ΠΎΠ½ΠΈ Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π΅ Π²ΠΏΠ»ΠΈΠ²Π°ΡΠΈΠΌΡΡΡ):
df = df[[c for c
in list(df)
if len(df[c].unique()) > 1]] #ΠΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π΄Π°ΡΠ°ΡΠ΅Ρ, ΠΎΡΡΠ°Π²Π»ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ
Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠ’Π΅ΠΏΠ΅Ρ ΠΎΠ±Π΅ΡΡΠ³Π°ΡΠΌΠΎ ΡΠ΅Π±Π΅ Ρ ΡΡΠΏΡΡ Π½Π°ΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΡ Π²ΡΠ΄ ΡΡΠ΄ΠΊΡΠ²-Π΄ΡΠ±Π»ΡΠΊΠ°ΡΡΠ² (ΡΡΠ΄ΠΊΡΠ², ΡΠΊΡ ΠΌΡΡΡΡΡΡ ΠΎΠ΄Π½Ρ ΠΉ ΡΡ ΡΠ°ΠΌΡ ΡΠ½ΡΠΎΡΠΌΠ°ΡΡΡ Π² ΡΠΎΠΌΡ ΡΠ°ΠΌΠΎΠΌΡ ΠΏΠΎΡΡΠ΄ΠΊΡ, ΡΠΎ Ρ Π²ΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ Π· ΡΡΠ½ΡΡΡΠΈΡ ΡΡΠ΄ΠΊΡΠ²):
df.drop_duplicates(inplace=True) #ΠΠ΅Π»Π°Π΅ΠΌ ΡΡΠΎ, Π΅ΡΠ»ΠΈ ΡΡΠΈΡΠ°Π΅ΠΌ Π½ΡΠΆΠ½ΡΠΌ.
#Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
ΡΠ΄Π°Π»ΡΡΡ ΡΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π° Π½Π΅ ΡΡΠΎΠΈΡ.ΠΠΎΠ΄ΡΠ»ΡΡΠΌΠΎ Π΄Π°ΡΠ°ΡΠ΅Ρ Π½Π° Π΄Π²Π°: ΠΎΠ΄ΠΈΠ½ ΡΠ· ΡΠΊΡΡΠ½ΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½Π½ΡΠΌΠΈ, Π° ΡΠ½ΡΠΈΠΉ β Π· ΠΊΡΠ»ΡΠΊΡΡΠ½ΠΈΠΌΠΈ
Π’ΡΡ ΠΏΠΎΡΡΡΠ±Π½ΠΎ Π·ΡΠΎΠ±ΠΈΡΠΈ Π½Π΅Π²Π΅Π»ΠΈΠΊΠ΅ ΡΡΠΎΡΠ½Π΅Π½Π½Ρ: ΡΠΊΡΠΎ ΡΡΠ΄ΠΊΠΈ Π· ΠΏΡΠΎΠΏΡΡΠ΅Π½ΠΈΠΌΠΈ Π΄Π°Π½ΠΈΠΌΠΈ Ρ ΡΠΊΡΡΠ½ΠΈΡ Ρ ΠΊΡΠ»ΡΠΊΡΡΠ½ΠΈΡ Π΄Π°Π½ΠΈΡ ΡΠΈΠ»ΡΠ½ΠΎ Π½Π΅ ΡΠΏΡΠ²Π²ΡΠ΄Π½ΠΎΡΡΡΡΡΡ ΠΌΡΠΆ ΡΠΎΠ±ΠΎΡ, ΡΠΎ ΠΏΠΎΡΡΡΠ±Π½ΠΎ Π±ΡΠ΄Π΅ ΡΡ Π²Π°Π»ΠΈΡΠΈ ΡΡΡΠ΅Π½Π½Ρ, ΡΠΈΠΌ ΠΌΠΈ ΠΆΠ΅ΡΡΠ²ΡΡΠΌΠΎ β ΡΡΡΠΌΠ° ΡΡΠ΄ΠΊΠ°ΠΌΠΈ Π· ΠΏΡΠΎΠΏΡΡΠ΅Π½ΠΈΠΌΠΈ Π΄Π°Π½ΠΈΠΌΠΈ, Π»ΠΈΡΠ΅ ΡΡ Π½ΡΠΎΡ ΡΠ°ΡΡΠΈΠ½ΠΎΡ ΡΠΈ ΠΏΠ΅Π²Π½ΠΈΠΌΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ. Π―ΠΊΡΠΎ ΠΆ ΡΡΠ΄ΠΊΠΈ ΡΠΏΡΠ²Π²ΡΠ΄Π½ΠΎΡΡΡΡΡΡ, ΠΌΠΈ ΠΌΠ°ΡΠΌΠΎ ΠΏΠΎΠ²Π½Π΅ ΠΏΡΠ°Π²ΠΎ ΡΠΎΠ·Π΄ΡΠ»ΠΈΡΠΈ Π΄Π°ΡΠ°ΡΠ΅Ρ Π½Π° Π΄Π²Π°. Π ΡΠ½ΡΠΎΠΌΡ Π²ΠΈΠΏΠ°Π΄ΠΊΡ ΠΏΠΎΡΡΡΠ±Π½ΠΎ Π±ΡΠ΄Π΅ ΡΠΏΠΎΡΠ°ΡΠΊΡ ΡΠΎΠ·ΡΠ±ΡΠ°ΡΠΈΡΡ Π· ΡΡΠ΄ΠΊΠ°ΠΌΠΈ, Π² ΡΠΊΠΈΡ Π½Π΅ ΡΠΏΡΠ²Π²ΡΠ΄Π½ΠΎΡΡΡΡΡΡ ΠΏΡΠΎΠΏΡΡΠ΅Π½Ρ Π΄Π°Π½Ρ Π² ΡΠΊΡΡΠ½ΠΈΡ ΡΠ° ΠΊΡΠ»ΡΠΊΡΡΠ½ΠΈΡ , Ρ Π»ΠΈΡΠ΅ ΠΏΠΎΡΡΠΌ ΡΠΎΠ·Π΄ΡΠ»ΡΡΠΈ Π΄Π°ΡΠ°ΡΠ΅Ρ Π½Π° Π΄Π²Π°.
df_numerical = df.select_dtypes(include = [np.number])
df_categorical = df.select_dtypes(exclude = [np.number])ΠΠΈ ΡΠΎΠ±ΠΈΠΌΠΎ ΡΠ΅, ΡΠΎΠ± Π½Π°ΠΌ Π±ΡΠ»ΠΎ Π»Π΅Π³ΡΠ΅ ΠΎΠ±ΡΠΎΠ±Π»ΡΡΠΈ ΡΡ Π΄Π²Π° ΡΡΠ·Π½Ρ ΡΠΈΠΏΠΈ Π΄Π°Π½ΠΈΡ β Π·Π³ΠΎΠ΄ΠΎΠΌ ΠΌΠΈ Π·ΡΠΎΠ·ΡΠΌΡΡΠΌΠΎ, Π½Π°ΡΠΊΡΠ»ΡΠΊΠΈ ΡΠ΅ ΡΠΏΡΠΎΡΡΡ ΠΆΠΈΡΡΡ.
ΠΡΠ°ΡΡΡΠΌΠΎ Π· ΠΊΡΠ»ΡΠΊΡΡΠ½ΠΈΠΌΠΈ Π΄Π°Π½ΠΈΠΌΠΈ
ΠΠ΅ΡΡΠ΅, ΡΠΎ Π½Π°ΠΌ Π²Π°ΡΡΠΎ Π·ΡΠΎΠ±ΠΈΡΠΈ β Π²ΠΈΠ·Π½Π°ΡΠΈΡΠΈ, ΡΠΈ Π½Π΅ΠΌΠ°Ρ Β«ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ β ΡΠΏΠΈΠ³ΡΠ½ΡΠ²Β» Ρ ΠΊΡΠ»ΡΠΊΡΡΠ½ΠΈΡ Π΄Π°Π½ΠΈΡ . ΠΠΈ Π½Π°Π·ΠΈΠ²Π°ΡΠΌΠΎ ΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΡΠ°ΠΊ, ΡΠΎΠΌΡ ΡΠΎ Π²ΠΎΠ½ΠΈ Π²ΠΈΠ΄Π°ΡΡΡ ΡΠ΅Π±Π΅ Π·Π° ΠΊΡΠ»ΡΠΊΡΡΠ½Ρ Π΄Π°Π½Ρ, Π° ΡΠ°ΠΌΡ ΠΏΡΠ°ΡΡΡΡΡ ΡΠΊ ΡΠΊΡΡΠ½Ρ.
Π―ΠΊ Π½Π°ΠΌ ΡΡ Π²ΠΈΠ·Π½Π°ΡΠΈΡΠΈ? ΠΠ²ΠΈΡΠ°ΠΉΠ½ΠΎ, Π²ΡΠ΅ Π·Π°Π»Π΅ΠΆΠΈΡΡ Π²ΡΠ΄ ΠΏΡΠΈΡΠΎΠ΄ΠΈ Π΄Π°Π½ΠΈΡ , ΡΠΊΡ ΠΠΈ Π°Π½Π°Π»ΡΠ·ΡΡΡΠ΅, Π°Π»Π΅ ΠΏΠ΅ΡΠ΅Π²Π°ΠΆΠ½ΠΎ ΡΠ°ΠΊΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΠΌΠΎΠΆΡΡΡ ΠΌΠ°ΡΠΈ ΠΌΠ°Π»ΠΎ ΡΠ½ΡΠΊΠ°Π»ΡΠ½ΠΈΡ Π΄Π°Π½ΠΈΡ (Π² ΡΠ°ΠΉΠΎΠ½Ρ 3-10 ΡΠ½ΡΠΊΠ°Π»ΡΠ½ΠΈΡ Π·Π½Π°ΡΠ΅Π½Ρ).
print(df_numerical.nunique())ΠΡΡΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΠΊ ΠΌΠΈ Π²ΠΈΠ·Π½Π°ΡΠΈΠΌΠΎΡΡ Π· ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ-ΡΠΏΠΈΠ³ΡΠ½Π°ΠΌΠΈ, ΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΡΡΡΠΈΠΌΠΎ ΡΡ Π· ΠΊΡΠ»ΡΠΊΡΡΠ½ΠΈΡ Π΄Π°Π½ΠΈΡ Ρ ΡΠΊΡΡΠ½Ρ:
spy_columns = df_numerical[['ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1', 'ΠΊΠΎΠ»ΠΎΠΊΠ°2', 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3']]#Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ-ΡΠΏΠΈΠΎΠ½Ρ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ dataframe
df_numerical.drop(labels=['ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1', 'ΠΊΠΎΠ»ΠΎΠΊΠ°2', 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3'], axis=1, inplace = True)#Π²ΡΡΠ΅Π·Π°Π΅ΠΌ ΡΡΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΠΈΠ· ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
df_categorical.insert(1, 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1', spy_columns['ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1']) #Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ-ΡΠΏΠΈΠΎΠ½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
df_categorical.insert(1, 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2', spy_columns['ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2']) #Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π²ΡΠΎΡΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ-ΡΠΏΠΈΠΎΠ½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
df_categorical.insert(1, 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3', spy_columns['ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3']) #Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΠ΅ΡΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ-ΡΠΏΠΈΠΎΠ½ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ΠΠ°ΡΠ΅ΡΡΡ ΠΌΠΈ ΠΏΠΎΠ²Π½ΡΡΡΡ Π²ΡΠ΄ΠΎΠΊΡΠ΅ΠΌΠΈΠ»ΠΈ ΠΊΡΠ»ΡΠΊΡΡΠ½Ρ Π΄Π°Π½Ρ Π²ΡΠ΄ ΡΠΊΡΡΠ½ΠΈΡ Ρ ΡΠ΅ΠΏΠ΅Ρ ΠΌΠΎΠΆΠ½Π° Π· Π½ΠΈΠΌΠΈ Π΄ΠΎΠ±ΡΠ΅ ΠΏΠΎΠΏΡΠ°ΡΡΠ²Π°ΡΠΈ. ΠΠ΅ΡΡΠ΅ ΡΠ»ΡΠ΄ Π·ΡΠΎΠ·ΡΠΌΡΡΠΈ, Π΄Π΅ Ρ Π½Π°Ρ Ρ ΠΏΠΎΡΠΎΠΆΠ½Ρ Π·Π½Π°ΡΠ΅Π½Π½Ρ (NaN, Π° Π² Π΄Π΅ΡΠΊΠΈΡ Π²ΠΈΠΏΠ°Π΄ΠΊΠ°Ρ Ρ 0 Π±ΡΠ΄ΡΡΡ ΠΏΡΠΈΠΉΠΌΠ°ΡΠΈΡΡ ΡΠΊ ΠΏΠΎΡΠΎΠΆΠ½Ρ Π·Π½Π°ΡΠ΅Π½Π½Ρ).
for i in df_numerical.columns:
print(i, df[i][df[i]==0].count())ΠΠ° ΡΡΠΎΠΌΡ Π΅ΡΠ°ΠΏΡ Π²Π°ΠΆΠ»ΠΈΠ²ΠΎ Π·ΡΠΎΠ·ΡΠΌΡΡΠΈ, Π² ΡΠΊΠΈΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°Ρ Π½ΡΠ»Ρ ΠΌΠΎΠΆΡΡΡ ΠΎΠ·Π½Π°ΡΠ°ΡΠΈ Π²ΡΠ΄ΡΡΡΠ½Ρ Π·Π½Π°ΡΠ΅Π½Π½Ρ: ΡΠΈ ΡΠ΅ ΠΏΠΎΠ²'ΡΠ·Π°Π½ΠΎ Π· ΡΠΈΠΌ, ΡΠΊ Π·Π±ΠΈΡΠ°Π»ΠΈΡΡ Π΄Π°Π½Ρ? Π§ΠΈ ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π±ΡΡΠΈ ΠΏΠΎΠ²'ΡΠ·Π°Π½Π΅ ΡΠ· Π·Π½Π°ΡΠ΅Π½Π½ΡΠΌΠΈ Π΄Π°Π½ΠΈΡ ? ΠΠ° ΡΡ ΠΏΠΈΡΠ°Π½Π½Ρ ΠΏΠΎΡΡΡΠ±Π½ΠΎ Π²ΡΠ΄ΠΏΠΎΠ²ΡΠ΄Π°ΡΠΈ Ρ ΠΊΠΎΠΆΠ½ΠΎΠΌΡ ΠΎΠΊΡΠ΅ΠΌΠΎΠΌΡ Π²ΠΈΠΏΠ°Π΄ΠΊΡ.
ΠΡΠΆΠ΅, ΡΠΊΡΠΎ ΠΌΠΈ Π²ΡΠ΅ ΠΆ ΡΠ°ΠΊΠΈ Π²ΠΈΡΡΡΠΈΠ»ΠΈ, ΡΠΎ Π΄Π°Π½Ρ Ρ Π½Π°Ρ ΠΌΠΎΠΆΡΡΡ Π±ΡΡΠΈ Π²ΡΠ΄ΡΡΡΠ½ΡΠΌΠΈ ΡΠ°ΠΌ, Π΄Π΅ Ρ Π½ΡΠ»Ρ, ΡΠ»ΡΠ΄ Π·Π°ΠΌΡΠ½ΠΈΡΠΈ Π½ΡΠ»Ρ Π½Π° NaN, ΡΠΎΠ± Π±ΡΠ»ΠΎ Π»Π΅Π³ΡΠ΅ ΠΏΠΎΡΡΠΌ ΠΏΡΠ°ΡΡΠ²Π°ΡΠΈ Π· ΡΠΈΠΌΠΈ Π²ΡΡΠ°ΡΠ΅Π½ΠΈΠΌΠΈ Π΄Π°Π½ΠΈΠΌΠΈ:
df_numerical[["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° 1", "ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° 2"]] = df_numerical[["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° 1", "ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° 2"]].replace(0, nan)Π’Π΅ΠΏΠ΅Ρ ΠΏΠΎΠ΄ΠΈΠ²ΠΈΠΌΠΎΡΡ, Π΄Π΅ Ρ Π½Π°Ρ ΠΏΡΠΎΠΏΡΡΠ΅Π½Ρ Π΄Π°Π½Ρ:
sns.heatmap(df_numerical.isnull(),yticklabels=False,cbar=False,cmap='viridis') # ΠΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ df_numerical.info() 
Π’ΡΡ ΠΌΠ°ΡΡΡ Π±ΡΡΠΈ Π²ΡΠ΄Π·Π½Π°ΡΠ΅Π½Ρ ΠΆΠΎΠ²ΡΠΈΠΌ ΠΊΠΎΠ»ΡΠΎΡΠΎΠΌ ΡΡ Π·Π½Π°ΡΠ΅Π½Π½Ρ Π²ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ ΡΡΠΎΠ²ΠΏΡΡΠ², ΡΠΊΡ Π²ΡΠ΄ΡΡΡΠ½Ρ. Π Π½Π°ΠΉΡΡΠΊΠ°Π²ΡΡΠ΅ ΠΏΠΎΡΠΈΠ½Π°ΡΡΡΡΡ ΡΠ΅ΠΏΠ΅Ρ β ΡΠΊ ΠΏΠΎΠ²ΠΎΠ΄ΠΈΡΠΈΡΡ Π· ΡΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½Π½ΡΠΌΠΈ? ΠΠΈΠ΄Π°Π»ΠΈΡΠΈ ΡΡΠ΄ΠΊΠΈ Π· ΡΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½Π½ΡΠΌΠΈ ΡΠΈ ΡΡΠΎΠ²ΠΏΡΡ? Π§ΠΈ Π·Π°ΠΏΠΎΠ²Π½ΠΈΡΠΈ ΡΡ ΠΏΠΎΡΠΎΠΆΠ½Ρ Π·Π½Π°ΡΠ΅Π½Π½Ρ ΡΠΊΠΈΠΌΠΈΡΡ ΡΠ½ΡΠΈΠΌΠΈ?
ΠΡΡ ΠΏΡΠΈΠ±Π»ΠΈΠ·Π½Π° ΡΡ Π΅ΠΌΠ°, ΡΠΊΠ° ΠΌΠΎΠΆΠ΅ Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΡΠΈ Π²ΠΈΠ·Π½Π°ΡΠΈΡΠΈΡΡ Π· ΡΠΈΠΌ, ΡΠΎ ΠΌΠΎΠΆΠ½Π° Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Π·ΡΠΎΠ±ΠΈΡΠΈ Π· ΠΏΠΎΡΠΎΠΆΠ½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½Π½ΡΠΌΠΈ:

0. ΠΠΈΠ΄Π°Π»ΡΡΠΌΠΎ Π½Π΅ΠΏΠΎΡΡΡΠ±Π½Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ
df_numerical.drop(labels=["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2"], axis=1, inplace=True)1. ΠΡΠ»ΡΠΊΡΡΡΡ ΠΏΠΎΡΠΎΠΆΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½Ρ Ρ ΡΡΠΉ ΠΊΠΎΠ»ΠΎΠ½ΡΡ Π±ΡΠ»ΡΡΠ° Π·Π° 50%?
print(df_numerical.isnull().sum() / df_numerical.shape[0] * 100)df_numerical.drop(labels=["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2"], axis=1, inplace=True)#Π£Π΄Π°Π»ΡΠ΅ΠΌ, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ 50 ΠΏΡΡΡΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ2. ΠΠΈΠ΄Π°Π»ΡΡΠΌΠΎ ΡΡΠ΄ΠΊΠΈ Π· ΠΏΠΎΡΠΎΠΆΠ½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½Π½ΡΠΌΠΈ
df_numerical.dropna(inplace=True)#Π£Π΄Π°Π»ΡΠ΅ΠΌ ΡΡΡΠΎΡΠΊΠΈ Ρ ΠΏΡΡΡΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠΎΠΌ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ3.1. ΠΡΡΠ°Π²Π»ΡΡΠΌΠΎ Π²ΠΈΠΏΠ°Π΄ΠΊΠΎΠ²Π΅ Π·Π½Π°ΡΠ΅Π½Π½Ρ
import random #ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ random
df_numerical["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°"].fillna(lambda x: random.choice(df[df[column] != np.nan]["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°"]), inplace=True) #Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠ°Π½Π΄ΠΎΠΌΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΏΡΡΡΡΠ΅ ΠΊΠ»Π΅ΡΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΡ3.2. ΠΡΡΠ°Π²Π»ΡΡΠΌΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½Π΅ Π·Π½Π°ΡΠ΅Π½Π½Ρ
from sklearn.impute import SimpleImputer #ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ SimpleImputer, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΠ°Π²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
imputer = SimpleImputer(strategy='constant', fill_value="<ΠΠ°ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π΄Π΅ΡΡ>") #Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ SimpleImputer
df_numerical[["Π½ΠΎΠ²Π°Ρ_ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1",'Π½ΠΎΠ²Π°Ρ_ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2','Π½ΠΎΠ²Π°Ρ_ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3']] = imputer.fit_transform(df_numerical[['ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1', 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2', 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3']]) #ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΡΠΎ Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ
df_numerical.drop(labels = ["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3"], axis = 1, inplace = True) #Π£Π±ΠΈΡΠ°Π΅ΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΡΠΎ ΡΡΠ°ΡΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ3.3. ΠΡΡΠ°Π²Π»ΡΡΠΌΠΎ ΡΠ΅ΡΠ΅Π΄Π½Ρ ΡΠΈ ΠΌΠ°ΠΊΡΡΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½Π½Ρ
from sklearn.impute import SimpleImputer #ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ SimpleImputer, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΠ°Π²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
imputer = SimpleImputer(strategy='mean', missing_values = np.nan) #Π²ΠΌΠ΅ΡΡΠΎ mean ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ most_frequent
df_numerical[["Π½ΠΎΠ²Π°Ρ_ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1",'Π½ΠΎΠ²Π°Ρ_ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2','Π½ΠΎΠ²Π°Ρ_ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3']] = imputer.fit_transform(df_numerical[['ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1', 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2', 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3']]) #ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΡΠΎ Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ ΡΠ°Π±Π»ΠΈΡΡ
df_numerical.drop(labels = ["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3"], axis = 1, inplace = True) #Π£Π±ΠΈΡΠ°Π΅ΠΌ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΡΠΎ ΡΡΠ°ΡΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ3.4. ΠΡΡΠ°Π²Π»ΡΡΠΌΠΎ Π·Π½Π°ΡΠ΅Π½Π½Ρ, ΠΎΠ±ΡΠΈΡΠ»Π΅Π½Π΅ ΡΠ½ΡΠΎΡ ΠΌΠΎΠ΄Π΅Π»Π»Ρ
Π§Π°ΡΠΎΠΌ Π·Π½Π°ΡΠ΅Π½Π½Ρ ΠΌΠΎΠΆΠ½Π° ΠΎΠ±ΡΠΈΡΠ»ΠΈΡΠΈ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ ΡΠ΅Π³ΡΠ΅ΡΡΠΉΠ½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΡΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ Π· Π±ΡΠ±Π»ΡΠΎΡΠ΅ΠΊΠΈ sklearn Π°Π±ΠΎ ΡΠ½ΡΠΈΡ ΡΡ ΠΎΠΆΠΈΡ Π±ΡΠ±Π»ΡΠΎΡΠ΅ΠΊ. ΠΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠΈΡΠ²ΡΡΠΈΡΡ ΠΎΠΊΡΠ΅ΠΌΡ ΡΡΠ°ΡΡΡ ΡΠΎΠ΄ΠΎ ΡΠΎΠ³ΠΎ, ΡΠΊ ΡΠ΅ ΠΌΠΎΠΆΠ½Π° Π·ΡΠΎΠ±ΠΈΡΠΈ Π² Π½Π°ΠΉΠ±Π»ΠΈΠΆΡΠΎΠΌΡ ΠΌΠ°ΠΉΠ±ΡΡΠ½ΡΠΎΠΌΡ.
ΠΡΠΆΠ΅, ΠΏΠΎΠΊΠΈ ΡΠΎΠ·ΠΏΠΎΠ²ΡΠ΄Ρ ΠΏΡΠΎ ΠΊΡΠ»ΡΠΊΡΡΠ½Ρ Π΄Π°Π½Ρ ΠΏΠ΅ΡΠ΅ΡΠ²Π΅ΡΡΡΡ, ΡΠΎΠΌΡ ΡΠΎ Ρ Π±Π΅Π·Π»ΡΡ ΡΠ½ΡΠΈΡ Π½ΡΠ°Π½ΡΡΠ² ΠΏΡΠΎ ΡΠ΅, ΡΠΊ ΠΊΡΠ°ΡΠ΅ ΡΠΎΠ±ΠΈΡΠΈ data preparation Ρ preprocessing Π΄Π»Ρ ΡΡΠ·Π½ΠΈΡ Π·Π°Π²Π΄Π°Π½Ρ, Ρ Π±Π°Π·ΠΎΠ²Ρ ΡΠ΅ΡΡ Π΄Π»Ρ ΠΊΡΠ»ΡΠΊΡΡΠ½ΠΈΡ Π΄Π°Π½ΠΈΡ Π±ΡΠ»ΠΈ Π²ΡΠ°Ρ ΠΎΠ²Π°Π½Ρ Π² ΡΡΠΉ ΡΡΠ°ΡΡΡ, Ρ Π·Π°ΡΠ°Π· ΡΠ°ΠΌΠ΅ ΡΠ°Ρ ΠΏΠΎΠ²Π΅ΡΠ½ΡΡΠΈΡΡ Π΄ΠΎ ΡΠΊΡΡΠ½ΠΈΡ Π΄Π°Π½ΠΈΡ , ΡΠΊΡ ΠΌΠΈ Π²ΡΠ΄ΠΎΠΊΡΠ΅ΠΌΠΈΠ»ΠΈ ΠΊΡΠ»ΡΠΊΠ° ΠΊΡΠΎΠΊΡΠ² ΡΠΎΠΌΡ Π²ΡΠ΄ ΠΊΡΠ»ΡΠΊΡΡΠ½ΠΈΡ . ΠΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·ΠΌΡΠ½ΡΠ²Π°ΡΠΈ ΡΠ΅ΠΉ notebook ΡΠ°ΠΊ, ΡΠΊ ΠΠ°ΠΌ Π·Π°Π²Π³ΠΎΠ΄Π½ΠΎ, ΠΏΡΠ΄Π»Π°ΡΡΠΎΠ²ΡΡΡΠΈ ΠΉΠΎΠ³ΠΎ ΠΏΡΠ΄ ΡΡΠ·Π½Ρ Π·Π°Π²Π΄Π°Π½Π½Ρ, ΡΠΎΠ± data preprocessing ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΠ² Π΄ΡΠΆΠ΅ ΡΠ²ΠΈΠ΄ΠΊΠΎ!
Π―ΠΊΡΡΠ½Ρ Π΄Π°Π½Ρ
Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌΡ Π΄Π»Ρ ΡΠΊΡΡΠ½ΠΈΡ Π΄Π°Π½ΠΈΡ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ One-hot-encoding, ΡΠΎΠ± Π²ΡΠ΄ΡΠΎΡΠΌΠ°ΡΡΠ²Π°ΡΠΈ ΡΡ Π· string (Π°Π±ΠΎ object) Π΄ΠΎ ΡΠΈΡΠ»Π°. ΠΠ΅ΡΠ΅Π΄ ΡΠΈΠΌ ΡΠΊ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ½ΠΊΡΡ, ΡΠΊΠΎΡΠΈΡΡΠ°ΡΠΌΠΎΡΡ ΡΡ Π΅ΠΌΠΎΡ ΡΠ° ΠΊΠΎΠ΄ΠΎΠΌ Π·Π²Π΅ΡΡ Ρ, ΡΠΎΠ± ΡΠΎΠ·ΡΠ±ΡΠ°ΡΠΈΡΡ Π· ΠΏΠΎΡΠΎΠΆΠ½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½Π½ΡΠΌΠΈ.
df_categorical.nunique()sns.heatmap(df_categorical.isnull(),yticklabels=False,cbar=False,cmap='viridis') 
0. ΠΠΈΠ΄Π°Π»ΡΡΠΌΠΎ Π½Π΅ΠΏΠΎΡΡΡΠ±Π½Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ
df_categorical.drop(labels=["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2"], axis=1, inplace=True)1. ΠΡΠ»ΡΠΊΡΡΡΡ ΠΏΠΎΡΠΎΠΆΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½Ρ Ρ ΡΡΠΉ ΠΊΠΎΠ»ΠΎΠ½ΡΡ Π±ΡΠ»ΡΡΠ° Π·Π° 50%?
print(df_categorical.isnull().sum() / df_numerical.shape[0] * 100)df_categorical.drop(labels=["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2"], axis=1, inplace=True) #Π£Π΄Π°Π»ΡΠ΅ΠΌ, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°
#ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ 50% ΠΏΡΡΡΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ2. ΠΠΈΠ΄Π°Π»ΡΡΠΌΠΎ ΡΡΠ΄ΠΊΠΈ Π· ΠΏΠΎΡΠΎΠΆΠ½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½Π½ΡΠΌΠΈ
df_categorical.dropna(inplace=True)#Π£Π΄Π°Π»ΡΠ΅ΠΌ ΡΡΡΠΎΡΠΊΠΈ Ρ ΠΏΡΡΡΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ,
#Π΅ΡΠ»ΠΈ ΠΏΠΎΡΠΎΠΌ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ3.1. ΠΡΡΠ°Π²Π»ΡΡΠΌΠΎ Π²ΠΈΠΏΠ°Π΄ΠΊΠΎΠ²Π΅ Π·Π½Π°ΡΠ΅Π½Π½Ρ
import random
df_categorical["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°"].fillna(lambda x: random.choice(df[df[column] != np.nan]["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°"]), inplace=True)3.2. ΠΡΡΠ°Π²Π»ΡΡΠΌΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½Π΅ Π·Π½Π°ΡΠ΅Π½Π½Ρ
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy='constant', fill_value="<ΠΠ°ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π΄Π΅ΡΡ>")
df_categorical[["Π½ΠΎΠ²Π°Ρ_ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1",'Π½ΠΎΠ²Π°Ρ_ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2','Π½ΠΎΠ²Π°Ρ_ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3']] = imputer.fit_transform(df_categorical[['ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1', 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2', 'ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3']])
df_categorical.drop(labels = ["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3"], axis = 1, inplace = True)ΠΡΠΆΠ΅, Π½Π°ΡΠ΅ΡΡΡ ΠΌΠΈ ΡΠΎΠ·ΡΠ±ΡΠ°Π»ΠΈΡΡ Π· ΠΏΠΎΡΠΎΠΆΠ½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½Π½ΡΠΌΠΈ ΡΠΊΡΡΠ½ΠΈΡ Π΄Π°Π½ΠΈΡ . Π’Π΅ΠΏΠ΅Ρ ΡΠ°Ρ Π·ΡΠΎΠ±ΠΈΡΠΈ one-hot-encoding Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½Ρ, ΡΠΊΡ Ρ Ρ Π²Π°ΡΡΠΉ Π±Π°Π·Ρ Π΄Π°Π½ΠΈΡ . Π¦Π΅ΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄ΡΠΆΠ΅ ΡΠ°ΡΡΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΡΡΡΡΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΠΎΠ± Π²Π°Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΌΡΠ³ Π½Π°Π²ΡΠ°ΡΠΈΡΡ Π· ΡΡΠ°Ρ ΡΠ²Π°Π½Π½ΡΠΌ ΡΠΊΡΡΠ½ΠΈΡ Π΄Π°Π½ΠΈΡ .
def encode_and_bind(original_dataframe, feature_to_encode):
dummies = pd.get_dummies(original_dataframe[[feature_to_encode]])
res = pd.concat([original_dataframe, dummies], axis=1)
res = res.drop([feature_to_encode], axis=1)
return(res)features_to_encode = ["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°3"]
for feature in features_to_encode:
df_categorical = encode_and_bind(df_categorical, feature))ΠΡΠΆΠ΅, Π½Π°ΡΠ΅ΡΡΡ ΠΌΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π»ΠΈ ΠΎΠ±ΡΠΎΠ±Π»ΡΡΠΈ ΠΎΠΊΡΠ΅ΠΌΠΎ ΡΠΊΡΡΠ½Ρ ΡΠ° ΠΊΡΠ»ΡΠΊΡΡΠ½Ρ Π΄Π°Π½Ρ β ΡΠ°Ρ ΠΏΠΎΡΠ΄Π½ΡΠ²Π°ΡΠΈ ΡΡ Π½Π°Π·Π°Π΄.
new_df = pd.concat([df_numerical,df_categorical], axis=1)ΠΡΡΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΠΊ ΠΌΠΈ Π·'ΡΠ΄Π½Π°Π»ΠΈ ΡΠ°Π·ΠΎΠΌ Π΄Π°ΡΠ°ΡΠ΅ΡΠΈ Π² ΠΎΠ΄ΠΈΠ½, ΠΏΡΠ΄ ΠΊΡΠ½Π΅ΡΡ ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΡΡ Π΄Π°Π½ΠΈΡ Π·Π° Π΄ΠΎΠΏΠΎΠΌΠΎΠ³ΠΎΡ MinMaxScaler ΡΠ· Π±ΡΠ±Π»ΡΠΎΡΠ΅ΠΊΠΈ sklearn. Π¦Π΅ Π·ΡΠΎΠ±ΠΈΡΡ Π½Π°ΡΡ Π·Π½Π°ΡΠ΅Π½Π½Ρ Π²ΡΠ΄ 0 Π΄ΠΎ 1, ΡΠΎ Π΄ΠΎΠΏΠΎΠΌΠΎΠΆΠ΅ ΠΏΡΠΈ Π½Π°Π²ΡΠ°Π½Π½Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π² ΠΌΠ°ΠΉΠ±ΡΡΠ½ΡΠΎΠΌΡ.
from sklearn.preprocessing import MinMaxScaler
min_max_scaler = MinMaxScaler()
new_df = min_max_scaler.fit_transform(new_df)Π¦Ρ Π΄Π°Π½Ρ ΡΠ΅ΠΏΠ΅Ρ Π³ΠΎΡΠΎΠ²Ρ Π΄ΠΎ Π²ΡΡΠΎΠ³ΠΎ β Π΄ΠΎ Π½Π΅ΠΉΡΠΎΠ½Π½ΠΈΡ ΠΌΠ΅ΡΠ΅ΠΆ, ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡ ML Π°Π»Π³ΠΎΡΠΈΡΠΌΡΠ² ΡΠΎΡΠΎ!
Π£ ΡΡΠΉ ΡΡΠ°ΡΡΡ ΠΌΠΈ Π½Π΅ Π²ΡΠ°Ρ
ΡΠ²Π°Π»ΠΈ ΡΠΎΠ±ΠΎΡΡ Π· Π΄Π°Π½ΠΈΠΌΠΈ, ΡΠΎ Π½Π°Π»Π΅ΠΆΠ°ΡΡ Π΄ΠΎ ΡΠΈΠΌΡΠ°ΡΠΎΠ²ΠΈΡ
ΡΡΠ΄ΡΠ², ΡΠΎΠΌΡ ΡΠΎ Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ
Π΄Π°Π½ΠΈΡ
ΡΠ»ΡΠ΄ Π²ΠΈΠΊΠΎΡΠΈΡΡΠΎΠ²ΡΠ²Π°ΡΠΈ ΡΡΠΎΡ
ΠΈ ΡΠ½ΡΡ ΡΠ΅Ρ
Π½ΡΠΊΠΈ ΡΡ
ΠΎΠ±ΡΠΎΠ±ΠΊΠΈ, Π·Π°Π»Π΅ΠΆΠ½ΠΎ Π²ΡΠ΄ ΠΠ°ΡΠΎΠ³ΠΎ Π·Π°Π²Π΄Π°Π½Π½Ρ. Π£ ΠΌΠ°ΠΉΠ±ΡΡΠ½ΡΠΎΠΌΡ Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΡΠΈΡΠ²ΡΡΠΈΡΡ ΡΡΠΉ ΡΠ΅ΠΌΡ ΠΎΠΊΡΠ΅ΠΌΡ ΡΡΠ°ΡΡΡ, Ρ ΠΌΠΈ ΡΠΏΠΎΠ΄ΡΠ²Π°ΡΠΌΠΎΡΡ, ΡΠΎ Π²ΠΎΠ½Π° Π·ΠΌΠΎΠΆΠ΅ ΠΏΡΠΈΠ½Π΅ΡΡΠΈ Ρ ΠΠ°ΡΠ΅ ΠΆΠΈΡΡΡ ΡΠΎΡΡ ΡΡΠΊΠ°Π²Π΅, Π½ΠΎΠ²Π΅ ΡΠ° ΠΊΠΎΡΠΈΡΠ½Π΅, ΡΠΊ Ρ ΡΠ΅.
ΠΠΆΠ΅ΡΠ΅Π»ΠΎ: habr.com
