Podział danych
Aby właściwie ocenić model, można podzielić dane na zbiór treningowy i testowy. Zbiór treningowy zawiera dane, na których budowany jest model, a zbiór testowy służy do jego oceny. Podział jest losowy, jednak gdy częstość występowania celu jest niska, warto zastosować stratyfikację – tzn. zadbać o to, by oba zbiory zawierały równy odsetek obserwacji docelowych.
W tym ćwiczeniu podzielisz dane ze stratyfikacją i sprawdzisz, czy zbiory treningowy i testowy mają równą częstość występowania celu. Metoda train_test_split została już zaimportowana, a ramki danych X i y są dostępne w twoim środowisku pracy.
To ćwiczenie jest częścią kursu
Wprowadzenie do analizy predykcyjnej w Pythonie
Instrukcje do ćwiczenia
- Podziel te ramki danych za pomocą metody
train_test_splitze stratyfikacją. Upewnij się, że zbiory treningowy i testowy mają ten sam rozmiar oraz równą częstość występowania celu. - Oblicz częstość występowania celu w zbiorze treningowym. Jest to liczba celów w zbiorze treningowym podzielona przez liczbę obserwacji w tym zbiorze.
- Oblicz częstość występowania celu w zbiorze testowym.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Load the partitioning module
from sklearn.model_selection import train_test_split
# Create DataFrames with variables and target
X = basetable.drop("target", 1)
y = basetable["target"]
# Carry out 50-50 partititioning with stratification
X_train, X_test, y_train, y_test = ____(X, y, test_size = ____, stratify = ____)
# Create the final train and test basetables
train = pd.concat([X_train, y_train], axis=1)
test = pd.concat([X_test, y_test], axis=1)
# Check whether train and test have same percentage targets
print(round(sum(train[____])/len(____), 2))
print(round(sum(test[____])/len(____), 2))