\item \subquestionpoints{10} \textbf{Coding problem} Consider a website that wants to predict its daily traffic. The website owners have collected a dataset of past traffic to their website, along with some features which they think are useful in predicting the number of visitors per day. The dataset is split into train/valid sets and the starter code is provided in the following files: \begin{center} \begin{itemize} \item \url{src/poisson/{train,valid}.csv} \item \url{src/poisson/poisson.py} \end{itemize} \end{center} We will apply Poisson regression to model the number of visitors per day. Note that applying Poisson regression in particular assumes that the data follows a Poisson distribution whose natural parameter is a linear combination of the input features (\emph{i.e.,} $\eta = \theta^T x$). In \texttt{src/poisson/poisson.py}, implement Poisson regression for this dataset and use \emph{full batch gradient ascent} to maximize the log-likelihood of $\theta$. For the stopping criterion, check if the change in parameters has a norm smaller than a small value such as $10^{-5}$. Using the trained model, predict the expected counts for the \textbf{validation set}, and create a scatter plot between the true counts vs predicted counts (on the validation set). In the scatter plot, let x-axis be the true count and y-axis be the corresponding predicted expected count. Note that the true counts are integers while the expected counts are generally real values.