Artur Suchwałko

szkolenia: ryzyko kredytowe, data mining, statystyka, analiza danych

Sep
28

Szybkość operacji na macierzach i ramkach danych

Posted under analiza danych, GNU R by Artur Suchwałko

Czy podstawowe operacje na ramkach danych i macierzach wykonywane są przez R z taką samą szybkością? To oczywiście zależy od rodzaju operacji. Zrobiłem dzisiaj prosty eksperyment polegający na wybieraniu kolumn o tych samych numerach z macierzy i z ramki danych oraz mierzeniu czasu tych operacji.

To nie jest całkiem akademicki problem. W przypadku dużych zadań obliczeniowych różnice w efektywności reprezentacji danych mogą mieć znaczenie. Podobnie podczas obróbki wstępnej danych do dalszych analiz statystycznych, czy wykonywanych metodami data mining. W tej sytuacji podstawowym obiektem jest ramka danych, ale może okazać się, że pewne operacje wykonywane są szybciej na innego rodzaju obiektach.

x.macierz <- matrix(rnorm(5000*1000), 5000, 1000)
x.ramka.danych <- as.data.frame(x.macierz)


podzbior <- sample(1:1000, 1000, replace=T) # losujemy numery kolumn


czas.pocz <- proc.time()
for (i in 1:10) x.macierz[, podzbior] -> y # wybieramy kolumny
proc.time() - czas.pocz


czas.pocz <- proc.time()
for (i in 1:10) x.ramka.danych[, podzbior] -> y
proc.time() - czas.pocz

A czy w przypadku wyboru wierszy zamiast kolumn szybsza okaże się ta sama reprezentacja danych?

Przy okazji, jak widać z przykładu, macierz na ramkę danych konwertuje się funkcją as.data.frame. Ramkę danych na macierz przekształca się korzystając z as.matrix albo data.matrix.



szkolenia | data mining | analiza danych | statystyka | system statystyczny R | predictive modeling

prognozowanie | credit scoring | ryzyko kredytowe | programowanie | eksploracyjna analiza danych

analiza skupień | klasyfikacja | wizualizacja | darmowe oprogramowanie statystyczne | Wrocław