Szkolenie i testowanie zbiorów danych

Abyśmy mogli zmierzyć predykcyjną dokładność naszych modeli, musimy użyć pewnych obserwacji, aby zweryfikować nasze wyniki. Oznacza to, że nasze dane zostaną podzielone na trzy różne grupy:

* Dane treningowe

* Dane testowe

* Przewidywanie danych

Dane przewidywane to dane, dla których nie mamy pełnych przypadków, a konkretnie są to okręgi wyborcze, dla których zmienne Vote i Proportion mają  wartości NA. Naszym ostatecznym celem jest dostarczenie przewidywań dla zmiennych Proprotion i Vote tych okręgów wyborczych na podstawie tego, czego możemy się nauczyć od innych okręgów, dla których mamy dane dla tych zmiennych. zrobić pod koniec części. Dane zawierające kompletne przypadki zostaną podzielone na dwie części, dane treningowe i testowe. Dane szkoleniowe służą do wydobywania wiedzy i uczenia się zależności między zmiennymi. Testowanie jest traktowane tak, jakby miało wartości NA dla Proportion i Vote, i tworzymy dla nich prognozy. Te przewidywania są następnie porównywane z rzeczywistymi wartościami w odpowiednich obserwacjach, co pomaga nam zrozumieć, jak dobre są nasze przewidywania w sposób obiektywny, ponieważ te obserwacje nigdy nie są widoczne przez wytrenowane modele. Stworzyliśmy dane przewidywania w poprzedniej sekcji i nazwaliśmy je data_incomplete. Do tworzenia danych treningowych i testowych używamy funkcji sample(). Jako dane wejściowe przyjmie listę liczb, z których wybierze określoną liczbę wartości (size). Lista liczb będzie wynosić od 1 do całkowitej liczby obserwacji dostępnych w danych z kompletnymi przypadkami. Określamy liczbę obserwacji, które zostaną wybrane do danych uczących, jako około 70% całkowitej liczby dostępnych obserwacji i używamy argumentu replalce = FALSE, aby określić, że wybrane obserwacje nie można powielać (unikając zastępowania próbki). Na dane testowe składają się pozostałe 30% obserwacji. Ponieważ sample jest wektorem boolowskim, który zawiera wartość TRUE lub FALSE dla każdej obserwacji, aby określić, czy powinna być uwzględniona, czy nie, możemy zanegować wektor, aby wybrać drugą część danych przez dołączenie znaku minus (-) do wektora binarnego, co w efekcie sprawia, że ​​każda wartość TRUE jest wartością FALSEi odwrotnie. Aby to zrozumieć, spójrzmy na następujący kod:

set.seed(12345)

n<- nrow(data)

sample <- sample(1:n, size  = roud(0.7 * n), replace = FALSE)

data_train <- data[ sample, ]

data_test <- data[-sample]

Gdybyśmy robili ten proces kilka razy, stwierdzilibyśmy, że za każdym razem otrzymujemy różne próbki do zestawów treningowych i testowych, co może nas mylić co do naszych wyników. Dzieje się tak, ponieważ funkcja sample() jest stochastyczna, co oznacza, że ​​użyje generatora liczb pseudolosowych, aby dokonać wyboru za nas (komputery nie mogą generować rzeczywistej losowości, symulują liczby, które wydają się losowe, mimo że nie są, dlatego nazywa się to pseudolosowym). Jeśli chcemy, aby nasz proces był powtarzalny, co oznacza, że ​​za każdym razem, gdy go uruchamiamy, wybierane są dokładnie te same próbki, to musimy określić początkowe ziarno przed zastosowaniem tego procesu do wstępnego uwarunkowania generatora liczb pseudolosowych. Aby to zrobić, musimy przekazać liczbę całkowitą do funkcji set.seed(), tak jak robimy to na początku fragmentu kodu. Argument początkowy musi pozostać niezmienny, aby odtworzyć te same próbki, a gdy jest na miejscu, za każdym razem, gdy generujemy próbkę losową, otrzymujemy tę samą próbkę, aby nasze wyniki były powtarzalne.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *