Π‘Π΅Π»Π΅ΠΆΠ½ΠΈΠΊ-ΠΈΠ·ΠΌΠ°ΠΌΠ»ΠΈΠ² лист Π·Π° Π±Ρ€Π·Π° ΠΏΡ€Π΅Ρ‚ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ

ЧСсто Π»ΡƒΡ“Π΅Ρ‚ΠΎ ΠΊΠΎΠΈ Π²Π»Π΅Π³ΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ ΠΏΠΎΠ»Π΅Ρ‚ΠΎ Π½Π° Π½Π°ΡƒΠΊΠ°Ρ‚Π° Π·Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈΠΌΠ°Π°Ρ‚ ΠΏΠΎΠΌΠ°Π»ΠΊΡƒ ΠΎΠ΄ Ρ€Π΅Π°Π»Π½ΠΈ ΠΎΡ‡Π΅ΠΊΡƒΠ²Π°ΡšΠ° Π·Π° Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ Π³ΠΈ Ρ‡Π΅ΠΊΠ°. ΠœΠ½ΠΎΠ³Ρƒ Π»ΡƒΡ“Π΅ мислат Π΄Π΅ΠΊΠ° сСга ќС Π½Π°ΠΏΠΈΡˆΠ°Ρ‚ ΠΊΡƒΠ» нСвронски ΠΌΡ€Π΅ΠΆΠΈ, ќС создадат гласовСн асистСнт ΠΎΠ΄ Iron Man ΠΈΠ»ΠΈ ќС Π³ΠΈ ΠΏΠΎΠ±Π΅Π΄Π°Ρ‚ ситС Π½Π° финансискитС ΠΏΠ°Π·Π°Ρ€ΠΈ.
Но Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Научникот Π΅ ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Π½ ΠΎΠ΄ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, Π° Π΅Π΄Π΅Π½ ΠΎΠ΄ Π½Π°Ρ˜Π²Π°ΠΆΠ½ΠΈΡ‚Π΅ ΠΈ ΠΎΠ΄Π·Π΅ΠΌΠ°Π°Ρ‚ ΠΌΠ½ΠΎΠ³Ρƒ Π²Ρ€Π΅ΠΌΠ΅ аспСкти Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ ΠΏΡ€Π΅Π΄ Π΄Π° Π³ΠΈ внСсС Π²ΠΎ нСвронска ΠΌΡ€Π΅ΠΆΠ° ΠΈΠ»ΠΈ Π΄Π° Π³ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° Π½Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ Π½Π°Ρ‡ΠΈΠ½.

Π’ΠΎ ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°, Π½Π°ΡˆΠΈΠΎΡ‚ Ρ‚ΠΈΠΌ ќС опишС ΠΊΠ°ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Ρ€Π·ΠΎ ΠΈ лСсно Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΡƒΠ²Π°Ρ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ со Ρ‡Π΅ΠΊΠΎΡ€-ΠΏΠΎ-Ρ‡Π΅ΠΊΠΎΡ€ инструкции ΠΈ ΠΊΠΎΠ΄. Π‘Π΅ ΠΎΠ±ΠΈΠ΄ΠΎΠ²ΠΌΠ΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠ΅ ΠΊΠΎΠ΄ΠΎΡ‚ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ флСксибилСн ΠΈ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π·Π±ΠΈΡ€ΠΊΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ.

ΠœΠ½ΠΎΠ³Ρƒ профСсионалци ΠΌΠΎΠΆΠ΅Π±ΠΈ Π½Π΅ΠΌΠ° Π΄Π° Π½Π°Ρ˜Π΄Π°Ρ‚ Π½ΠΈΡˆΡ‚ΠΎ ΠΈΠ·Π²ΠΎΠ½Ρ€Π΅Π΄Π½ΠΎ Π²ΠΎ ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°, Π½ΠΎ ΠΏΠΎΡ‡Π΅Ρ‚Π½ΠΈΡ†ΠΈΡ‚Π΅ ќС ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° Π½Π°ΡƒΡ‡Π°Ρ‚ Π½Π΅ΡˆΡ‚ΠΎ Π½ΠΎΠ²ΠΎ, Π° сСкој ΡˆΡ‚ΠΎ Π΄ΠΎΠ»Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅ сонувал Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ посСбСн Ρ‚Π΅Ρ‚Ρ€Π°Ρ‚ΠΊΠ° Π·Π° Π±Ρ€Π·Π° ΠΈ структурирана ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ ΠΊΠΎΠΏΠΈΡ€Π° ΠΊΠΎΠ΄ΠΎΡ‚ ΠΈ Π΄Π° Π³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π° Π·Π° сСбС, ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π·Π΅ΠΌΠ΅Ρ‚Π΅ Π³ΠΎ Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΎΡ‚ Ρ‚Π΅Ρ‚Ρ€Π°Ρ‚ΠΊΠ° ΠΎΠ΄ Github.

Ја Π΄ΠΎΠ±ΠΈΠ²ΠΌΠ΅ Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Π¨Ρ‚ΠΎ Π΄Π° сС ΠΏΡ€Π°Π²ΠΈ слСдно?

Π—Π½Π°Ρ‡ΠΈ, стандардот: Ρ‚Ρ€Π΅Π±Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌΠ΅ со ΡˆΡ‚ΠΎ сС Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΠΌΠ΅, Ρ†Π΅Π»ΠΎΠΊΡƒΠΏΠ½Π°Ρ‚Π° слика. Π—Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΎΠ²Π°, Π½ΠΈΠ΅ користимС ΠΏΠ°Π½Π΄ΠΈ Сдноставно Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°ΠΌΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ.

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() #ДСмонстрируСм ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°Ρ…

Π‘Π΅Π»Π΅ΠΆΠ½ΠΈΠΊ-ΠΈΠ·ΠΌΠ°ΠΌΠ»ΠΈΠ² лист Π·Π° Π±Ρ€Π·Π° ΠΏΡ€Π΅Ρ‚ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ

АјдС Π΄Π° Π³ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ врСдноститС Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈΡ‚Π΅:

  1. Π”Π°Π»ΠΈ Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° Π»ΠΈΠ½ΠΈΠΈ Π²ΠΎ сСкоја ΠΊΠΎΠ»ΠΎΠ½Π° ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π° Π½Π° Π²ΠΊΡƒΠΏΠ½ΠΈΠΎΡ‚ Π±Ρ€ΠΎΡ˜ Π½Π° Π»ΠΈΠ½ΠΈΠΈ?
  2. Која Π΅ ΡΡƒΡˆΡ‚ΠΈΠ½Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ Π²ΠΎ сСкоја ΠΊΠΎΠ»ΠΎΠ½Π°?
  3. Која ΠΊΠΎΠ»ΠΎΠ½Π° сакамС Π΄Π° ја насочимС Π·Π° Π΄Π° ΠΏΡ€Π°Π²ΠΈΠΌΠ΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΡƒΠ²Π°ΡšΠ° Π·Π° Π½Π΅Π°?

ΠžΠ΄Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ Π½Π° ΠΎΠ²ΠΈΠ΅ ΠΏΡ€Π°ΡˆΠ°ΡšΠ° ќС Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° ја Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈ Π³Ρ€ΡƒΠ±ΠΎ Π΄Π° Π½Π°Ρ†Ρ€Ρ‚Π°Ρ‚Π΅ ΠΏΠ»Π°Π½ Π·Π° Π²Π°ΡˆΠΈΡ‚Π΅ слСдни активности.

Π˜ΡΡ‚ΠΎ Ρ‚Π°ΠΊΠ°, Π·Π° ΠΏΠΎΠ΄Π»Π°Π±ΠΎΠΊ ΠΏΠΎΠ³Π»Π΅Π΄ Π½Π° врСдноститС Π²ΠΎ сСкоја ΠΊΠΎΠ»ΠΎΠ½Π°, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ја користимС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° pandas describe(). Π‘Π΅ΠΏΠ°ΠΊ, нСдостаток Π½Π° ΠΎΠ²Π°Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° Π΅ ΡˆΡ‚ΠΎ Π½Π΅ Π΄Π°Π²Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π·Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈ со врСдности Π½Π° Π½ΠΈΠ·Π°. ЌС сС справимС со Π½ΠΈΠ² ΠΏΠΎΠ΄ΠΎΡ†Π½Π°.

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 ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ слични Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ΠΠ°ΡˆΠΈΠΎΡ‚ Ρ‚ΠΈΠΌ ќС посвСти посСбна ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ Ρ‚ΠΎΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ Π²ΠΎ блиска ΠΈΠ΄Π½ΠΈΠ½Π°.

Π’Π°ΠΊΠ°, Π·Π° сСга, Π½Π°Ρ€Π°Ρ‚ΠΈΠ²ΠΎΡ‚ Π·Π° ΠΊΠ²Π°Π½Ρ‚ΠΈΡ‚Π°Ρ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ќС Π±ΠΈΠ΄Π΅ ΠΏΡ€Π΅ΠΊΠΈΠ½Π°Ρ‚, бидСјќи ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³Ρƒ Π΄Ρ€ΡƒΠ³ΠΈ нијанси Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΎ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, Π° основнитС Ρ€Π°Π±ΠΎΡ‚ΠΈ Π·Π° ΠΊΠ²Π°Π½Ρ‚ΠΈΡ‚Π°Ρ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ сС Π·Π΅ΠΌΠ΅Π½ΠΈ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Π²ΠΎ овој напис, ΠΈ сСга Π΅ Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° сС Π²Ρ€Π°Ρ‚ΠΈΠΌΠ΅ Π½Π° ΠΊΠ²Π°Π»ΠΈΡ‚Π°Ρ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ.ΠΊΠΎΠΈ Π³ΠΈ ΠΎΠ΄Π²ΠΎΠΈΠ²ΠΌΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Ρ‡Π΅ΠΊΠΎΡ€ΠΈ Π½Π°Π½Π°Π·Π°Π΄ ΠΎΠ΄ ΠΊΠ²Π°Π½Ρ‚ΠΈΡ‚Π°Ρ‚ΠΈΠ²Π½ΠΈΡ‚Π΅. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ја ΠΌΠ΅Π½ΡƒΠ²Π°Ρ‚Π΅ ΠΎΠ²Π°Π° Ρ‚Π΅Ρ‚Ρ€Π°Ρ‚ΠΊΠ° ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сакатС, ΠΏΡ€ΠΈΡΠΏΠΎΡΠΎΠ±ΡƒΠ²Π°Ρ˜ΡœΠΈ ја Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ ΠΏΡ€Π΅Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ ΠΎΠ΄ΠΈ ΠΌΠ½ΠΎΠ³Ρƒ Π±Ρ€Π·ΠΎ!

ΠšΠ²Π°Π»ΠΈΡ‚Π°Ρ‚ΠΈΠ²Π½ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ

Π’ΠΎ основа, Π·Π° ΠΊΠ²Π°Π»ΠΈΡ‚Π°Ρ‚ΠΈΠ²Π½ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΡ‚ Π·Π° ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ One-hot сС користи Π·Π° Π΄Π° сС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π° ΠΎΠ΄ Π½ΠΈΠ·Π° (ΠΈΠ»ΠΈ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚) Π²ΠΎ Π±Ρ€ΠΎΡ˜. ΠŸΡ€Π΅Π΄ Π΄Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌΠ΅ Π΄ΠΎ ΠΎΠ²Π°Π° Ρ‚ΠΎΡ‡ΠΊΠ°, ајдС Π΄Π° Π³ΠΈ користимС Π΄ΠΈΡ˜Π°Π³Ρ€Π°ΠΌΠΎΡ‚ ΠΈ ΠΊΠΎΠ΄ΠΎΡ‚ ΠΏΠΎΠ³ΠΎΡ€Π΅ Π·Π° Π΄Π° сС справимС со ΠΏΡ€Π°Π·Π½ΠΈΡ‚Π΅ врСдности.

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)

Π—Π½Π°Ρ‡ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ сС справивмС со Π½ΡƒΠ»Π° Π²ΠΎ ΠΊΠ²Π°Π»ΠΈΡ‚Π°Ρ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Π‘Π΅Π³Π° Π΅ Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ Π΅Π΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° врСдноститС ΡˆΡ‚ΠΎ сС Π²ΠΎ Π²Π°ΡˆΠ°Ρ‚Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Овој ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠ½ΠΎΠ³Ρƒ чСсто сС користи Π·Π° Π΄Π° сС осигура Π΄Π΅ΠΊΠ° Π²Π°ΡˆΠΈΠΎΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚Π°ΠΌ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡƒΡ‡ΠΈ ΠΎΠ΄ висококвалитСтни ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ.

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 Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ ΠΈΡ‚Π½.!

Π’ΠΎ ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°, Π½Π΅ ја Π·Π΅ΠΌΠ°Π²ΠΌΠ΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° со ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π·Π° врСмСнски сСрии, бидСјќи Π·Π° Ρ‚Π°ΠΊΠ²ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Ρ‚Ρ€Π΅Π±Π° Π΄Π° користитС ΠΌΠ°Π»ΠΊΡƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Π²ΠΎ зависност ΠΎΠ΄ Π²Π°ΡˆΠ°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π°. Π’ΠΎ ΠΈΠ΄Π½ΠΈΠ½Π°, Π½Π°ΡˆΠΈΠΎΡ‚ Ρ‚ΠΈΠΌ ќС посвСти посСбна ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° Π½Π° ΠΎΠ²Π°Π° Ρ‚Π΅ΠΌΠ° ΠΈ сС Π½Π°Π΄Π΅Π²Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° ќС ΠΌΠΎΠΆΠ΅ Π΄Π° внСсС Π½Π΅ΡˆΡ‚ΠΎ интСрСсно, Π½ΠΎΠ²ΠΎ ΠΈ корисно Π²ΠΎ Π²Π°ΡˆΠΈΠΎΡ‚ ΠΆΠΈΠ²ΠΎΡ‚, исто ΠΊΠ°ΠΊΠΎ ΠΎΠ²Π°Π°.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€