{ "cells": [ { "cell_type": "markdown", "id": "c7938b37", "metadata": {}, "source": [ "Now that I have the data, it is time to train a model to learn how to create these tiers. As I am going through the fastai course (specifically the Tabular section), I will use the fastai library to train a neural network, as well as their recommended Random Forest approach to see which performs best. " ] }, { "cell_type": "code", "execution_count": 2, "id": "6e9599ba", "metadata": {}, "outputs": [], "source": [ "from fastai.tabular.all import *\n", "from sklearn.tree import DecisionTreeRegressor, export_graphviz\n", "from sklearn.ensemble import RandomForestRegressor\n", "from scipy.cluster import hierarchy as hc\n", "import graphviz\n", "import os\n", "from dtreeviz.trees import *\n", "from treeinterpreter import treeinterpreter\n", "from waterfall_chart import plot as waterfall\n", "from sklearn.inspection import plot_partial_dependence\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "from sklearn.metrics import confusion_matrix" ] }, { "cell_type": "markdown", "id": "eac4bcb3", "metadata": {}, "source": [ "# Load CSV into Fastai Dataloaders and Train/Valid Splits" ] }, { "cell_type": "markdown", "id": "e804b4f8", "metadata": {}, "source": [ "I will use FastAis dataloaders to easily load, normalize, and split the data for future training. \n", "I also export the train and valid datasets to try out with the Decision Trees/Random Forest approach." ] }, { "cell_type": "code", "execution_count": 143, "id": "a5c98335", "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv(\"rookie_year.csv\")\n", "splits = RandomSplitter(valid_pct=0.2)(range_of(df))" ] }, { "cell_type": "markdown", "id": "3b41b614", "metadata": {}, "source": [ "I've decided to use the following categories: Completions, Attempts, Yards, Completion Percentage, Touchdowns, Interceptions, Yards/Game, and Sacks to feed the model. " ] }, { "cell_type": "code", "execution_count": 144, "id": "b6df7e2a", "metadata": {}, "outputs": [], "source": [ "to = TabularPandas(df,\n", " cont_names=[\"Cmp\", \"Att\", \"Yds\", \"Cmp%\", \"TD\", \"Int\", \"Y/G\", \"Sk\"],\n", " y_names=\"Tier\",\n", " procs=[FillMissing, Normalize],\n", " splits=splits\n", " )" ] }, { "cell_type": "code", "execution_count": 145, "id": "2994daa6", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CmpAttYdsCmp%TDIntY/GSkTier
23947.098.0530.048.0000003.02.0132.50000018.0Below-Average Career QB
293255.0476.02894.053.59999811.022.0192.89999438.0Below-Average Career QB
26752.0126.0716.041.2999998.013.089.50000020.0Below-Average Career QB
98169.0320.02074.052.79999910.012.0172.80000328.0Average Career QB
32282.0161.0864.050.9000024.09.0123.40000215.0Below-Average Career QB
5173.0296.02210.058.40000220.06.0200.89999410.0Elite Career QB
40158.0328.02158.048.20000119.016.0154.10000636.0Above Average Career QB
1187.0194.01126.044.7999996.013.0112.59999814.0Elite Career QB
41166.0346.02183.048.00000018.021.0155.89999447.0Above Average Career QB
288178.0261.01694.068.1999978.07.024.20000126.0Below-Average Career QB
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "to.show()" ] }, { "cell_type": "code", "execution_count": 6, "id": "b4855366", "metadata": {}, "outputs": [], "source": [ "dls = to.dataloaders(bs=64)" ] }, { "cell_type": "code", "execution_count": 18, "id": "1126b4b4", "metadata": {}, "outputs": [], "source": [ "# Train Valid Split\n", "xs,y = to.train.xs,to.train.y \n", "valid_xs,valid_y = to.valid.xs,to.valid.y" ] }, { "cell_type": "markdown", "id": "d77e5d80", "metadata": {}, "source": [ "# Decision Trees/Random Forests" ] }, { "cell_type": "markdown", "id": "8bb4b750", "metadata": {}, "source": [ "Fastai Recommends to at least try this approach first to see the performance since they are easier to work with, train, and understand than neural networks. " ] }, { "cell_type": "code", "execution_count": 19, "id": "065dc50c", "metadata": {}, "outputs": [], "source": [ "# Helper functions for Tree Visualization\n", "os.environ[\"PATH\"] += os.pathsep + 'C:/Program Files (x86)/Graphviz/bin/'\n", "def draw_tree(t, df, size=10, ratio=0.6, precision=0, **kwargs):\n", " s=export_graphviz(t, out_file=None, feature_names=df.columns, filled=True, rounded=True,\n", " special_characters=True, rotate=False, precision=precision, **kwargs)\n", " return graphviz.Source(re.sub('Tree {', f'Tree {{ size={size}; ratio={ratio}', s))\n", "\n", "def cluster_columns(df, figsize=(10,6), font_size=12):\n", " corr = np.round(scipy.stats.spearmanr(df).correlation, 4)\n", " corr_condensed = hc.distance.squareform(1-corr)\n", " z = hc.linkage(corr_condensed, method='average')\n", " fig = plt.figure(figsize=figsize)\n", " hc.dendrogram(z, labels=df.columns, orientation='left', leaf_font_size=font_size)\n", " plt.show()" ] }, { "cell_type": "markdown", "id": "0f172991", "metadata": {}, "source": [ "### Simple Decision Tree with 4 leaf nodes" ] }, { "cell_type": "code", "execution_count": 20, "id": "f0341db8", "metadata": {}, "outputs": [], "source": [ "m = DecisionTreeRegressor(max_leaf_nodes=4)\n", "m.fit(xs, y);" ] }, { "cell_type": "code", "execution_count": 21, "id": "cf217221", "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "Tree\n", "\n", "\n", "\n", "0\n", "\n", "TD ≤ -0.33\n", "squared_error = 0.72\n", "samples = 325\n", "value = 1.49\n", "\n", "\n", "\n", "1\n", "\n", "squared_error = 0.58\n", "samples = 151\n", "value = 1.71\n", "\n", "\n", "\n", "0->1\n", "\n", "\n", "True\n", "\n", "\n", "\n", "2\n", "\n", "Cmp% ≤ 0.71\n", "squared_error = 0.77\n", "samples = 174\n", "value = 1.3\n", "\n", "\n", "\n", "0->2\n", "\n", "\n", "False\n", "\n", "\n", "\n", "3\n", "\n", "TD ≤ 1.47\n", "squared_error = 0.72\n", "samples = 108\n", "value = 1.18\n", "\n", "\n", "\n", "2->3\n", "\n", "\n", "\n", "\n", "\n", "4\n", "\n", "squared_error = 0.8\n", "samples = 66\n", "value = 1.5\n", "\n", "\n", "\n", "2->4\n", "\n", "\n", "\n", "\n", "\n", "5\n", "\n", "squared_error = 0.68\n", "samples = 102\n", "value = 1.25\n", "\n", "\n", "\n", "3->5\n", "\n", "\n", "\n", "\n", "\n", "6\n", "\n", "squared_error = 0.0\n", "samples = 6\n", "value = 0.0\n", "\n", "\n", "\n", "3->6\n", "\n", "\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "draw_tree(m, xs, size=10, leaves_parallel=True, precision=2)" ] }, { "cell_type": "markdown", "id": "588f5cff", "metadata": {}, "source": [ "Similar Visualization, but with the datapoints" ] }, { "cell_type": "code", "execution_count": 23, "id": "e3434720", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:450: UserWarning: X does not have valid feature names, but DecisionTreeRegressor was fitted with feature names\n", " warnings.warn(\n" ] }, { "data": { "image/svg+xml": [ "\n", "\n", "G\n", "\n", "\n", "\n", "node3\n", "\n", " \n", " \n", " \n", " \n", " 2022-06-19T13:52:00.759099\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.5.1, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "leaf5\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2022-06-19T13:52:01.105098\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.5.1, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "node3->leaf5\n", "\n", "\n", "\n", "\n", "\n", "leaf6\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2022-06-19T13:52:01.170127\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.5.1, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "node3->leaf6\n", "\n", "\n", "\n", "\n", "\n", "leaf4\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2022-06-19T13:52:01.239114\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.5.1, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "node2\n", "\n", " \n", " \n", " \n", " \n", " 2022-06-19T13:52:00.863127\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.5.1, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "node2->node3\n", "\n", "\n", "\n", "\n", "\n", "node2->leaf4\n", "\n", "\n", "\n", "\n", "\n", "node0\n", "\n", " \n", " \n", " \n", " \n", " 2022-06-19T13:52:00.953136\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.5.1, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "node0->node2\n", "\n", "\n", ">\n", "\n", "\n", "\n", "leaf1\n", "\n", "\n", " \n", " \n", " \n", " \n", " 2022-06-19T13:52:01.037101\n", " image/svg+xml\n", " \n", " \n", " Matplotlib v3.5.1, https://matplotlib.org/\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "\n", "\n", "\n", "node0->leaf1\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "samp_idx = np.random.permutation(len(y))[:500]\n", "dtreeviz(m, xs.iloc[samp_idx], y.iloc[samp_idx], xs.columns, \"Tier\",\n", " fontname='DejaVu Sans', scale=2, label_fontsize=10,\n", " orientation='LR')" ] }, { "cell_type": "code", "execution_count": 24, "id": "28ce0ea8", "metadata": {}, "outputs": [], "source": [ "def r_mse(pred,y): return round(math.sqrt(((pred-y)**2).mean()), 6)\n", "def m_rmse(m, xs, y): return r_mse(m.predict(xs), y)" ] }, { "cell_type": "code", "execution_count": 25, "id": "155d9325", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "325" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(xs)" ] }, { "cell_type": "markdown", "id": "e4b30628", "metadata": {}, "source": [ "### Use arbitraly big Decision Tree" ] }, { "cell_type": "code", "execution_count": 26, "id": "cf682f74", "metadata": {}, "outputs": [], "source": [ "m = DecisionTreeRegressor()\n", "m.fit(xs, y);" ] }, { "cell_type": "code", "execution_count": 28, "id": "49ee9105", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.0, 1.300522)" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m_rmse(m, xs, y), m_rmse(m, valid_xs, valid_y)" ] }, { "cell_type": "markdown", "id": "73d2d181", "metadata": {}, "source": [ "Train Error is 0, but valid error is high (definition of overfitting). Here is why:" ] }, { "cell_type": "code", "execution_count": 29, "id": "f6c3c51c", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(124, 325)" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m.get_n_leaves(), len(xs)" ] }, { "cell_type": "markdown", "id": "861edf2e", "metadata": {}, "source": [ "There are too many leaves compared to datapoints, need to have less so it can generalize more... Time for random forests to do this!" ] }, { "cell_type": "markdown", "id": "d816c4a7", "metadata": {}, "source": [ "### Random Forests" ] }, { "cell_type": "markdown", "id": "712c7fd5", "metadata": {}, "source": [ "Use the random forest approach with 40 \"estimators\" (random trees) which will be averaged (called bagging). " ] }, { "cell_type": "code", "execution_count": 88, "id": "935e23b3", "metadata": {}, "outputs": [], "source": [ "def rf(xs, y, n_estimators=40, max_samples=len(xs),\n", " max_features=0.5, min_samples_leaf=5, **kwargs):\n", " m = RandomForestRegressor(n_jobs=-1, n_estimators=n_estimators,\n", " max_samples=max_samples, max_features=max_features,\n", " min_samples_leaf=min_samples_leaf, oob_score=True)\n", " m.fit(xs, y)\n", " return m" ] }, { "cell_type": "code", "execution_count": 89, "id": "8e50772a", "metadata": {}, "outputs": [], "source": [ "m = rf(xs, y)" ] }, { "cell_type": "code", "execution_count": 90, "id": "2762c7e7", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.617003, 0.841323)" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m_rmse(m, xs, y), m_rmse(m, valid_xs, valid_y)" ] }, { "cell_type": "markdown", "id": "82bd1adf", "metadata": {}, "source": [ "It looks like the error is much better. Now I will check how many estimators to use..." ] }, { "cell_type": "code", "execution_count": 91, "id": "0d6d3707", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n", "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\base.py:443: UserWarning: X has feature names, but DecisionTreeRegressor was fitted without feature names\n", " warnings.warn(\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "preds = np.stack([t.predict(valid_xs) for t in m.estimators_])\n", "plt.plot([r_mse(preds[:i+1].mean(0), valid_y) for i in range(40)]);" ] }, { "cell_type": "markdown", "id": "141e6fb8", "metadata": {}, "source": [ "It looks like 40 estimators seems to give us some of the best performance. We can also look at the oob (out-of-bag) error. https://en.wikipedia.org/wiki/Out-of-bag_error" ] }, { "cell_type": "code", "execution_count": 92, "id": "7ab2abb1", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.860368" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r_mse(m.oob_prediction_, y)" ] }, { "cell_type": "markdown", "id": "fa422767", "metadata": {}, "source": [ "This is a bit higher than the valid set, which makes sense. Now I will look at the predictions. I want to know how important each feature is in the dataset. Luckily there is this nice property (feature_importances_) that tells us just that" ] }, { "cell_type": "code", "execution_count": 93, "id": "22035062", "metadata": {}, "outputs": [], "source": [ "def rf_feat_importance(m, df):\n", " return pd.DataFrame({'cols':df.columns, 'imp':m.feature_importances_}\n", " ).sort_values('imp', ascending=False)" ] }, { "cell_type": "code", "execution_count": 94, "id": "0af127b7", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
colsimp
3Cmp%0.147414
4TD0.145543
0Cmp0.144447
2Yds0.143749
6Y/G0.120133
1Att0.114358
7Sk0.107574
5Int0.076782
\n", "
" ], "text/plain": [ " cols imp\n", "3 Cmp% 0.147414\n", "4 TD 0.145543\n", "0 Cmp 0.144447\n", "2 Yds 0.143749\n", "6 Y/G 0.120133\n", "1 Att 0.114358\n", "7 Sk 0.107574\n", "5 Int 0.076782" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "fi = rf_feat_importance(m, xs)\n", "fi" ] }, { "cell_type": "markdown", "id": "532e13e4", "metadata": {}, "source": [ "Completion Percentage Seems to be the highest category followed by TD. Interestingly enough, interceptions are the lowest predictor. One thing to do is see if I can remove low-importance features. I'll use the cluster_columns function defined above which can tell us how closely connected two components are. " ] }, { "cell_type": "code", "execution_count": 53, "id": "73887e96", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "cluster_columns(xs)" ] }, { "cell_type": "markdown", "id": "424be215", "metadata": {}, "source": [ "It looks like Attempts and Completions are pretty similar (which makes sense) " ] }, { "cell_type": "code", "execution_count": 54, "id": "fe8c12fb", "metadata": {}, "outputs": [], "source": [ "def get_oob(df):\n", " m = RandomForestRegressor(n_estimators=40, min_samples_leaf=15,\n", " max_samples=len(df), max_features=0.5, n_jobs=-1, oob_score=True)\n", " m.fit(df, y)\n", " return m.oob_score_" ] }, { "cell_type": "markdown", "id": "7ec8a178", "metadata": {}, "source": [ "I will check the difference of OOB Error between Completions and Attempts" ] }, { "cell_type": "code", "execution_count": 68, "id": "ee94b69a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.006721497139362986" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "get_oob(xs)" ] }, { "cell_type": "code", "execution_count": 77, "id": "4485995a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'Cmp': 0.003757497556912348, 'Att': -0.000486470984402132}" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "{c:get_oob(xs.drop(c, axis=1)) for c in (\n", " 'Cmp', 'Att')}" ] }, { "cell_type": "markdown", "id": "6188e231", "metadata": {}, "source": [ "I will drop the completions column and try the random forest again" ] }, { "cell_type": "code", "execution_count": 79, "id": "336da4b9", "metadata": {}, "outputs": [], "source": [ "xs_final = xs.drop((\"Cmp\"), axis=1)\n", "valid_xs_final = valid_xs.drop((\"Cmp\"), axis=1)" ] }, { "cell_type": "markdown", "id": "fc0a7c96", "metadata": {}, "source": [ "But first, save the final dataset for future processing" ] }, { "cell_type": "code", "execution_count": 107, "id": "e5518547", "metadata": {}, "outputs": [], "source": [ "save_pickle('xs_final.pkl', xs_final)\n", "save_pickle('valid_xs_final.pkl', valid_xs_final)" ] }, { "cell_type": "code", "execution_count": 108, "id": "30840512", "metadata": {}, "outputs": [], "source": [ "xs_final = load_pickle('xs_final.pkl')\n", "valid_xs_final = load_pickle('valid_xs_final.pkl')" ] }, { "cell_type": "code", "execution_count": 109, "id": "ca07591b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.628506, 0.869091)" ] }, "execution_count": 109, "metadata": {}, "output_type": "execute_result" } ], "source": [ "m = rf(xs_final, y)\n", "m_rmse(m, xs_final, y), m_rmse(m, valid_xs_final, valid_y)" ] }, { "cell_type": "markdown", "id": "e0d794a9", "metadata": {}, "source": [ "I will also plot partial dependence on some of the best features. This will tell me how much each feature affects the overall score if all the other features were unchanged. " ] }, { "cell_type": "code", "execution_count": 111, "id": "df65d79f", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\sklearn\\utils\\deprecation.py:87: FutureWarning: Function plot_partial_dependence is deprecated; Function `plot_partial_dependence` is deprecated in 1.0 and will be removed in 1.2. Use PartialDependenceDisplay.from_estimator instead\n", " warnings.warn(msg, category=FutureWarning)\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig,ax = plt.subplots(figsize=(12, 4))\n", "plot_partial_dependence(m, valid_xs_final, ['Cmp%','TD'],\n", " grid_resolution=20, ax=ax);" ] }, { "cell_type": "markdown", "id": "d873a9ab", "metadata": {}, "source": [ "Completion percentage looks good. The better the completion percentage, the better the overall score. However, TDs are a bit concerning. I will now use the treeinterpreter on a row to see how these predictions are made on an individual row. " ] }, { "cell_type": "code", "execution_count": 112, "id": "1ea2721d", "metadata": {}, "outputs": [], "source": [ "row = valid_xs_final.iloc[:5]" ] }, { "cell_type": "code", "execution_count": 113, "id": "be976f7a", "metadata": {}, "outputs": [], "source": [ "prediction,bias,contributions = treeinterpreter.predict(m, row.values)" ] }, { "cell_type": "code", "execution_count": 114, "id": "cc57a5be", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([1.62246257]), 1.4856153846153846, 0.13684718549424438)" ] }, "execution_count": 114, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prediction[0], bias[0], contributions[0].sum()" ] }, { "cell_type": "code", "execution_count": 118, "id": "f9ed2e3a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Att 0.301647\n", "Yds 0.442272\n", "Cmp% 1.244385\n", "TD -0.550133\n", "Int -1.090999\n", "Y/G 0.323963\n", "Sk -0.063729\n", "Name: 81, dtype: float64" ] }, "execution_count": 118, "metadata": {}, "output_type": "execute_result" } ], "source": [ "valid_xs_final.iloc[0]" ] }, { "cell_type": "markdown", "id": "c0045a86", "metadata": {}, "source": [ "Lets's see which QB this is..." ] }, { "cell_type": "code", "execution_count": 119, "id": "76c9976d", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Unnamed: 0 5\n", "Name Jeff Hostetler\n", "Year 1991\n", "Age 30\n", "Tm 0.0\n", "Pos 0.0\n", "No. 15.0\n", "G 12\n", "GS 12.0\n", "QBrec 0.0\n", "Cmp 179\n", "Att 285\n", "Cmp% 62.8\n", "Yds 2032\n", "TD 5\n", "TD% 1.8\n", "Int 4\n", "Int% 1.4\n", "1D 0.0\n", "Lng 55\n", "Y/A 7.1\n", "AY/A 6.8\n", "Y/C 11.4\n", "Y/G 169.3\n", "Rate 84.1\n", "QBR 0.0\n", "Sk 20\n", "Yds.1 100\n", "Sk% 6.6\n", "NY/A 6.33\n", "ANY/A 6.07\n", "4QC 1.0\n", "GWD 2.0\n", "AV 10\n", "Awards 0.0\n", "Career_AV 65\n", "Tier Above Average Career QB\n", "Name: 81, dtype: object" ] }, "execution_count": 119, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.iloc[valid_xs_final.iloc[0].name]" ] }, { "cell_type": "code", "execution_count": 120, "id": "60a8acf4", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\matth\\Anaconda3\\envs\\qb_preds\\lib\\site-packages\\waterfall_chart.py:66: FutureWarning: Behavior when concatenating bool-dtype and numeric-dtype arrays is deprecated; in a future version these will cast to object dtype (instead of coercing bools to numeric values). To retain the old behavior, explicitly cast bool-dtype arrays to numeric dtype.\n", " trans.loc[net_label]= total\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "waterfall(valid_xs_final.columns, contributions[0], threshold=0.08, \n", " rotation_value=45,formatting='{:,.3f}');" ] }, { "cell_type": "markdown", "id": "ed896bc5", "metadata": {}, "source": [ "This plot is a nice visualization of how much each factor affected the tier. One thing to look at is the confusion matrix, which helps visualize the accuracy of the predictions." ] }, { "cell_type": "code", "execution_count": 122, "id": "841fcb62", "metadata": {}, "outputs": [], "source": [ "def create_confusion_matrix(m, xs, y):\n", " predictions = m.predict(xs).round()\n", " return confusion_matrix(y, predictions)\n", "def plot_confusion(c):\n", " plt.figure(figsize=(15, 10))\n", " ax = sns.heatmap(c, annot=True, cmap='Blues')\n", "\n", " ax.set_title('Confusion Matrix with labels\\n\\n');\n", " ax.set_xlabel('\\nPredicted QB Tier')\n", " ax.set_ylabel('Actual QB Tier');\n", "\n", " ## Ticket labels - List must be in alphabetical order\n", " labels = ['Elite','Above-Average', 'Average', \"Below-Average\", \"Poor\"]\n", " try:\n", " ax.xaxis.set_ticklabels(labels)\n", " ax.yaxis.set_ticklabels(labels)\n", " except ValueError:\n", " ax.xaxis.set_ticklabels(labels[:-1])\n", " ax.yaxis.set_ticklabels(labels[:-1]) \n", " \n", "\n", " ## Display the visualization of the Confusion Matrix.\n", " plt.show() " ] }, { "cell_type": "code", "execution_count": 123, "id": "e4fb9c71", "metadata": {}, "outputs": [], "source": [ "cf1 = create_confusion_matrix(m, xs_final, y)\n", "cf2 = create_confusion_matrix(m, valid_xs_final, valid_y)" ] }, { "cell_type": "code", "execution_count": 124, "id": "d8d9cc61", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_confusion(cf1)" ] }, { "cell_type": "code", "execution_count": 125, "id": "2e60a6a1", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_confusion(cf2)" ] }, { "cell_type": "markdown", "id": "499c0e53", "metadata": {}, "source": [ "Very Interesting. It seems like the model only predicts a QB as Above-Average or Average (and gets resonable error). Maybe I should try neural networks. " ] }, { "cell_type": "markdown", "id": "ac1a96be", "metadata": {}, "source": [ "# Neural Networks (Tabular Learner from Fastai)" ] }, { "cell_type": "code", "execution_count": 257, "id": "3b53394b", "metadata": {}, "outputs": [], "source": [ "learn = tabular_learner(dls, metrics=accuracy, y_range=(0, 4))" ] }, { "cell_type": "code", "execution_count": 258, "id": "5e91dc28", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "SuggestedLRs(valley=0.009120108559727669)" ] }, "execution_count": 258, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learn.lr_find()" ] }, { "cell_type": "code", "execution_count": 259, "id": "a35e5369", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracytime
01.7010491.6118990.14814800:00
11.6328571.5759900.30864200:00
21.5624141.5106310.41975300:00
31.5037221.4550790.50617300:00
41.4559811.4101330.54321000:00
51.4148581.3715550.59259300:00
61.3867121.3456300.60493800:00
71.3615181.3310310.59259300:00
81.3398141.3209980.60493800:00
91.3213861.3155710.59259300:00
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "learn.fit_one_cycle(10, 1e-3)" ] }, { "cell_type": "markdown", "id": "fe8b9b4a", "metadata": {}, "source": [ "It looks like I get pretty decent accuracy with only 10 epochs. " ] }, { "cell_type": "code", "execution_count": 260, "id": "e9914954", "metadata": {}, "outputs": [], "source": [ "learn.x" ] }, { "cell_type": "code", "execution_count": 261, "id": "6298b47f", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CmpAttYdsCmp%TDIntY/GSkTierTier_pred
0-0.434394-0.621348-0.5679191.188545-0.561278-0.298053-0.318229-0.4707852.02.0
1-0.757593-0.924393-1.0812781.013416-0.859586-0.102756-0.166273-0.6331252.02.0
2-1.284287-1.249611-1.232084-2.284843-1.157894-0.102756-1.182258-1.0389752.02.0
3-0.1949870.1547400.046666-1.3216350.1844920.483135-0.003715-0.7142952.01.0
41.7442051.7734391.7365150.5755940.4828000.6784320.9716311.1526120.01.0
50.020478-0.2222170.2201951.4804260.781108-0.6886471.943443-0.7142950.02.0
61.2294811.4777861.267571-0.0811390.3336461.2643230.4698231.3149521.01.0
70.6668761.0564810.689139-0.694090-0.2629701.4596200.2118510.5032532.01.0
8-0.649860-0.628740-0.573084-0.402209-1.1578940.287838-0.966693-0.7142951.02.0
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "learn.show_results()" ] }, { "cell_type": "code", "execution_count": 262, "id": "2bd55e6c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "train_preds = learn.get_preds(dl=dls.train)[0]\n", "valid_preds = learn.get_preds(dl=dls.valid)[0]" ] }, { "cell_type": "code", "execution_count": 263, "id": "6c7f626e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "torch.Size([325, 5])" ] }, "execution_count": 263, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_preds.shape" ] }, { "cell_type": "code", "execution_count": 264, "id": "d5126aac", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "tensor([0.2934, 0.2642, 0.2279, 0.0816, 0.1330])" ] }, "execution_count": 264, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_preds[0]" ] }, { "cell_type": "code", "execution_count": 265, "id": "02f78eb6", "metadata": {}, "outputs": [], "source": [ "def create_confusion_matrix_fastai(xs, y):\n", " p = [np.argmax(r) for r in xs]\n", " return confusion_matrix(y, p)\n", " " ] }, { "cell_type": "code", "execution_count": 266, "id": "33a202cd", "metadata": {}, "outputs": [], "source": [ "cf1 = create_confusion_matrix_fastai(train_preds, y)\n", "cf2 = create_confusion_matrix_fastai(valid_preds, valid_y)\n" ] }, { "cell_type": "code", "execution_count": 268, "id": "70a237a9", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_confusion(cf1)" ] }, { "cell_type": "code", "execution_count": 269, "id": "dd64646c", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_confusion(cf2)" ] }, { "cell_type": "markdown", "id": "1fd36f21", "metadata": {}, "source": [ "Unlike the random forests, this model actually predicts elite and below-average QBs! I will now look at the samples that the model has the most trouble with." ] }, { "cell_type": "code", "execution_count": 270, "id": "a5720dc9", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "interp = Interpretation.from_learner(learn)" ] }, { "cell_type": "code", "execution_count": 271, "id": "17dd0231", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(TensorBase([3.6675, 3.1234, 3.0624, 2.8671, 2.7010]),\n", " TensorBase([67, 31, 37, 3, 65]))" ] }, "execution_count": 271, "metadata": {}, "output_type": "execute_result" } ], "source": [ "interp.top_losses(5)" ] }, { "cell_type": "markdown", "id": "156567b0", "metadata": {}, "source": [ "It looks like the model had some diffulty with Bernie Kosar, here are his rookie stats:" ] }, { "cell_type": "code", "execution_count": 272, "id": "ddf915e9", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Unnamed: 0 2\n", "Name Philip Rivers\n", "Year 0\n", "Age 25\n", "Tm 0.0\n", "Pos 0.0\n", "No. 17.0\n", "G 16\n", "GS 16.0\n", "QBrec 0.0\n", "Cmp 284\n", "Att 460\n", "Cmp% 61.7\n", "Yds 3388\n", "TD 22\n", "TD% 4.8\n", "Int 9\n", "Int% 2.0\n", "1D 167.0\n", "Lng 57\n", "Y/A 7.4\n", "AY/A 7.4\n", "Y/C 11.9\n", "Y/G 211.8\n", "Rate 92.0\n", "QBR 67.4\n", "Sk 27\n", "Yds.1 144\n", "Sk% 5.5\n", "NY/A 6.66\n", "ANY/A 6.73\n", "4QC 4.0\n", "GWD 4.0\n", "AV 18\n", "Awards 0.0\n", "Career_AV 218\n", "Tier Elite Career QB\n", "Name: 3, dtype: object" ] }, "execution_count": 272, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.iloc[3]" ] }, { "cell_type": "markdown", "id": "0f10db18", "metadata": {}, "source": [ "Of course I will check how it does on our original subject, Tom Brady" ] }, { "cell_type": "code", "execution_count": 273, "id": "b2fefbb4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Unnamed: 0 1\n", "Name Tom Brady\n", "Year 0\n", "Age 24\n", "Tm 0.0\n", "Pos 0.0\n", "No. 12.0\n", "G 15\n", "GS 14.0\n", "QBrec 0.0\n", "Cmp 264\n", "Att 413\n", "Cmp% 63.9\n", "Yds 2843\n", "TD 18\n", "TD% 4.4\n", "Int 12\n", "Int% 2.9\n", "1D 145.0\n", "Lng 91\n", "Y/A 6.9\n", "AY/A 6.4\n", "Y/C 10.8\n", "Y/G 189.5\n", "Rate 86.5\n", "QBR 0.0\n", "Sk 41\n", "Yds.1 216\n", "Sk% 9.0\n", "NY/A 5.79\n", "ANY/A 5.39\n", "4QC 3.0\n", "GWD 3.0\n", "AV 12\n", "Awards 0.0\n", "Career_AV 316\n", "Name: 0, dtype: object" ] }, "execution_count": 273, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[df[\"Name\"] == \"Tom Brady\"].drop(\"Tier\", axis=1).iloc[0]" ] }, { "cell_type": "code", "execution_count": 328, "id": "d1086919", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "row, clas, probs = learn.predict(df[df[\"Name\"] == \"Tom Brady\"].iloc[0])" ] }, { "cell_type": "code", "execution_count": 329, "id": "c91fb7ac", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CmpAttYdsCmp%TDIntY/GSkTier
0264.000003413.0000062843.00003663.918.012.0189.541.0Elite Career QB
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "row.show()" ] }, { "cell_type": "markdown", "id": "17a53507", "metadata": {}, "source": [ "Nice job model!" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.12" } }, "nbformat": 4, "nbformat_minor": 5 }