НотСпад-Ρ†Ρ…Π΅Π°Ρ‚ схССт Π·Π° Π±Ρ€Π·Ρƒ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½Ρƒ ΠΎΠ±Ρ€Π°Π΄Ρƒ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°

ЧСсто Ρ™ΡƒΠ΄ΠΈ који ΡƒΠ»Π°Π·Π΅ Ρƒ област Π½Π°ΡƒΠΊΠ΅ ΠΎ ΠΏΠΎΠ΄Π°Ρ†ΠΈΠΌΠ° ΠΈΠΌΠ°Ρ˜Ρƒ мањС ΠΎΠ΄ Ρ€Π΅Π°Π»Π½ΠΈΡ… ΠΎΡ‡Π΅ΠΊΠΈΠ²Π°ΡšΠ° ΠΎ Ρ‚ΠΎΠΌΠ΅ ΡˆΡ‚Π° ΠΈΡ… Ρ‡Π΅ΠΊΠ°. Многи Ρ™ΡƒΠ΄ΠΈ мислС Π΄Π° Ρ›Π΅ сада писати Ρ†ΠΎΠΎΠ» нСуронскС ΠΌΡ€Π΅ΠΆΠ΅, ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚ΠΈ гласовног асистСнта ΠΎΠ΄ Π˜Ρ€ΠΎΠ½ Ман-Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ±Π΅Π΄ΠΈΡ‚ΠΈ свС Π½Π° Ρ„ΠΈΠ½Π°Π½ΡΠΈΡ˜ΡΠΊΠΈΠΌ Ρ‚Ρ€ΠΆΠΈΡˆΡ‚ΠΈΠΌΠ°.
Али Ρ€Π°Π΄ Π”Π°Ρ‚ΡƒΠΌ Научник јС Π²ΠΎΡ’Π΅Π½ ΠΏΠΎΠ΄Π°Ρ†ΠΈΠΌΠ°, Π° јСдан ΠΎΠ΄ Π½Π°Ρ˜Π²Π°ΠΆΠ½ΠΈΡ˜ΠΈΡ… аспСката који ΠΎΠ΄ΡƒΠ·ΠΈΠΌΠ°Ρ˜Ρƒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π° јС ΠΎΠ±Ρ€Π°Π΄Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΏΡ€Π΅ Π½Π΅Π³ΠΎ ΡˆΡ‚ΠΎ сС унСсу Ρƒ нСуронску ΠΌΡ€Π΅ΠΆΡƒ ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ˜Ρƒ Π½Π° ΠΎΠ΄Ρ€Π΅Ρ’Π΅Π½ΠΈ Π½Π°Ρ‡ΠΈΠ½.

Π£ ΠΎΠ²ΠΎΠΌ Ρ‡Π»Π°Π½ΠΊΡƒ, наш Ρ‚ΠΈΠΌ Ρ›Π΅ описати ΠΊΠ°ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±Ρ€Π·ΠΎ ΠΈ Π»Π°ΠΊΠΎ ΠΎΠ±Ρ€Π°Π΄ΠΈΡ‚ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ ΠΏΠΎΠΌΠΎΡ›Ρƒ Π΄Π΅Ρ‚Π°Ρ™Π½ΠΈΡ… упутстава ΠΈ ΠΊΠΎΠ΄Π°. ΠŸΠΎΠΊΡƒΡˆΠ°Π»ΠΈ смо Π΄Π° ΡƒΡ‡ΠΈΠ½ΠΈΠΌΠΎ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ флСксибилним ΠΈ Π΄Π° сС ΠΌΠΎΠΆΠ΅ користити Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚Π΅ скуповС ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°.

Многи профСсионалци ΠΌΠΎΠΆΠ΄Π° Π½Π΅Ρ›Π΅ ΠΏΡ€ΠΎΠ½Π°Ρ›ΠΈ Π½ΠΈΡˆΡ‚Π° Π½Π΅ΠΎΠ±ΠΈΡ‡Π½ΠΎ Ρƒ ΠΎΠ²ΠΎΠΌ Ρ‡Π»Π°Π½ΠΊΡƒ, Π°Π»ΠΈ ΠΏΠΎΡ‡Π΅Ρ‚Π½ΠΈΡ†ΠΈ Ρ›Π΅ ΠΌΠΎΡ›ΠΈ Π΄Π° Π½Π°ΡƒΡ‡Π΅ Π½Π΅ΡˆΡ‚ΠΎ Π½ΠΎΠ²ΠΎ, Π° свако ΠΊΠΎ јС Π΄ΡƒΠ³ΠΎ сањао Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ засСбну Π±Π΅Π»Π΅ΠΆΠ½ΠΈΡ†Ρƒ Π·Π° Π±Ρ€Π·Ρƒ ΠΈ структурирану ΠΎΠ±Ρ€Π°Π΄Ρƒ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅ ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚ΠΈ ΠΊΠΎΠ΄ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Ρ‚ΠΈ Π³Π° Π·Π° сСбС, ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΡƒΠ·ΠΌΠΈΡ‚Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρƒ Π±Π΅Π»Π΅ΠΆΠ½ΠΈΡ†Ρƒ са Π“ΠΈΡ‚Ρ…ΡƒΠ±-Π°.

Π”ΠΎΠ±ΠΈΠ»ΠΈ смо скуп ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°. Π¨Ρ‚Π° Π΄Π°Ρ™Π΅?

Π”Π°ΠΊΠ»Π΅, стандард: Ρ‚Ρ€Π΅Π±Π° Π΄Π° Ρ€Π°Π·ΡƒΠΌΠ΅ΠΌΠΎ са Ρ‡ΠΈΠΌΠ΅ ΠΈΠΌΠ°ΠΌΠΎ посла, Ρ†Π΅Π»ΠΎΠΊΡƒΠΏΠ½Ρƒ слику. Π”Π° бисмо Ρ‚ΠΎ ΡƒΡ€Π°Π΄ΠΈΠ»ΠΈ, користимо ΠΏΠ°Π½Π΄Π΅ Π΄Π° Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡˆΠ΅ΠΌΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚Π΅ Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°.

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. ΠšΠΎΡ˜Ρƒ ΠΊΠΎΠ»ΠΎΠ½Ρƒ ΠΆΠ΅Π»ΠΈΠΌΠΎ Π΄Π° Ρ†ΠΈΡ™Π°ΠΌΠΎ Π΄Π° бисмо Π½Π°ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄Π²ΠΈΡ’Π°ΡšΠ° Π·Π° ΡšΡƒ?

ΠžΠ΄Π³ΠΎΠ²ΠΎΡ€ΠΈ Π½Π° ΠΎΠ²Π° ΠΏΠΈΡ‚Π°ΡšΠ° Ρ›Π΅ Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡƒΡ›ΠΈΡ‚ΠΈ Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ скуп ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈ Π³Ρ€ΡƒΠ±ΠΎ Π½Π°Ρ†Ρ€Ρ‚Π°Ρ‚Π΅ ΠΏΠ»Π°Π½ Π·Π° својС слСдСћС Π°ΠΊΡ†ΠΈΡ˜Π΅.

Π’Π°ΠΊΠΎΡ’Π΅, Π·Π° Π΄ΡƒΠ±Ρ™ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄ Π½Π° врСдности Ρƒ свакој ΠΊΠΎΠ»ΠΎΠ½ΠΈ, ΠΌΠΎΠΆΠ΅ΠΌΠΎ користити Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Ρƒ пандас дСсцрибС(). ΠœΠ΅Ρ’ΡƒΡ‚ΠΈΠΌ, нСдостатак ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π΅ јС ΡˆΡ‚ΠΎ Π½Π΅ дајС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π΅ ΠΎ ΠΊΠΎΠ»ΠΎΠ½Π°ΠΌΠ° са врСдностима Π½ΠΈΠ·Π°. ΠŸΠΎΠ·Π°Π±Π°Π²ΠΈΡ›Π΅ΠΌΠΎ сС њима каснијС.

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']) #добавляСм Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ-шпион Π² качСствСнныС Π΄Π°Π½Π½Ρ‹Π΅

ΠšΠΎΠ½Π°Ρ‡Π½ΠΎ, ΠΏΠΎΡ‚ΠΏΡƒΠ½ΠΎ смо Ρ€Π°Π·Π΄Π²ΠΎΡ˜ΠΈΠ»ΠΈ ΠΊΠ²Π°Π½Ρ‚ΠΈΡ‚Π°Ρ‚ΠΈΠ²Π½Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ ΠΎΠ΄ ΠΊΠ²Π°Π»ΠΈΡ‚Π°Ρ‚ΠΈΠ²Π½ΠΈΡ… ΠΈ сада ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° Ρ€Π°Π΄ΠΈΠΌΠΎ са њима ΠΊΠ°ΠΊΠΎ Ρ‚Ρ€Π΅Π±Π°. ΠŸΡ€Π²Π° ствар јС Π΄Π° схватимо Π³Π΄Π΅ ΠΈΠΌΠ°ΠΌΠΎ ΠΏΡ€Π°Π·Π½Π΅ врСдности (НаН, Π°Ρƒ Π½Π΅ΠΊΠΈΠΌ ΡΠ»ΡƒΡ‡Π°Ρ˜Π΅Π²ΠΈΠΌΠ° 0 Ρ›Π΅ Π±ΠΈΡ‚ΠΈ ΠΏΡ€ΠΈΡ…Π²Π°Ρ›Π΅Π½ΠΎ ΠΊΠ°ΠΎ ΠΏΡ€Π°Π·Π½Π΅ врСдности).

for i in df_numerical.columns:
    print(i, df[i][df[i]==0].count())

Π£ ΠΎΠ²ΠΎΠΌ Ρ‚Ρ€Π΅Π½ΡƒΡ‚ΠΊΡƒ, Π²Π°ΠΆΠ½ΠΎ јС Ρ€Π°Π·ΡƒΠΌΠ΅Ρ‚ΠΈ Ρƒ којим ΠΊΠΎΠ»ΠΎΠ½Π°ΠΌΠ° Π½ΡƒΠ»Π΅ ΠΌΠΎΠ³Ρƒ ΡƒΠΊΠ°Π·ΠΈΠ²Π°Ρ‚ΠΈ Π½Π° врСдности којС Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ˜Ρƒ: Π΄Π° Π»ΠΈ јС Ρ‚ΠΎ Π·Π±ΠΎΠ³ Π½Π°Ρ‡ΠΈΠ½Π° Π½Π° који су ΠΏΠΎΠ΄Π°Ρ†ΠΈ ΠΏΡ€ΠΈΠΊΡƒΠΏΡ™Π΅Π½ΠΈ? Или Π±ΠΈ Ρ‚ΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±ΠΈΡ‚ΠΈ ΠΏΠΎΠ²Π΅Π·Π°Π½ΠΎ са врСдностима ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ°? На ΠΎΠ²Π° ΠΏΠΈΡ‚Π°ΡšΠ° сС ΠΌΠΎΡ€Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΠΈ ΠΎΠ΄ ΡΠ»ΡƒΡ‡Π°Ρ˜Π° Π΄ΠΎ ΡΠ»ΡƒΡ‡Π°Ρ˜Π°.

Π”Π°ΠΊΠ»Π΅, Π°ΠΊΠΎ ΠΈΠΏΠ°ΠΊ ΠΎΠ΄Π»ΡƒΡ‡ΠΈΠΌΠΎ Π΄Π° Π½Π°ΠΌ ΠΌΠΎΠΆΠ΄Π° Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ˜Ρƒ ΠΏΠΎΠ΄Π°Ρ†ΠΈ Π³Π΄Π΅ ΠΏΠΎΡΡ‚ΠΎΡ˜Π΅ Π½ΡƒΠ»Π΅, Ρ‚Ρ€Π΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠΎ Π½ΡƒΠ»Π΅ са НаН Π΄Π° бисмо каснијС олакшали Ρ€Π°Π΄ са ΠΎΠ²ΠΈΠΌ ΠΈΠ·Π³ΡƒΠ±Ρ™Π΅Π½ΠΈΠΌ ΠΏΠΎΠ΄Π°Ρ†ΠΈΠΌΠ°:

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. УнСситС врСдност ΠΈΠ·Ρ€Π°Ρ‡ΡƒΠ½Π°Ρ‚Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΎΠΌ

ПонСкад сС врСдности ΠΌΠΎΠ³Ρƒ ΠΈΠ·Ρ€Π°Ρ‡ΡƒΠ½Π°Ρ‚ΠΈ ΠΊΠΎΡ€ΠΈΡˆΡ›Π΅ΡšΠ΅ΠΌ рСгрСсионих ΠΌΠΎΠ΄Π΅Π»Π° користСћи ΠΌΠΎΠ΄Π΅Π»Π΅ ΠΈΠ· склСарн Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… сличних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°. Наш Ρ‚ΠΈΠΌ Ρ›Π΅ посвСтити посСбан Ρ‡Π»Π°Π½Π°ΠΊ ΠΎ Ρ‚ΠΎΠΌΠ΅ ΠΊΠ°ΠΊΠΎ сС Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ ΡƒΡ‡ΠΈΠ½ΠΈΡ‚ΠΈ Ρƒ блиској будућности.

Π”Π°ΠΊΠ»Π΅, Π·Π° сада Ρ›Π΅ Π½Π°Ρ€Π°Ρ‚ΠΈΠ² ΠΎ ΠΊΠ²Π°Π½Ρ‚ΠΈΡ‚Π°Ρ‚ΠΈΠ²Π½ΠΈΠΌ ΠΏΠΎΠ΄Π°Ρ†ΠΈΠΌΠ° Π±ΠΈΡ‚ΠΈ ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΡ‚, Ρ˜Π΅Ρ€ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… нијанси ΠΊΠ°ΠΊΠΎ Π±ΠΎΡ™Π΅ ΠΎΠ±Π°Π²ΠΈΡ‚ΠΈ ΠΏΡ€ΠΈΠΏΡ€Π΅ΠΌΡƒ ΠΈ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½Ρƒ ΠΎΠ±Ρ€Π°Π΄Ρƒ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‚ΠΊΠ΅, Π° основнС ствари Π·Π° ΠΊΠ²Π°Π½Ρ‚ΠΈΡ‚Π°Ρ‚ΠΈΠ²Π½Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ ΡƒΠ·Π΅Ρ‚Π΅ су Ρƒ ΠΎΠ±Π·ΠΈΡ€ Ρƒ ΠΎΠ²ΠΎΠΌ Ρ‡Π»Π°Π½ΠΊΡƒ, Π° сада јС Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° сС Π²Ρ€Π°Ρ‚ΠΈΠΌΠΎ Π½Π° ΠΊΠ²Π°Π»ΠΈΡ‚Π°Ρ‚ΠΈΠ²Π½Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅ којС смо одвојили Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΊΠΎΡ€Π°ΠΊΠ° ΡƒΠ½Π°Π·Π°Π΄ ΠΎΠ΄ ΠΊΠ²Π°Π½Ρ‚ΠΈΡ‚Π°Ρ‚ΠΈΠ²Π½ΠΈΡ…. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΌΠ΅ΡšΠ°Ρ‚ΠΈ ΠΎΠ²Ρƒ Π±Π΅Π»Π΅ΠΆΠ½ΠΈΡ†Ρƒ ΠΊΠ°ΠΊΠΎ ΠΆΠ΅Π»ΠΈΡ‚Π΅, ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΡ’Π°Π²Π°Ρ˜ΡƒΡ›ΠΈ јС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΠΈΠΌ Π·Π°Π΄Π°Ρ†ΠΈΠΌΠ°, Ρ‚Π°ΠΊΠΎ Π΄Π° ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½Π° ΠΎΠ±Ρ€Π°Π΄Π° ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° ΠΈΠ΄Π΅ Π²Π΅ΠΎΠΌΠ° Π±Ρ€Π·ΠΎ!

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

Π£ основи, Π·Π° ΠΊΠ²Π°Π»ΠΈΡ‚Π°Ρ‚ΠΈΠ²Π½Π΅ ΠΏΠΎΠ΄Π°Ρ‚ΠΊΠ΅, ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ОнС-Ρ…ΠΎΡ‚-Π΅Π½Ρ†ΠΎΠ΄ΠΈΠ½Π³ сС користи Π΄Π° Π±ΠΈ сС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°ΠΎ ΠΈΠ· стринга (ΠΈΠ»ΠΈ ΠΎΠ±Ρ˜Π΅ΠΊΡ‚Π°) Ρƒ Π±Ρ€ΠΎΡ˜. ΠŸΡ€Π΅ Π½Π΅Π³ΠΎ ΡˆΡ‚ΠΎ ΠΏΡ€Π΅Ρ’Π΅ΠΌΠΎ Π½Π° ΠΎΠ²Ρƒ Ρ‚Π°Ρ‡ΠΊΡƒ, Ρ…Π°Ρ˜Π΄Π΅ Π΄Π° користимо Π΄ΠΈΡ˜Π°Π³Ρ€Π°ΠΌ ΠΈ ΠΊΠΎΠ΄ ΠΈΠ·Π½Π°Π΄ Π΄Π° бисмо сС ΠΏΠΎΠ·Π°Π±Π°Π²ΠΈΠ»ΠΈ ΠΏΡ€Π°Π·Π½ΠΈΠΌ врСдностима.

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)

Након ΡˆΡ‚ΠΎ смо ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΎΠ²Π°Π»ΠΈ скуповС ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° Ρƒ јСдан, ΠΊΠΎΠ½Π°Ρ‡Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° користимо Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Ρƒ ΠΏΠΎΠ΄Π°Ρ‚Π°ΠΊΠ° користСћи ΠœΠΈΠ½ΠœΠ°ΠΊΠ‘Ρ†Π°Π»Π΅Ρ€ ΠΈΠ· склСарн Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅. Ово Ρ›Π΅ ΡƒΡ‡ΠΈΠ½ΠΈΡ‚ΠΈ нашС врСдности ΠΈΠ·ΠΌΠ΅Ρ’Ρƒ 0 ΠΈ 1, ΡˆΡ‚ΠΎ Ρ›Π΅ ΠΏΠΎΠΌΠΎΡ›ΠΈ ΠΏΡ€ΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΎΠ±ΡƒΠΊΠ΅ ΠΌΠΎΠ΄Π΅Π»Π° Ρƒ будућности.

from sklearn.preprocessing import MinMaxScaler
min_max_scaler = MinMaxScaler()
new_df = min_max_scaler.fit_transform(new_df)

Ови ΠΏΠΎΠ΄Π°Ρ†ΠΈ су сада спрСмни Π·Π° свС - нСуронскС ΠΌΡ€Π΅ΠΆΠ΅, стандарднС ΠœΠ› Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅, ΠΈΡ‚Π΄.!

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

Π˜Π·Π²ΠΎΡ€: Π²Π²Π².Ρ…Π°Π±Ρ€.Ρ†ΠΎΠΌ

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