# This script will copy a couple example photos from the input directory to the output directory

library("jpeg")
library("raster")
library("colorspace")
library(readr)
library("e1071")
library("irlba")
library("xgboost")
library("Matrix")

train_photo_to_biz_ids <- read_csv("../input/train_photo_to_biz_ids.csv")
train<-read_csv("../input/train.csv")
train_photo_to_biz_ids<-train_photo_to_biz_ids[order(train$business_id),]
n<- nrow(train_photo_to_biz_ids)
print(n)

c<-list()
for (i in 1:floor(nrow(train)/10)) {
     cmd <- paste0("../input/train_photos/", 
     train_photo_to_biz_ids$photo_id[i],
    ".jpg")
     c[[i]]<-readJPEG(cmd)
     
}

train1<-as.data.frame(lapply(c,function(x) cbind(mean(x[,,1],na.rm=T),
             max(x[,,1],na.rm=T),min(x[,,1],na.rm=TRUE),
             mean(x[,,2],na.rm=T),
             max(x[,,2],na.rm=T),min(x[,,2],na.rm=T),
             mean(x[,,3],na.rm=T),
             max(x[,,3],na.rm=T),min(x[,,3],na.rm=T))))

str(train1)
str(train)
length(unique(train$business_id))
length(unique(train_photo_to_biz_ids$photo_id))
length(unique(train$labels))
length(unique(sapply(train$labels,function(x) 
prod((as.numeric(unlist(strsplit(x," ")))-0.134)))))

train<-cbind(train,train1)
train<-as.data.frame(cbind(newlabels=factor(train$labels,labels=c(1:172)),train))

str(train)


train$rowsum<-rowSums(train[,-c(1:3)])
train$zsum<-rowSums(train[,-c(1:3)]==0)

sum(is.na(train))
train<-as.data.frame(train)
train<-na.omit(train)
dtrain<-xgb.DMatrix(data=sparse.model.matrix(~.,train[,-c(1:3)]),label=(as.numeric(train$newlabels)-1))
param <- list(  objective           = "multi:softprob", 
                booster             = "gbtree",
                eval_metric         = "merror",
                eta                 = 0.2,
                max_depth           = 25,
                subsample           = 0.6,
                colsample_bytree    = 0.7
                
)

model<-xgb.cv(dtrain,nrounds=400,verbose=T,params=param,nfold=5,
                                   early.stop.round = 15)



