ium_s449288/lab2/02_zadanie.ipynb

5.8 KiB

1. Pobieramy wybrany zbiór

!pip install --user kaggle 
!pip install --user pandas
!kaggle datasets download -d mterzolo/lego-sets
!unzip -o lego-sets.zip

2. Dokonujemy inspekcji danych

!pip install pandas
!wc -l lego_sets.csv
!head -n 5 lego_sets.csv # duzo tekstu w niektorych kolumnach...
import pandas as pd
lego = pd.read_csv('lego_sets.csv')
lego # wglad w strukture elementow i klasy, wielkosc itd.
lego.describe(include='all') # srednia, odchylenie standardowe itd.
lego["theme_name"].value_counts() # rozklad czestosci dla przykladowej klasy (tematyka zestawu)

3. Preprocessing

!grep -P "^$" -n lego_sets.csv # puste linie - nie ma
!grep -P ",," -n lego_sets.csv # puste pola
# usuwamy przyklady z pustymi polami
lego_all = pd.read_csv('lego_sets.csv').dropna()
lego_all.to_csv('lego_sets_clean.csv', index = None, header=True)
lego_clean = pd.read_csv('lego_sets_clean.csv')
lego_clean

4. Normalizacja

!pip install --user numpy
import numpy as np

# list_price moze byc do dwoch miejsc po przecinku
lego_clean['list_price'] = lego_clean['list_price'].round(2)

# num_reviews, piece_count i prod_id moga byc wartosciami calkowitymi
lego_clean['num_reviews'] = lego_clean['num_reviews'].apply(np.int64)
lego_clean['piece_count'] = lego_clean['piece_count'].apply(np.int64)
lego_clean['prod_id'] = lego_clean['prod_id'].apply(np.int64)

# czysto dla przykladu normalizujemy pozostale floaty (chociaz nie trzeba, wszystkie juz sa w tej samej skali)
lego_clean['play_star_rating'] = (lego_clean['play_star_rating']  - lego_clean['play_star_rating'].min() ) / (lego_clean['play_star_rating'].max()  - lego_clean['play_star_rating'].min())
lego_clean['star_rating'] = (lego_clean['star_rating']  - lego_clean['star_rating'].min() ) / (lego_clean['star_rating'].max()  - lego_clean['star_rating'].min())
lego_clean['val_star_rating'] = (lego_clean['val_star_rating']  - lego_clean['val_star_rating'].min() ) / (lego_clean['val_star_rating'].max()  - lego_clean['val_star_rating'].min())

lego_clean.to_csv('lego_sets_clean_normalised.csv', index = None, header=True)
lego_clean_normalised = pd.read_csv('lego_sets_clean_normalised.csv')
lego_clean_normalised

5. Podział na podzbiory

!pip install --user sklearn
from sklearn.model_selection import train_test_split

# pierwszy podzial, wydzielamy zbior treningowy
lego_train, lego_rem = train_test_split(lego_clean_normalised, train_size=0.8, random_state=1)

# drugi podział, wydzielamy walidacyjny i testowy
lego_valid, lego_test = train_test_split(lego_rem, test_size=0.5, random_state=1)
lego_train
lego_valid
lego_test