5.7 KiB
5.7 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 puste pola
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