Akwụkwọ Notepad-cheat maka nhazi data ngwa ngwa

Ọtụtụ mgbe ndị mmadụ na-abanye n'ọhịa nke Sayensị Data na-enwe obere atụmanya nke ihe na-echere ha. Ọtụtụ ndị mmadụ na-eche na ugbu a, ha ga-ede netwọk neural mara mma, mepụta onye enyemaka olu sitere na Iron Man, ma ọ bụ tie onye ọ bụla nọ n'ahịa ego.
Ma rụọ ọrụ data Ọkà mmụta sayensị na-ebute data, na otu n'ime akụkụ kachasị mkpa na nke na-ewe oge bụ ịhazi data ahụ tupu inye ya nri na netwọkụ akwara ma ọ bụ nyochaa ya n'ụzọ ụfọdụ.

N'isiokwu a, ndị otu anyị ga-akọwa otu ị nwere ike isi hazie data ngwa ngwa na ngwa ngwa site na iji ntuziaka nzọụkwụ na koodu. Anyị gbalịrị ime ka koodu ahụ gbanwee nke ọma ma enwere ike iji ya mee ihe dị iche iche.

Ọtụtụ ndị ọkachamara nwere ike ọ gaghị ahụ ihe ọ bụla pụrụ iche n'isiokwu a, ma ndị na-amalite ịmalite ga-enwe ike ịmụta ihe ọhụrụ, na onye ọ bụla nke nwere ogologo nrọ nke ịmepụta akwụkwọ ederede dị iche iche maka nhazi data ngwa ngwa na ahaziri nwere ike iṅomi koodu ahụ ma hazie ya n'onwe ya, ma ọ bụ budata akwụkwọ ndetu emechara na Github.

Anyị natara dataset. Kedu ihe a ga-eme ọzọ?

Ya mere, ọkọlọtọ: anyị kwesịrị ịghọta ihe anyị na-emekọ, foto zuru ezu. Iji mee nke a, anyị na-eji pandas kọwaa naanị ụdị data dị iche iche.

import pandas as pd #импортируем pandas
import numpy as np  #импортируем numpy
df = pd.read_csv("AB_NYC_2019.csv") #читаем датасет и записываем в переменную df

df.head(3) #смотрим на первые 3 строчки, чтобы понять, как выглядят значения

Akwụkwọ Notepad-cheat maka nhazi data ngwa ngwa

df.info() #Демонстрируем информацию о колонках

Akwụkwọ Notepad-cheat maka nhazi data ngwa ngwa

Ka anyị lelee ụkpụrụ kọlụm:

  1. Ọnụọgụ ahịrị dị na kọlụm ọ bụla dabara na ọnụọgụ ọnụọgụgụ?
  2. Kedu ihe bụ isi data dị na kọlụm ọ bụla?
  3. Kedu kọlụm anyị chọrọ ileba anya iji buru amụma maka ya?

Azịza nke ajụjụ ndị a ga-enye gị ohere inyocha dataset wee wepụta atụmatụ maka omume gị ọzọ.

Ọzọkwa, maka ilebakwuo anya ụkpụrụ dị na kọlụm ọ bụla, anyị nwere ike iji pandas kọwaa () ọrụ. Otú ọ dị, mwepu nke ọrụ a bụ na ọ naghị enye ozi gbasara ogidi nwere ụkpụrụ eriri. Anyị ga-emeso ha ma emechaa.

df.describe()

Akwụkwọ Notepad-cheat maka nhazi data ngwa ngwa

Nhụta anwansi

Ka anyị leba anya n'ebe anyị na-enweghị ụkpụrụ ọ bụla:

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

Akwụkwọ Notepad-cheat maka nhazi data ngwa ngwa

Nke a bụ anya dị mkpirikpi site n'elu, ugbu a, anyị ga-aga n'ihu na ihe ndị ọzọ na-adọrọ mmasị

Ka anyị gbalịa ịchọta na, ọ bụrụ na ọ ga-ekwe omume, wepụ ogidi ndị nwere naanị otu uru na ahịrị niile (ha agaghị emetụta nsonaazụ ya n'ụzọ ọ bụla):

df = df[[c for c
        in list(df)
        if len(df[c].unique()) > 1]] #Перезаписываем датасет, оставляя только те колонки, в которых больше одного уникального значения

Ugbu a, anyị na-echebe onwe anyị na ihe ịga nke ọma nke ọrụ anyị site na ahịrị abụọ (ahịrị nwere otu ozi n'otu usoro dị ka otu n'ime ahịrị ndị dị):

df.drop_duplicates(inplace=True) #Делаем это, если считаем нужным.
                                 #В некоторых проектах удалять такие данные с самого начала не стоит.

Anyị na-ekewa dataset ahụ ụzọ abụọ: otu nwere ụkpụrụ qualitative, na nke ọzọ nwere ọnụọgụ ọnụọgụ

N'ebe a, anyị kwesịrị ime ka a obere nkọwa: ma ọ bụrụ na ahịrị na-efu data na qualitative na quantitative data na-adịghị nnọọ njikọ na onye ọ bụla ọzọ, mgbe ahụ, anyị ga-mkpa ikpebi ihe anyị na-achụ àjà - niile ahịrị na-efu data, naanị akụkụ nke ha. ma ọ bụ ụfọdụ ogidi. Ọ bụrụ na ejiri ahịrị ahịrị ejikọta, mgbe ahụ anyị nwere ikike ọ bụla ikewa dataset ahụ ụzọ abụọ. Ma ọ bụghị ya, ị ga-ebu ụzọ mee ihe na ahịrị ndị na-adịghị ejikọta data efu na qualitative na quantitative, na mgbe ahụ kewaa dataset abụọ.

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

Anyị na-eme nke a iji mee ka ọ dịrị anyị mfe ịhazi ụdị data abụọ a dị iche iche - emechaa anyị ga-aghọta otú nke a si eme ka ndụ anyị dịkwuo mfe.

Anyị na-arụ ọrụ na quantitative data

Ihe mbụ anyị kwesịrị ime bụ ikpebi ma enwere "ogidi ndị nledo" na data quantitative. Anyị na-akpọ ogidi ndị a n'ihi na ha gosipụtara onwe ha dị ka data ọnụọgụ, ma na-eme dị ka data qualitative.

Olee otú anyị si akọwa ha? N'ezie, ihe niile dabere na ọdịdị nke data ị na-enyocha, ma n'ozuzu ogidi ndị dị otú ahụ nwere ike inwe ntakịrị data pụrụ iche (na mpaghara nke 3-10 ụkpụrụ pụrụ iche).

print(df_numerical.nunique())

Ozugbo anyị chọpụtachara kọlụm nledo, anyị ga-ebuga ha site na data ọnụọgụ gaa na data qualitative:

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']) #добавляем третью колонку-шпион в качественные данные

N'ikpeazụ, anyị kewapụrụ kpamkpam data ọnụọgụ na data qualitative ma ugbu a anyị nwere ike iji ya rụọ ọrụ nke ọma. Ihe mbụ bụ ịghọta ebe anyị nwere ụkpụrụ efu (NaN, na n'ọnọdụ ụfọdụ, a ga-anabata 0 dị ka ụkpụrụ efu).

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

N'oge a, ọ dị mkpa ịghọta na ogidi zeros nwere ike igosi ụkpụrụ efu: nke a ọ bụ n'ihi otu esi chịkọta data ahụ? Ma ọ bụ ọ nwere ike jikọta ya na ụkpụrụ data? A ghaghị ịza ajụjụ ndị a n'otu n'otu n'otu n'otu.

Yabụ, ọ bụrụ na anyị ka kpebie na anyị nwere ike na-efu data ebe efu, anyị kwesịrị iji NaN dochie zeros iji mee ka ọ dịkwuo mfe iji data furu efu rụọ ọrụ ma emechaa:

df_numerical[["колонка 1", "колонка 2"]] = df_numerical[["колонка 1", "колонка 2"]].replace(0, nan)

Ugbu a, ka anyị hụ ebe data na-efu anyị:

sns.heatmap(df_numerical.isnull(),yticklabels=False,cbar=False,cmap='viridis') # Можно также воспользоваться df_numerical.info()

Akwụkwọ Notepad-cheat maka nhazi data ngwa ngwa

N'ebe a, ụkpụrụ ndị ahụ dị n'ime ogidi ndị na-efu kwesịrị ka edo edo edo. Ma ugbu a, ihe ọchị na-amalite - otu esi emeso ụkpụrụ ndị a? Ekwesịrị m ihichapụ ahịrị ndị nwere ụkpụrụ ma ọ bụ kọlụm ndị a? Ma ọ bụ mejupụta ụkpụrụ efu ndị a na ụfọdụ ndị ọzọ?

Nke a bụ eserese dị nso nke nwere ike inyere gị aka ikpebi ihe enwere ike, na ụkpụrụ, iji ụkpụrụ efu mee:

Akwụkwọ Notepad-cheat maka nhazi data ngwa ngwa

0. Wepu ogidi ndị na-adịghị mkpa

df_numerical.drop(labels=["колонка1","колонка2"], axis=1, inplace=True)

1. Ọnụ ọgụgụ nke uru efu na kọlụm a ọ karịrị 50%?

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

df_numerical.drop(labels=["колонка1","колонка2"], axis=1, inplace=True)#Удаляем, если какая-то колонка имеет больше 50 пустых значений

2. Hichapụ ahịrị na ụkpụrụ efu

df_numerical.dropna(inplace=True)#Удаляем строчки с пустыми значениями, если потом останется достаточно данных для обучения

3.1. Ịtinye uru enweghị usoro

import random #импортируем random
df_numerical["колонка"].fillna(lambda x: random.choice(df[df[column] != np.nan]["колонка"]), inplace=True) #вставляем рандомные значения в пустые клетки таблицы

3.2. Ịtinye uru mgbe niile

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. Fanye nkezi ma ọ bụ uru na-adịkarị

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. Tinye uru nke ụdị ọzọ gbakọrọ

Mgbe ụfọdụ enwere ike gbakọọ ụkpụrụ site na iji ụdị regression site na iji ụdị sitere na ọba akwụkwọ sklearn ma ọ bụ ọba akwụkwọ ndị ọzọ yiri ya. Ndị otu anyị ga-ewepụta akụkọ dị iche maka otu a ga-esi mee nke a n'ọdịnihu dị nso.

Yabụ, maka ugbu a, a ga-akwụsị akụkọ banyere data ọnụọgụ, n'ihi na enwere ọtụtụ nuances ndị ọzọ gbasara otu esi eme nkwadebe data na nhazi maka ọrụ dị iche iche, na etinyere ihe ndị bụ isi maka data ọnụọgụ n'ime akụkọ a, yana ugbu a bụ oge ịlaghachi na data qualitative nke anyị kewapụrụ ọtụtụ nzọụkwụ azụ na nke ọnụọgụ. Ị nwere ike ịgbanwe akwụkwọ ndetu a ka masịrị gị, na-emegharị ya na ọrụ dị iche iche, ka nhazi data wee na-aga ngwa ngwa!

Data bara uru

N'ụzọ bụ isi, maka data qualitative, a na-eji usoro ngbanwe One-hot-encoding iji hazie ya site na eriri (ma ọ bụ ihe) gaa na ọnụọgụ. Tupu ịga n'ihu na ebe a, ka anyị jiri eserese na koodu dị n'elu mee ihe maka ụkpụrụ efu.

df_categorical.nunique()

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

Akwụkwọ Notepad-cheat maka nhazi data ngwa ngwa

0. Wepu ogidi ndị na-adịghị mkpa

df_categorical.drop(labels=["колонка1","колонка2"], axis=1, inplace=True)

1. Ọnụ ọgụgụ nke uru efu na kọlụm a ọ karịrị 50%?

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

df_categorical.drop(labels=["колонка1","колонка2"], axis=1, inplace=True) #Удаляем, если какая-то колонка 
                                                                          #имеет больше 50% пустых значений

2. Hichapụ ahịrị na ụkpụrụ efu

df_categorical.dropna(inplace=True)#Удаляем строчки с пустыми значениями, 
                                   #если потом останется достаточно данных для обучения

3.1. Ịtinye uru enweghị usoro

import random
df_categorical["колонка"].fillna(lambda x: random.choice(df[df[column] != np.nan]["колонка"]), inplace=True)

3.2. Ịtinye uru mgbe niile

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)

Yabụ, anyị emechaala nweta aka na nulls na qualitative data. Ugbu a ọ bụ oge ịme koodu ntinye ọkụ na ụkpụrụ ndị dị na nchekwa data gị. A na-ejikarị usoro a eme ihe iji hụ na algọridim gị nwere ike ịmụta site na data dị elu.

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

Yabụ, anyị emechaala nhazi data nha na ọnụọgụ dị iche iche - oge iji jikọta ha azụ

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

Mgbe anyị jikọtara datasets ọnụ ka ọ bụrụ otu, anyị nwere ike mechaa jiri MinMaxScaler si na ọba akwụkwọ sklearn mee mgbanwe data. Nke a ga-eme ka ụkpụrụ anyị dị n'etiti 0 na 1, nke ga-enyere aka mgbe ịzụrụ ihe nlereanya n'ọdịnihu.

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

Nke a data dị njikere ugbu a maka ihe ọ bụla - neural netwọk, ọkọlọtọ ML algọridim, wdg!

N'isiokwu a, anyị eburu n'uche na-arụ ọrụ na data usoro oge, ebe ọ bụ na maka data dị otú ahụ, ị ​​​​kwesịrị iji usoro nhazi dị iche iche dị iche iche, dabere na ọrụ gị. N'ọdịnihu, ndị otu anyị ga-ewepụta isiokwu dị iche na isiokwu a, anyị na-atụkwa anya na ọ ga-enwe ike iweta ihe na-adọrọ mmasị, ọhụrụ na nke bara uru na ndụ gị, dị ka nke a.

isi: www.habr.com

Tinye a comment