Sobes.tech
Middle — Senior

Hogyan kezeljük a hiányzó értékeket és a kategóriás jellemzőket a modell tanítása előtt?

sobes.tech MI

Válasz az MI-től

A hiányzó értékek és a kategóriás jellemzők kezelése fontos lépés az adatok előkészítésében a gépi tanulási modellek tanításához.

Hiányzó értékek az adatokban:

  • Sorok vagy oszlopok törlése: ha kevés hiányzó érték van, azokat a megfelelő sorokat vagy oszlopokat törölhetjük.
  • Értékek kitöltése: gyakran használják az átlagot, mediánt, módot vagy egy speciális értéket (pl. "Ismeretlen"). Idősorok esetén lineáris vagy fordított interpoláció alkalmazható.
  • Modellek használata: néha a hiányzó értékeket más modellek előrejelzéseivel töltik ki.

Kategóriás jellemzők:

  • Címke kódolás: minden kategóriának numerikus kódot rendel. Rendezett kategóriákhoz alkalmas.
  • One-Hot kódolás: bináris jellemzőket hoz létre minden kategóriához. Nem rendezett kategóriákhoz jó.
  • Cél szerinti kódolás: a kategóriákat a célváltozó átlagával helyettesíti, de óvatosnak kell lenni az adat szivárgásának elkerülése érdekében.

Python példával pandas és scikit-learn használatával:

import pandas as pd
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import OneHotEncoder

# Példa adatok
data = pd.DataFrame({
    'age': [25, 30, None, 22],
    'city': ['Moscow', 'SPB', 'Moscow', None]
})

# Hiányzó értékek kitöltése mediánnal
imputer = SimpleImputer(strategy='median')
data['age'] = imputer.fit_transform(data[['age']])

# Hiányzó értékek kitöltése móddal
imputer_cat = SimpleImputer(strategy='most_frequent')
data['city'] = imputer_cat.fit_transform(data[['city']])

# One-Hot kódolás
encoder = OneHotEncoder(sparse=False, handle_unknown='ignore')
encoded_cities = encoder.fit_transform(data[['city']])

encoded_df = pd.DataFrame(encoded_cities, columns=encoder.get_feature_names_out(['city']))

# Végső adatkeret
result = pd.concat([data.drop('city', axis=1), encoded_df], axis=1)
print(result)

A helyes hiányzó értékek és kategóriás jellemzők kezelése javítja a modell minőségét és elkerüli a tanulási hibákat.