-
Notifications
You must be signed in to change notification settings - Fork 0
/
global_cache.R
136 lines (124 loc) · 6.67 KB
/
global_cache.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#### Global cached ------------------------
# Here is where all the data and functions gets loaded at the start of a session
# Cached to speed up start up. global.R contains the original calls
# Alberto Sanchez Rodelgo
#### --------------------------------
library(flexdashboard)
library(tidyverse)
library(DT)
library(shinyBS)
library(shinyjs)
library(caret)
library(neuralnet) # neural network for regression
library(rlist) # write list as file
library(radarchart)
#library(shinydashboard)
# variables set up
thisYear <- substr(Sys.Date(),1,4)
if (substr(Sys.Date(),6,7) > '08'){
seasonOffset <- 0
} else {
seasonOffset <- 1
}
thisSeason <- paste0(as.numeric(substr(Sys.Date(),1,4))-seasonOffset,"-",as.numeric(substr(Sys.Date(),1,4))-seasonOffset+1)
# helper functions
source("helpers.R", local=TRUE)$value
source("shiny_server_helpers.R", local=TRUE)$value
# read data
team_stats <- read.csv("data/teamStats.csv") # from write_TeamStats.R
franchises <- read.csv("data/franchisesHistory.csv",stringsAsFactors = FALSE)
team_stats <- merge(team_stats,franchises,by.x="Team",by.y="Franchise",all.x=TRUE)
#
playersHist <- read.csv("data/playersHist.csv", stringsAsFactors = FALSE) # from write_playersHist.R
playersHist <- .rename_PlayerDuplicates(playersHist) # differentiate players with the same name
playersPredictedStats_adjMin <- read.csv("data/playersNewPredicted_Final_adjMin.csv", stringsAsFactors = FALSE) %>%
distinct(Player, .keep_all = TRUE)
playersPredictedStats_adjPer <- read.csv("data/playersNewPredicted_Final_adjPer.csv", stringsAsFactors = FALSE) %>%
distinct(Player, .keep_all = TRUE)
# load neuralnet models
#load("data/modelNeuralnet19_PTS.Rdata")
#nn_Offense <- model$finalModel
#load("data/modelNeuralnet19_PTSA.Rdata")
#nn_Defense <- model$finalModel
load("data/model_Offense_2020.Rdata")
model <- x
nn_Offense <- x$finalModel
load("data/model_Defense_2020.Rdata")
model <- x
nn_Defense <- x$finalModel
# load limits for scaled data. Each trade will trigger a predict() from the selected NNet model
# But scale limits must be kept as originally trained in the model for consistency
team_stats_Off <- read.csv("cache_global/team_stats_Off.csv", stringsAsFactors = FALSE)
team_stats_Def <- read.csv("cache_global/team_stats_Def.csv", stringsAsFactors = FALSE)
# scaleMaxMin_Off <- read.csv("cache_global/scaleMaxMin_Off.csv", stringsAsFactors = FALSE)
# scaleMaxMin_Def <- read.csv("cache_global/scaleMaxMin_Def.csv", stringsAsFactors = FALSE)
# maxs_Off <- scaleMaxMin_Off$maxs
# mins_Off <- scaleMaxMin_Off$mins
# maxs_Def <- scaleMaxMin_Def$maxs
# mins_Def <- scaleMaxMin_Def$mins
# maxs_vector_input <- cbind(maxs_Off,maxs_Def)
# mins_vector_input <- cbind(mins_Off,mins_Def)
# compute teams and players Offense and Defense
#source("code_chunks/source_computeOffenseDefense_2018.R",local=TRUE)
#playersNewPredicted_Final_adjMinPer2 <- select(playersPredictedStats_adjPer, -contains("Per"), -effFG, -effFGA, -effPTS, -effTRB)
#playersNewPredicted_OffDef <- mutate(playersNewPredicted_Final_adjMinPer2, Tm = Player, effMin = 1)
playersPredicted_Off_Def <- read.csv("cache_global/playersPredicted_Off_Def.csv", stringsAsFactors = FALSE)
playersPredicted2 <- merge(playersPredicted_Off_Def,playersPredictedStats_adjMin[,c("Player","Exp","Age","Tm","effMin")], by = "Player") %>%
mutate(plusMinus = Offense - Defense,adjPlusMinus = plusMinus*effMin*100) %>%
group_by(Tm) %>%
mutate(teamPlusMinus = sum(adjPlusMinus,na.rm=TRUE)) %>%
ungroup()
playerDashboard <- read.csv("cache_global/playerDashboard.csv", stringsAsFactors = FALSE) %>%
distinct(Player, .keep_all = TRUE)
playerRanks <- read.csv("cache_global/playerRanks.csv", stringsAsFactors = FALSE) %>%
distinct(Player, .keep_all = TRUE)
playerMax <- summarise_if(playerDashboard, is.numeric, max)
playerMin <- summarise_if(playerDashboard, is.numeric, min)
# tSNE for similiarity and historical evolution of players
tsne_ready_hist <- read.csv("data/tsne_ready_hist.csv", stringsAsFactors = FALSE)
# tSNE for predicted stats in new season
tsne_ready <- read.csv("data/tsne_ready_newSeason.csv", stringsAsFactors = FALSE)
# intialize lists historical t-SNE
teams_list <- sort(unique(tsne_ready_hist$Tm))
ages_list <- sort(unique(tsne_ready_hist$Age))
seasons_list <- sort(unique(tsne_ready_hist$Season))
players_list <- sort(unique(tsne_ready_hist$Player))
skills_list <- names(tsne_ready_hist)[6:(ncol(tsne_ready_hist)-2)]
# Average player
averagePlayer <- read.csv("cache_global/averagePlayer.csv", stringsAsFactors = FALSE)
############################
# Team loads
# Actual Season schedule
realSeasonSchedule <- read.csv("data/realSeasonSchedule.csv",stringsAsFactors = FALSE) # from write_seasonSchedule.R
datesRange <- unique(realSeasonSchedule$Date)
datesRange <- datesRange[which(datesRange>"2018-10-12")]
### Global hyperparameters for Normal distributions
# get game scores from past 7 seasons (since 2009-2010)
gameScores <- read.csv("data/gameScores.csv", stringsAsFactors = FALSE) # write_scoreDifferentials.R
#sigmaHome <- sd(as.numeric(gameScores$pts_home), na.rm = TRUE)
#sigmaAway <- sd(as.numeric(gameScores$pts_away), na.rm = TRUE)
sigma <- sd(c(as.numeric(gameScores$pts_home),as.numeric(gameScores$pts_away)), na.rm = TRUE)
avgHome <- mean(as.numeric(gameScores$pts_home), na.rm = TRUE)
avgAway <- mean(as.numeric(gameScores$pts_away), na.rm = TRUE)
global_mean <- mean(c(as.numeric(gameScores$pts_home),as.numeric(gameScores$pts_away)), na.rm = TRUE)
home_away_factor <- avgHome - avgAway # how many extra points does a team score on average when playing home
# Teams Predicted powers and wins
teamsPredicted <- read.csv("cache_global/teamsPredicted.csv", stringsAsFactors = FALSE)
win_predictions <- read.csv("cache_global/win_predictions.csv", stringsAsFactors = FALSE)
teamDashboard <- read.csv("cache_global/teamDashboard.csv", stringsAsFactors = FALSE)
teamRanks <- read.csv("cache_global/teamRanks.csv", stringsAsFactors = FALSE)
teamStats <- read.csv("cache_global/teamStats.csv", stringsAsFactors = FALSE)
teamStatRanks <- mutate_if(teamStats, is.numeric, function(x) row_number(desc(x)))
teamMax <- summarise_if(teamStats, is.numeric, max)
# t-SNE for teams
tsne_ready_teams <- read.csv("data/tsne_ready_teams.csv", stringsAsFactors = FALSE)
##########################
# Regular Season schedule
conferences <- read.csv("data/nba_conferences.csv", stringsAsFactors = FALSE) # Same as franchises
realSeasonSchedule <- read.csv("data/realSeasonSchedule.csv",stringsAsFactors = FALSE) # from write_seasonSchedule.R
datesRange <- unique(realSeasonSchedule$Date)
datesRange <- datesRange[which(datesRange>"2018-10-12")]
standings <- list.load("cache_global/standings.rds")
games <- read.csv("cache_global/games.csv", stringsAsFactors = FALSE)
###########
source("plots_and_tables.R", local = TRUE)