Notepad-cheat sheet para sa mabilis na pag-preprocess ng Data

Kadalasan ang mga taong pumapasok sa larangan ng Data Science ay may mas mababa sa makatotohanang mga inaasahan sa kung ano ang naghihintay sa kanila. Maraming tao ang nag-iisip na ngayon ay magsusulat sila ng mga cool na neural network, gagawa ng voice assistant mula sa Iron Man, o matatalo ang lahat sa mga financial market.
Но Ρ€Π°Π±ΠΎΡ‚Π° data Ang scientist ay batay sa data, at isa sa pinakamahalaga at nakakaubos ng oras na aspeto ay ang pagproseso ng data bago ito i-feed sa isang neural network o pag-aralan ito sa isang tiyak na paraan.

Sa artikulong ito, ilalarawan ng aming team kung paano mo mapoproseso ang data nang mabilis at madali gamit ang mga sunud-sunod na tagubilin at code. Sinubukan naming gawing flexible ang code at maaaring magamit para sa iba't ibang dataset.

Maraming mga propesyonal ang maaaring walang mahanap na kakaiba sa artikulong ito, ngunit ang mga baguhan ay makakapag-aral ng bago, at sinumang matagal nang nangangarap na gumawa ng hiwalay na kuwaderno para sa mabilis at nakabalangkas na pagproseso ng data ay maaaring kopyahin ang code at i-format ito para sa kanilang sarili, o i-download ang natapos na notebook mula sa Github.

Natanggap namin ang dataset. Ano ang susunod na gagawin?

Kaya, ang pamantayan: kailangan nating maunawaan kung ano ang ating kinakaharap, ang pangkalahatang larawan. Upang gawin ito, gumagamit kami ng mga panda upang tukuyin lamang ang iba't ibang uri ng data.

import pandas as pd #ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ pandas
import numpy as np  #ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ numpy
df = pd.read_csv("AB_NYC_2019.csv") #Ρ‡ΠΈΡ‚Π°Π΅ΠΌ датасСт ΠΈ записываСм Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ df

df.head(3) #смотрим Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 3 строчки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ выглядят значСния

Notepad-cheat sheet para sa mabilis na pag-preprocess ng Data

df.info() #ДСмонстрируСм ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°Ρ…

Notepad-cheat sheet para sa mabilis na pag-preprocess ng Data

Tingnan natin ang mga halaga ng column:

  1. Ang bilang ba ng mga linya sa bawat hanay ay tumutugma sa kabuuang bilang ng mga linya?
  2. Ano ang kakanyahan ng datos sa bawat hanay?
  3. Aling column ang gusto naming i-target upang makagawa ng mga hula para dito?

Ang mga sagot sa mga tanong na ito ay magbibigay-daan sa iyong pag-aralan ang dataset at halos gumuhit ng plano para sa iyong mga susunod na aksyon.

Gayundin, para sa isang mas malalim na pagtingin sa mga halaga sa bawat hanay, maaari naming gamitin ang pandas describe() function. Gayunpaman, ang kawalan ng function na ito ay hindi ito nagbibigay ng impormasyon tungkol sa mga column na may mga string value. Haharapin natin sila mamaya.

df.describe()

Notepad-cheat sheet para sa mabilis na pag-preprocess ng Data

Magic visualization

Tingnan natin kung saan wala tayong mga halaga:

import seaborn as sns
sns.heatmap(df.isnull(),yticklabels=False,cbar=False,cmap='viridis')

Notepad-cheat sheet para sa mabilis na pag-preprocess ng Data

Ito ay isang maikling hitsura mula sa itaas, ngayon ay lilipat tayo sa mas kawili-wiling mga bagay

Subukan nating hanapin at, kung maaari, alisin ang mga column na may isang value lang sa lahat ng row (hindi sila makakaapekto sa resulta sa anumang paraan):

df = df[[c for c
        in list(df)
        if len(df[c].unique()) > 1]] #ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌ датасСт, оставляя Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… большС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния

Ngayon, pinoprotektahan namin ang aming sarili at ang tagumpay ng aming proyekto mula sa mga duplicate na linya (mga linya na naglalaman ng parehong impormasyon sa parehong pagkakasunud-sunod ng isa sa mga umiiral na linya):

df.drop_duplicates(inplace=True) #Π”Π΅Π»Π°Π΅ΠΌ это, Ссли считаСм Π½ΡƒΠΆΠ½Ρ‹ΠΌ.
                                 #Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ с самого Π½Π°Ρ‡Π°Π»Π° Π½Π΅ стоит.

Hinahati namin ang dataset sa dalawa: ang isa ay may mga qualitative na value, at ang isa ay may quantitative na mga value

Narito kailangan nating gumawa ng isang maliit na paglilinaw: kung ang mga linya na may nawawalang data sa qualitative at quantitative na data ay hindi masyadong nakakaugnay sa isa't isa, kakailanganin nating magpasya kung ano ang ating isinasakripisyo - lahat ng mga linya na may nawawalang data, bahagi lamang ng mga ito, o ilang mga hanay. Kung magkakaugnay ang mga linya, may karapatan kaming hatiin ang dataset sa dalawa. Kung hindi, kakailanganin mo munang harapin ang mga linyang hindi nag-uugnay sa nawawalang data sa qualitative at quantitative, at pagkatapos ay hatiin ang dataset sa dalawa.

df_numerical = df.select_dtypes(include = [np.number])
df_categorical = df.select_dtypes(exclude = [np.number])

Ginagawa namin ito upang gawing mas madali para sa amin na iproseso ang dalawang magkaibang uri ng data na ito - mauunawaan namin sa ibang pagkakataon kung gaano nito pinapadali ang aming buhay.

Nagtatrabaho kami sa dami ng data

Ang unang bagay na dapat nating gawin ay tukuyin kung mayroong "mga haligi ng espiya" sa dami ng data. Tinatawag namin ang mga column na ito dahil ipinapakita nila ang kanilang mga sarili bilang quantitative data, ngunit gumaganap bilang qualitative data.

Paano natin sila makikilala? Siyempre, ang lahat ay nakasalalay sa likas na katangian ng data na iyong sinusuri, ngunit sa pangkalahatan, ang mga naturang column ay maaaring may maliit na natatanging data (sa rehiyon ng 3-10 natatanging mga halaga).

print(df_numerical.nunique())

Kapag natukoy na namin ang mga column ng spy, ililipat namin ang mga ito mula sa quantitative data patungo sa qualitative data:

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

Sa wakas, ganap na naming pinaghiwalay ang quantitative data mula sa qualitative data at ngayon ay magagawa na namin ito ng maayos. Ang unang bagay ay upang maunawaan kung saan mayroon kaming mga walang laman na halaga (NaN, at sa ilang mga kaso 0 ay tatanggapin bilang walang laman na mga halaga).

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

Sa puntong ito, mahalagang maunawaan kung sa aling mga column ang mga zero ay maaaring magpahiwatig ng mga nawawalang halaga: ito ba ay dahil sa kung paano nakolekta ang data? O maaaring nauugnay ito sa mga halaga ng data? Ang mga tanong na ito ay dapat masagot sa isang case-by-case na batayan.

Kaya, kung magpapasya pa rin kami na maaaring wala kaming data kung saan mayroong mga zero, dapat naming palitan ang mga zero ng NaN upang gawing mas madaling gamitin ang nawawalang data na ito sa ibang pagkakataon:

df_numerical[["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° 1", "ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° 2"]] = df_numerical[["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° 1", "ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° 2"]].replace(0, nan)

Ngayon tingnan natin kung saan tayo nawawalang data:

sns.heatmap(df_numerical.isnull(),yticklabels=False,cbar=False,cmap='viridis') # МоТно Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ df_numerical.info()

Notepad-cheat sheet para sa mabilis na pag-preprocess ng Data

Dito ang mga halaga sa loob ng mga column na nawawala ay dapat markahan ng dilaw. At ngayon ang saya ay nagsisimula - kung paano haharapin ang mga halagang ito? Dapat ko bang tanggalin ang mga hilera na may mga halaga o column na ito? O punan ang mga walang laman na halaga na ito ng ilang iba pa?

Narito ang isang tinatayang diagram na makakatulong sa iyong magpasya kung ano ang maaari, sa prinsipyo, gawin sa mga walang laman na halaga:

Notepad-cheat sheet para sa mabilis na pag-preprocess ng Data

0. Alisin ang mga hindi kinakailangang column

df_numerical.drop(labels=["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2"], axis=1, inplace=True)

1. Ang bilang ba ng mga walang laman na halaga sa column na ito ay higit sa 50%?

print(df_numerical.isnull().sum() / df_numerical.shape[0] * 100)

df_numerical.drop(labels=["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2"], axis=1, inplace=True)#УдаляСм, Ссли какая-Ρ‚ΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ‚ большС 50 пустых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

2. Tanggalin ang mga linyang may mga walang laman na halaga

df_numerical.dropna(inplace=True)#УдаляСм строчки с пустыми значСниями, Ссли ΠΏΠΎΡ‚ΠΎΠΌ останСтся достаточно Π΄Π°Π½Π½Ρ‹Ρ… для обучСния

3.1. Paglalagay ng random na halaga

import random #ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ random
df_numerical["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°"].fillna(lambda x: random.choice(df[df[column] != np.nan]["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°"]), inplace=True) #вставляСм Ρ€Π°Π½Π΄ΠΎΠΌΠ½Ρ‹Π΅ значСния Π² пустыС ΠΊΠ»Π΅Ρ‚ΠΊΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

3.2. Pagpasok ng pare-parehong halaga

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. Ipasok ang average o pinakamadalas na halaga

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. Ipasok ang halaga na kinakalkula ng isa pang modelo

Minsan ang mga halaga ay maaaring kalkulahin gamit ang mga modelo ng regression gamit ang mga modelo mula sa sklearn library o iba pang katulad na mga library. Ang aming koponan ay maglalaan ng isang hiwalay na artikulo kung paano ito magagawa sa malapit na hinaharap.

Kaya, sa ngayon, ang salaysay tungkol sa dami ng data ay maaantala, dahil maraming iba pang mga nuances tungkol sa kung paano mas mahusay na gawin ang paghahanda ng data at preprocessing para sa iba't ibang mga gawain, at ang mga pangunahing bagay para sa dami ng data ay isinasaalang-alang sa artikulong ito, at ngayon na ang panahon para bumalik sa qualitative data. na pinaghiwalay namin ng ilang hakbang pabalik mula sa quantitative. Maaari mong baguhin ang notebook na ito ayon sa gusto mo, iangkop ito sa iba't ibang gawain, upang ang paunang pagproseso ng data ay mabilis na mapupunta!

Bilang ng data

Karaniwan, para sa qualitative data, ang One-hot-encoding na paraan ay ginagamit upang i-format ito mula sa isang string (o bagay) patungo sa isang numero. Bago magpatuloy sa puntong ito, gamitin natin ang diagram at code sa itaas upang harapin ang mga walang laman na halaga.

df_categorical.nunique()

sns.heatmap(df_categorical.isnull(),yticklabels=False,cbar=False,cmap='viridis')

Notepad-cheat sheet para sa mabilis na pag-preprocess ng Data

0. Alisin ang mga hindi kinakailangang column

df_categorical.drop(labels=["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2"], axis=1, inplace=True)

1. Ang bilang ba ng mga walang laman na halaga sa column na ito ay higit sa 50%?

print(df_categorical.isnull().sum() / df_numerical.shape[0] * 100)

df_categorical.drop(labels=["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°1","ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°2"], axis=1, inplace=True) #УдаляСм, Ссли какая-Ρ‚ΠΎ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° 
                                                                          #ΠΈΠΌΠ΅Π΅Ρ‚ большС 50% пустых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

2. Tanggalin ang mga linyang may mga walang laman na halaga

df_categorical.dropna(inplace=True)#УдаляСм строчки с пустыми значСниями, 
                                   #Ссли ΠΏΠΎΡ‚ΠΎΠΌ останСтся достаточно Π΄Π°Π½Π½Ρ‹Ρ… для обучСния

3.1. Paglalagay ng random na halaga

import random
df_categorical["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°"].fillna(lambda x: random.choice(df[df[column] != np.nan]["ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°"]), inplace=True)

3.2. Pagpasok ng pare-parehong halaga

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)

Kaya, sa wakas ay mayroon na kaming hawakan sa mga nulls sa qualitative data. Ngayon ay oras na para magsagawa ng one-hot-encoding sa mga value na nasa iyong database. Ang paraang ito ay madalas na ginagamit upang matiyak na ang iyong algorithm ay maaaring matuto mula sa mataas na kalidad na data.

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))

Kaya, sa wakas natapos na namin ang pagproseso ng hiwalay na husay at dami ng data - oras na upang pagsamahin ang mga ito pabalik

new_df = pd.concat([df_numerical,df_categorical], axis=1)

Pagkatapos nating pagsamahin ang mga dataset sa isa, maaari na nating gamitin ang pagbabago ng data gamit ang MinMaxScaler mula sa sklearn library. Gagawin nito ang aming mga halaga sa pagitan ng 0 at 1, na makakatulong kapag sinasanay ang modelo sa hinaharap.

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

Ang data na ito ay handa na ngayon para sa anumang bagay - neural network, karaniwang ML algorithm, atbp.!

Sa artikulong ito, hindi namin isinasaalang-alang ang pagtatrabaho sa data ng serye ng oras, dahil para sa naturang data dapat kang gumamit ng bahagyang magkakaibang mga diskarte sa pagproseso, depende sa iyong gawain. Sa hinaharap, ang aming koponan ay maglalaan ng isang hiwalay na artikulo sa paksang ito, at inaasahan namin na ito ay makapagdala ng isang bagay na kawili-wili, bago at kapaki-pakinabang sa iyong buhay, tulad ng isang ito.

Pinagmulan: www.habr.com

Magdagdag ng komento