library(dplyr)
library(data.table)
library(bit64)
library(ranger)
library(ggplot2)
library(tidyr)

train <- fread("../input/train.csv", integer64 = "character", showProgress = FALSE)

train %>% filter(x >1, x <1.25, y >2.5, y < 2.75) -> sample
rm(train)

sample$place_id <- as.factor(sample$place_id)

sampletrain = sample[sample$time < 7.3e5,]
sampletest = sample[sample$time >= 7.3e5,] 

sampletrain <- sampletrain %>% 
  mutate(minute = time %% (24*60),
         hour = round(minute / 60),
         day = (time-minute)/(24*60),
         wday = day %% 7)

sampletest <- sampletest %>% 
  mutate(minute = time %% (24*60),
         hour = round(minute / 60),
         day = (time-minute)/(24*60),
         wday = day %% 7)

head(sampletrain)

model_rf <- ranger(place_id ~ x + y + hour + wday + accuracy,
                   sampletrain,
                   num.trees = 100,
                   write.forest = TRUE,
                   importance = "impurity")

pred = predict(model_rf, sampletest)
predictions = pred$predictions
print('Accuracy =')
mean(predictions == sampletest$place_id) 