Wstępne przetwarzanie danych w R: Ultimate Tutorial [2022]
Opublikowany: 2021-03-01W poniższym samouczku dotyczącym wstępnego przetwarzania danych w języku R poznasz podstawy wykonywania wstępnego przetwarzania danych. Ten samouczek wymaga znajomości podstaw języka R i programowania:
Spis treści
1. Krok: Znajdowanie i rozwiązywanie problemów
Wstępne przetwarzanie danych rozpoczniemy w samouczku języka R, najpierw zaimportując zestaw danych. W końcu nie możesz wstępnie przetworzyć danych, jeśli ich nie masz.
W naszym przypadku dane są przechowywane w pliku data.csv w katalogu roboczym. Możesz użyć polecenia setwd („pożądana lokalizacja”) i ustawić katalog roboczy.
Oto jak rozpoczniesz ten proces:
zbiór danych <- read.csv(„Dane.csv”)
Oto nasz zbiór danych:
## | Kraj | Wiek | Pensja | Zakupione | |
## | 1 | Francja | 44 | 72000 | Nie |
## | 2 | Hiszpania | 27 | 48000 | TAk |
## | 3 | Niemcy | 30 | 54000 | Nie |
## | 4 | Hiszpania | 38 | 61000 | Nie |
## | 5 | Niemcy | 40 | NA | TAk |
## | 6 | Francja | 35 | 58000 | TAk |
## | 7 | Hiszpania | NA | 52000 | Nie |
## | 8 | Francja | 48 | 79000 | TAk |
## | 9 | Niemcy | 50 | 83000 | Nie |
## | 10 | Francja | 37 | 67000 | TAk |
Jak widać, w kolumnach Wynagrodzenie i Wiek naszego zbioru danych brakuje wartości. Zidentyfikowaliśmy problem występujący w naszym zbiorze danych, więc możemy teraz zacząć go naprawiać.
Wydaje się, że w naszym zbiorze danych nie występują żadne inne problemy, więc musimy zająć się tylko brakującymi wartościami. Możemy rozwiązać ten problem, zastępując wartości NA średnimi wartościami z odpowiednich kolumn. Oto jak:
dataset$Age <- ifelse(is.na(dataset$Age),
ave(zestaw danych$Wiek, ZABAWA = funkcja(x)
średnia(x, na.rm = PRAWDA)),
zbiór danych $Wiek)
dataset$Salary <- ifelse(is.na(dataset$Salary),
ave(zestaw danych$Wynagrodzenie, ZABAWA = funkcja(x)
średnia(x, na.rm = PRAWDA)),
zbiór danych $ wynagrodzenie)
Zwróć uwagę, jak użyliśmy tutaj funkcji ave(). Pobiera średnią z określonej kolumny, którą wprowadziłeś, gdzie FUN jest funkcją x, która oblicza średnią z wyłączeniem wartości NA (na.rm=TRUE).
w przeciwnym razie,
weź wszystko, co jest w zbiorze danych $Wiek
Użyjemy teraz funkcji mean():
#definiowanie x = 1 2 3
x <- 1:3
#przedstawiamy brakującą wartość
x[1] <- ND
# średnia = ND
średnia(x)
## [1] Nie dotyczy
# średnia = średnia z wyłączeniem wartości NA
średnia(x, na.rm = T)
## [1] 2,5
Po zidentyfikowaniu i naprawieniu problemu nasz zbiór danych wygląda tak:
## | Kraj | Wiek | Pensja | Zakupione | |
## | 1 | Francja | 44 | 72000.00 | Nie |
## | 2 | Hiszpania | 27 | 48000.00 | TAk |
## | 3 | Niemcy | 30 | 54000.00 | Nie |
## | 4 | Hiszpania | 38 | 61000,00 | Nie |
## | 5 | Niemcy | 40 | 63777,78 | TAk |
## | 6 | Francja | 35 | 58000.00 | TAk |
## | 7 | Hiszpania | 38 | 52000.00 | Nie |
## | 8 | Francja | 48 | 7900.00 | TAk |
## | 9 | Niemcy | 50 | 83000.00 | Nie |
## | 10 | Francja | 37 | 67000.00 | TAk |
Przeczytaj także: Możliwości kariery w języku programowania R
2. Krok: Dane kategoryczne
Dane kategoryczne to dane nieliczbowe, które należą do poszczególnych kategorii. Kolumna Kraj w naszym zbiorze danych zawiera dane kategoryczne. Funkcja read.csv() w R uczyniłaby wszystkie zmienne łańcuchowe zmiennymi kategorialnymi. Jednak nie w każdym przypadku możemy z niego korzystać.
Oto jak możesz utworzyć określone zmienne jako zmienne czynnikowe:
zbiór danych $ Kraj = współczynnik (zestaw danych $ Kraj,
poziomy = c('Francja', 'Hiszpania', 'Niemcy'),
etykiety = c(1, 2, 3))
dataset$Purchased = factor(dataset$Purchased,
poziomy = c('Nie', 'Tak'),
etykiety = c(0, 1))
3. Krok: Dzielenie danych
Teraz musimy podzielić nasz zbiór danych na dwa oddzielne zbiory danych. Jeden do trenowania naszego modelu uczenia maszynowego, a drugi do testowania tego samego.
W tym celu najpierw zainstalujemy pakiet caTools (jeśli nie jest dostępny) i dodamy go do naszej biblioteki. Następnie użyjemy funkcji set.seed(), aby upewnić się, że podział jest wykonywany losowo. Użyj następującego kodu:
biblioteka(caNarzędzia)
ziarno(123)
split = sample.split(dataset$Purchased,SplitRatio = 0,8)
training_set = subset(dataset,split == TRUE)
test_set = podzbiór (zestaw danych, podział == FAŁSZ)
Musiałeś zauważyć, że zachowaliśmy stosunek podziału na poziomie 80:20. Dzieje się tak, ponieważ jest to najbardziej konwencjonalny współczynnik podziału dla zestawów uczących i zestawów testowych. Nasza metoda sample.split() pobrała kolumnę i utworzyła tablicę liczbową z losowymi wartościami prawda i fałsz zgodnie ze współczynnikiem podziału.
4. Krok: skalowanie funkcji lub nadmierne dopasowanie
Skalowanie funkcji jest wymagane, gdy różne funkcje w zestawie danych mają różne zakresy. W naszym przypadku kolumny Age i Salary mają różne zakresy, co może powodować problemy w trenowaniu naszego modelu ML.
Kiedy masz cechę o znacznie większym zakresie niż inna cecha, odległość euklidesowa znacznie się zwiększa, powodując, że model podaje błędne wyniki.
Zauważ, że większość bibliotek w R naprawia ten problem automatycznie, ale ważne jest, aby wiedzieć, jak to naprawić. Wykonaj następujące czynności:
zestaw_treningowy[,2:3] = skala(zestaw_szkoleniowy[,2:3])
test_set[,2:3] = skala(test_set[,2:3])
Rozwiąże to problem, a funkcje zestawu szkoleniowego będą miały te same zakresy, minimalizując ryzyko wystąpienia błędów podczas implementacji uczenia maszynowego.
Uzyskaj certyfikat nauk o danych od najlepszych uniwersytetów na świecie. Naucz się programów Executive PG, Advanced Certificate Programs lub Masters Programs, aby przyspieszyć swoją karierę.
Wniosek
Mamy nadzieję, że nasze wstępne przetwarzanie danych w samouczku języka R okazało się pomocne. Najlepiej byłoby zrozumieć samouczek, zanim sam spróbujesz go przetestować. Zrozumienie pojęć jest o wiele ważniejsze niż ich używanie.
Jakie są twoje przemyślenia na temat naszego wstępnego przetwarzania danych w samouczku języka R? Podziel się nimi w komentarzach poniżej.
Jeśli chcesz dowiedzieć się więcej o R, nauce o danych, sprawdź nasz Executive PG in Data Science, który jest stworzony dla pracujących profesjonalistów i oferuje ponad 10 studiów przypadków i projektów, praktyczne warsztaty praktyczne, mentoring z ekspertami branżowymi, 1-na- 1 z mentorami branżowymi, ponad 400 godzin nauki i pomocy w pracy w najlepszych firmach.
W Pythonie polimorfizm odnosi się do ogólnej nazwy funkcji, która może być używana do różnych celów. Ten pomysł jest powszechnie stosowany w koncepcji programowania w Pythonie, która jest zorientowana obiektowo. Typowanie kaczki jest pojęciem polimorfizmu. Wyrażenie pisanie kaczki pochodzi od przysłowia, które mówi, że wszystko, co chodzi, kwaka i pływa jak kaczka, jest nazywane kaczką, niezależnie od tego, co to jest. Mówiąc prościej, oznacza to, że jeśli coś dopasuje swoje zachowanie do czegoś innego, zostanie uznane za członka tej kategorii. Gdy metoda o tej samej nazwie i argumentach jest używana zarówno w klasie pochodnej, jak i w klasie bazowej lub superklasie, mówi się, że metoda klasy pochodnej zastępuje metodę dostarczoną w klasie bazowej. Gdy wywoływana jest nadpisana metoda, zawsze wywoływana jest metoda klasy pochodnej. Metoda użyta w klasie bazowej jest teraz ukryta.Ile rodzajów polimorfizmu występuje w pytonie?
Polimorfizm jest zaimplementowany w Pythonie do kilku celów, takich jak wpisywanie kaczki, przeciążanie operatorów, przeciążanie metod i przesłanianie metod, podobnie jak w innych językach programowania, takich jak Java i C++. Przeciążanie i zastępowanie to dwie podstawowe metody uzyskiwania polimorfizmu.
Klasa z wieloma metodami o tej samej nazwie, ale odrębnymi argumentami jest znana jako przeciążanie metod. Chociaż przeciążanie metod nie jest domyślnie obsługiwane w Pythonie, istnieje wiele technik, które to umożliwiają. Co to jest kaczka na maszynie?
Co to jest przeciążanie i nadpisywanie?
Z drugiej strony Python nie zapewnia przeciążania metod na podstawie typu, ilości lub kolejności parametrów metody. Przeciążanie metod to podejście Pythona do definiowania metody w taki sposób, aby można ją było wywoływać na wiele sposobów. W przeciwieństwie do innych języków programowania, ten jest wyjątkowy.