Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Midvale Workbook — Video Compression Regression
{
"cells": [
{
"metadata": {},
"cell_type": "markdown",
"source": "# Import packages"
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "import numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\n%matplotlib inline",
"execution_count": 1,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "from sklearn.preprocessing import LabelEncoder, OneHotEncoder\nfrom sklearn.metrics import mean_squared_error",
"execution_count": 2,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "pd.options.display.max_columns = 50",
"execution_count": 3,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "plt.rcParams['font.size'] = 16",
"execution_count": 4,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# Read data"
},
{
"metadata": {
"trusted": true,
"collapsed": true
},
"cell_type": "code",
"source": "with open('./midvalDataPath.txt', 'r') as fp:\n path_to_data = fp.read()",
"execution_count": 5,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "data = pd.read_csv(path_to_data)",
"execution_count": 6,
"outputs": []
},
{
"metadata": {
"trusted": false,
"collapsed": true
},
"cell_type": "code",
"source": "data.head()",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": false
},
"cell_type": "code",
"source": "# from pprint import pprint\n# pprint(data.columns.tolist())",
"execution_count": null,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Cleaning up the junk"
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "def checkColumn(df, colNum):\n \"\"\"\n Used in throwAwayUnchanged\n \"\"\"\n return np.all(df.iloc[0, colNum] == df.iloc[1:, colNum])\n\n\ndef throwAwayUnchanged(df):\n \"\"\"\n Made specifically for the data we were given for the Midvale project. \n Could, however, prove useful on subsetted-by-group data...\n This function throws away columns that are the same in every entry\n \"\"\"\n idxUnhelpful = [j for j in range(df.columns.size)\n if checkColumn(df, j)]\n df = df.drop(df.columns[idxUnhelpful], axis=1)\n return df\n\n\ndef throwAwayBizarre(df):\n \"\"\"\n Throws away rows where TotalBytes is negative \n (because this doesn't make sense).\n \"\"\"\n df = df.loc[df['TotalBytes'] >= 0]\n return df\n\n\ndef removeUnwanted(data):\n \"\"\"\n Made specifically for the data we were given for the Midvale project. \n \"\"\"\n # Don't worry about High Performance mode for this task\n data = data.groupby('Mode').get_group(0)\n # Flicker is not useful for prediction\n data = data.drop('Flicker', axis=1)\n # We will throw away columns that are all the same\n # (On `data`, this gets rid of Sharpening, \n # WaitSeconds and Status)\n data = throwAwayUnchanged(data)\n data = throwAwayBizarre(data)\n data = data.drop('Index', axis=1)\n return data\n\n\ndef fixMiscValues(df):\n \"\"\"\n Made specifically for the data we were given for the Midvale project. \n \"\"\"\n df = df.fillna({'TertiaryResolution': 'NaN'})\n df = df.replace('-', value=0)\n df['SecondaryBitsPerSecond'] = df['SecondaryBitsPerSecond'].astype(np.float64)\n df['TertiaryBitsPerSecond'] = df['TertiaryBitsPerSecond'].astype(np.float64)\n return df\n\n\ndef preProcess(df):\n \"\"\"\n Made specifically for the data we were given for the Midvale project\n \"\"\"\n df = removeUnwanted(df)\n df = fixMiscValues(df)\n return df",
"execution_count": 7,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "data = preProcess(data)",
"execution_count": 8,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# Make a subset of the data for a simpler time"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "First we have to figure out the subset...\n\nRoger recommended sticking with `Test == Base` and a single camera. Let's choose the camera with the most observations."
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "Base_gb_CameraName = data.loc[data['Test']=='Base'].groupby(['CameraName'])\nCameraName_highestCountOf_Base = Base_gb_CameraName.count()['Test'].argmax()\ndata_A3Base = Base_gb_CameraName.get_group(CameraName_highestCountOf_Base)\ndata_A3Base = data_A3Base.drop(['CameraName', 'Test'], axis=1)",
"execution_count": 9,
"outputs": []
},
{
"metadata": {
"scrolled": true,
"trusted": false,
"collapsed": true
},
"cell_type": "code",
"source": "data_A3Base.head()",
"execution_count": null,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# Data exploration"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Histogram of continuous"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "logBytes = data.loc[:, ['TotalBytes', 'PrimaryBitsPerSecond', 'SecondaryBitsPerSecond', 'TertiaryBitsPerSecond']]\nlogBytes = logBytes.replace(0., np.nan).apply(lambda x: np.log(x)).dropna(how='all')\nlogBytes.hist(figsize=(15,10));",
"execution_count": 11,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x10ff256a0>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA4YAAAJZCAYAAAD1bCtDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XuYJVV97//3B7kHlRmN4wkEZhRjhIyaiIk5GBhIjoBy\nMSKYiCbIUYwnEaOgYQ75GaIYUcGYRE0kXnMmKvEOYlBJpjEmgzcUYTR4mxEUFHAAHe4D398fVQ2b\n3bt79lx69u6u9+t59lO9q767atXq7lr13VVrVaoKSZIkSVJ3bTfqAkiSJEmSRsvEUJIkSZI6zsRQ\nkiRJkjrOxFCSJEmSOs7EUJIkSZI6zsRQkiRJkjrOxFCzJsl7k1SSxaMuyzhIsqytjzNGXRZtfUkm\nkvj8H0md0LZnE6Mux5awXZ7fbJc3nYmhHiDJ4vYg2fu6M8naJO9O8uhRl3EcJDljmnpak+RDSZ6y\nCeva4sZ11L+3NP4wySVJbkpyV5IfJflSkrckedJsbl+StrUkuyV5dZKvJbk1ye1Jrk7y720b8chR\nl7FLbJenbN92WZts+1EXQGPr28D7258fAiwDXgD8bpLfqKpvDbGO5cBZwA9npYTj4UPAN9qfdwZ+\nGXgm8Kwkz6qqT/TEfhF4HHDjLJZna/zeNsd7gT8AfgJ8ArgWeDDwa8CfAHcAX5mlbUvSNpXkIcB/\nAr8CfAv4fzTHv0XA/wT+ArgUuGhUZeww2+XGe7Fd1iYyMdR0vlVVZ0y+SRLgPcAfAqe30xlV1XXA\ndbNVwDHxL1X14d4ZSY4BPgycQnMwBqCqbgP+e5bLs8W/t02V5ECaxuerwIFVtb5v+SOAX9za25Wk\nEfpTmqTwXOCPquoBt6sl2Q/42SgKJttl22VtLm8l1VDaRu/t7dv94f57t5PsnOSv2ts17k7yp+3y\nKX0Mk5zQzjshydHtLQ23Jfl+klPamCR5ZZJvJ7kjyTeSHNlfpiRPSvK2JKuT/LS9leeyJP+nPfD2\nx1db5l9MsiLJj5Pcm+S3kqxPcuWgfU+yS5Kbk1w1ZHV9pp0+vG89D+jLMPm+XXxQ3+0mJ7Qx2yV5\ncZIvt7eC3NbeqvSRYW4DGfR76ynPI5P8bZLvtbe3/LitlyUD6mC6unsiMHl7zj/1Nz5tGa6vqinf\nSm7K9tv4X0tyXpLr2vgfJPlYkqf2xT0iyVvbv6m72vj3TbNfa9vXbkn+Jsm17bq/nuTZ05TjiUk+\n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\n+/FLkmafiaEkSSNUVa8HXj9EnP34JUmzxj6GkiRJktRxJoaSJEmS1HHeSipJc9jicXje1VnPGHUR\nJEnSFvKKoSRJkiR1nImhJEmSJHWciaEkSZIkdZyJoSRJkiR1nImhJEmSJHWciaEkSZIkdZyJoSRJ\nkiR1nImhJEmSJHWciaEkSZIkdZyJoSRJkiR1nImhJEmSJHWciaEkSZIkdZyJoSRJkiR1nImhJEmS\nJHWciaEkSZIkdZyJoSRJkiR1nImhJEmSJHWciaEkSZIkdZyJoSRJkiR1nImhJEmSJHWciaEkSZIk\ndZyJoSRJkiR13PajLoCkuWfxaReOugiSJEnairxiKEmSJEkdZ2IoSZIkSR1nYihJkiRJHWdiKEmS\nJEkdZ2IoSdIYSXJRkkpyZt/8BUnemeTGJLcmuTjJ0gGf3znJm5Jcl+T2JKuSHDggbrsky5OsTXJH\nksuTHDOb+yZJGl8mhpIkjYkkvw88YcD8ABcAhwEvBY4BdgBWJtmzL/xdwIuAVwNHANcBn07yxL64\n1wJnAG8FDgcuBT6U5Olba38kSXOHj6uQJGkMJFkA/DXwcuD9fYuPAg4ADqmqlW38KmAN8Crg5Hbe\nE4DnAidW1XvaeZcAq4HXtOshySOAU4Gzqursdhsrk+wDnAV8apZ2U9IcsCWPpTpl6QZO2AqPtVp7\n1jO2eB3aNF4xlCRpPLwBuLKqPjBg2VHAtZNJIUBV3UJzFfHovri7gfN64jYAHwQOTbJTO/tQYEdg\nRd92VgBLkyzZwn2RJM0xJoaSJI1YkqcCfwD88TQh+wFXDpi/GtgryW49cWuq6rYBcTsC+/TE3Ql8\nZ0AcwL7Dl16SNB+YGEqSNEJJdgTeAZxdVVdNE7YQuGnA/HXtdMGQcQt7pjdXVW0kTpLUEfYxlCRp\ntF4F7AK8btQF2ZgkJwEnASxatIiJiYnRFmgWrV+/fl7v3+awTqaajTo5ZemGrbq+bW3RLltnH+bT\n39pc+d/ZaGKY5FDgz2huK1kA3AD8F3BGVX2jJ24B8CbgmTQN3Crg5VV1Rd/6dqYZCe15wO7A14A/\nq6rP9cVt1273xcAjgauA11TVRzZrTyVJGjNJ9gJOB14I7NTTB5D2/e7Az2iuAi4YsIrJK3s39Uz3\nniFuXU/c7knSd9WwP+4Bqupc4FyA/fffv5YtWzbNns19ExMTzOf92xzWyVSzUSdbY+CWUTpl6QbO\n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\n0ogleXb745Pa6eFJbgBuaBPB84FVwIokr6S5FXQ5EOCNk+upqq8mOQ94S5IdaJ5z+BJgCU0SOBl3\nfZI3A8uT/Ay4jCZ5PIT2WYeSpG4xMZQkafQ+1Pf+7e30EmBZVd2b5Ajg7HbZzjSJ4sFVdU3fZ18A\nvA44E9gduBw4rKou64s7HVgPvAx4JHAVcFxVfXLr7JIkaS4xMZQkacSqKkPErANObF8zxd0OvKJ9\nzRR3D03yeObwJZUkzVcmhpoThun7sCXsNyFJkqQuc1RSSZIkSeo4E0NJkiRJ6jgTQ0mSJEnqOBND\nSZIkSeo4E0NJkiRJ6jgTQ0mSJEnqOBNDSZIkSeo4E0NJkiRJ6jgfcC9JkiRJfRafduFWWc8pSzdw\nwmaua+1Zz9gqZRiGVwwlSZIkqeNMDCVJkiSp40wMJUmSJKnjTAwlSZIkqeMcfEaSJGlEttbgFpK0\npbxiKEmSJEkd5xVDbZTfZkqSJEnzm1cMJUmSJKnjTAwlSZIkqeNMDCVJkiSp40wMJUmSJKnjTAwl\nSZIkqeNMDCVJkiSp40wMJUmSJKnjTAwlSZIkqeNMDCVJkiSp40wMJUmSJKnjTAwlSZIkqeO2H3UB\nJEmSRmHxaRdOu+yUpRs4YYblkjTfeMVQkiRJkjpu7BPDJL+Y5MNJbkny0yQfTbLXqMslSdJcZxsr\nSZo01olhkl2Bfwd+GfhD4PnAY4CVSX5ulGWTJGkus42VJPUa9z6GLwIeBTy2qr4DkOTrwLeBFwNv\nHmHZtomZ+j9sCvtKSJL6dL6NlSTdb6yvGAJHAZdONlgAVbUG+E/g6JGVSpKkuc82VpJ0n3G/Yrgf\n8IkB81cDx872xrfW1TpJksaQbawk6T7jfsVwIXDTgPnrgAXbuCySJM0ntrGSpPukqkZdhmkluQt4\nc1Wd1jf/TOC0qppyxTPJScBJ7dvHAlfNekHnhocDN466EGPM+pmZ9TMz62dmw9TP3lX189uiMGrY\nxm6U/9dTWSdTWSdTWSdTjbpOhmpjx/1W0psY/K3ldN9yUlXnAufOZqHmoiRfrqr9R12OcWX9zMz6\nmZn1MzPrZ2zZxs7Av9uprJOprJOprJOp5kqdjPutpKtp+kD02xf4xjYuiyRJ84ltrCTpPuOeGJ4P\nPCXJoyZnJFkMHNAukyRJm8c2VpJ0n3FPDP8RWAt8IsnRSY6iGUHtGuAdoyzYHNSJW3+2gPUzM+tn\nZtbPzKyf8WQbOzP/bqeyTqayTqayTqaaE3Uy1oPPACTZC/hr4H8BAf4N+NOqWjvKckmSNNfZxkqS\nJo19YihJkiRJml3jfiuphpRkzyR/l2RVktuSVNtXpD9uQZJ3Jrkxya1JLk6ydNuXeNsapn6S/E6S\n9ydZk+T2JN9N8vdJHjGaUm87w/799H3mH9q4FdumlKOzKfWT5ClJLkpyc/s/dkWS39u2Jd62NuH4\ns1+Sjya5tq2b1UlOTTLuI2SrI5IckOQzSa5P8rMklyU5cdTl2lY8l5jK84epPGeYar6cJ5gYzh/7\nAMfRDDH+H4MCkgS4ADgMeClwDLADsDLJntuonKOy0foBXgz8PPA6mjp6PXAUcGmS3bZFIUdomPq5\nT5IDgOcBP53lco2LoeonyTOAzwE/Ap4LHE3Tj2vnbVDGURrm+PMLwATwKOBPgSOBjwNvpPmfk0Yq\nyeOBi2naxRcBzwK+BLwryUtGWbZtyHOJqTx/mMpzhqnmx3lCVfmaBy9gu56fXwgUsLgv5uh2/sE9\n8x4KrAP+dtT7MAb18/MDPndgG3viqPdh1PXTs3wH4EpgOc3AFStGXf5xqB/gwcD1wFtGXd4xrZ+T\n2vmP7Zv/QeC6Ue+DL1/AXwF3Abv1zV8FrBp1+bZRHXgusXl10qnzB88ZNvvvZOzPE7xiOE9U1b1D\nhB0FXFtVK3s+dwvNN39Hz1bZxsEw9VNVNwyY/aV2usfWLdF4GfLvZ9IrgQcBZ89SccbOkPVzLM03\nxufMcnHGzpD1s2M7vblv/s1494rGw440ieFtffNvoSN/o55LTOX5w1SeM0w1X84TOnGg0332o/nW\npt9qYK95ervDljqonX5zpKUYE0n2Af4c+D9VdfeoyzNmnkrzjfnStr/AhiTXJPmLJA8adeHGwIeA\nG4G3JVmS5CFJfhd4PmPcSKpT3kszMuvfJvmFJLsneRHw2zQjt6rhucRwOn/+4DnDFGN/nmCH/25Z\nSHMZv9+6droAWL/NSjPmkjwYeAvNQf3jIy7OuPh74KO93xTrPr8A7Aq8H3gt8BXgd4D/D9gdePno\nijZ6VfXjJL9J85y8703OBs6oqjeOrmRSo6quTLIM+Bjwx+3su4E/qqoPjqxg48dziY3w/OE+njM8\n0NifJ5gYSgO0oyR+gOYWkAOqasOIizRySZ4HPBl47KjLMqa2o+k8fnpVvbmdN5HkYcAfJzmjvd2q\nk5L8PPBR4Fbg2cBPgEOAP09yZ1W9YZTlk5I8BvgIzZWvPwJup7k18h+S3FFV/zzK8mlu8Pyh4TnD\nQGN/nmBi2C030XyT129hz/LOS7Id8D6ab3GeUVVfH3GRRq69NejNwBuAO5Ps3i7aDtihfX9rx28V\n+Uk7/Wzf/M/QnGTuSzOIRVe9ClgM7F1Vk8eaifb2mdcmeVdV3Tiy0knN4DN3A0dW1V3tvH9rT9r+\nJskHNrFv1XzlucQ0PH9oeM4wrbE/T7CPYbespukb0G9f4Oqq6vStHz3+AXgO8HtV9W+jLsyYeDhN\nh+m/omn0J1+/yP3DMz9jZKUbD6tHXYAxtxT4bk9SOOmLNKPW7bPtiyQ9wFLg6z1J4aQvAg8D5uUz\n6TaD5xLT8/yh4TnDYGN/nmBi2C3nA3skmewQTZKH0DxP7PyRlWqMJDmHZpjhF1RVl/sF9PsRcPCA\n149pnvt1MPD5kZVuPEz+vRzaN/8w4A7gim1bnLHzI+DRSfqvNPxGO/3hNi6P1O9HwOOT7Ng3/zdo\n/ofXTf1IJ3kuMYDnDw/gOcNgY3+e4K2k80iSZ7c/PqmdHp7kBuCGqrqE5oC9CliR5JU039gspxmF\nbd4P/rCx+knyZ8ArgHcD307ylJ6P31BV392Gxd3mhvj7mRjwmTuAH1fVlGXzzcbqpx244r3Aa9rb\niS6juZ3ohcBr5/u36EP8/fwDcDzwmSRvormlZhlwKvCxqrpmGxdZ6vdWmtFzL0jydpo+hkcBvw/8\n9YArifOS5xJTef4wlecMU82H84S0D1zUPJBkul/mJVW1rI1ZSPMsmWfSdIBdBbyiqi7fJoUcoY3V\nT5IJ7h9eut/7quqEWSnYmBjm72fAZ9YCn6+q581WucbFkP9fOwKvBv4QWEQzct/bqupvtkUZR2nI\n+nkKTf38KvAQmvr5AHBOVd2+DYopzSjJ4cCf0dwquTPwXeBc4B1Vdc8oy7ateC4xlecPU3nOMNV8\nOE8wMZQkSZKkjrOPoSRJkiR1nImhJEmSJHWciaEkSZIkdZyJoSRJkiR1nImhJEmSJHWciaEkSZIk\ndZyJoSRJkiR1nImhJEmSJHWciaEkSZIkdZyJoSRJkiR1nImhJEmSJHWciaEkSZIkdZyJoSRJkiR1\nnImhJEmSJHWciaEkSZIkdZyJoSRJkiR1nImhJEmSJHWciaEkSZIkdZyJoSRJkiR1nImhJEmSJHWc\n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\n"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "def logTransformColumn(df, colname):\n \"\"\"\n Tailor-made for the Midvale data. \n log-transforms the columns pertaining to bit-rate.\n \"\"\"\n logBytes = data[colname]\n logBytes = logBytes.replace(0., np.nan).apply(lambda x: np.log(x))\n logBytes = logBytes.dropna(how='all')\n return df.assign(**{'log'+logBytes.name: logBytes})\n\ndef logTransformBytes(df):\n for columnName in ['TotalBytes', 'PrimaryBitsPerSecond', \n 'SecondaryBitsPerSecond', 'TertiaryBitsPerSecond']:\n df = logTransformColumn(df, columnName)\n return df",
"execution_count": 12,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "data = logTransformBytes(data)\ndata_A3Base = logTransformBytes(data_A3Base)",
"execution_count": 13,
"outputs": []
},
{
"metadata": {
"trusted": false,
"collapsed": true
},
"cell_type": "code",
"source": "data.head()",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"trusted": false,
"collapsed": true
},
"cell_type": "code",
"source": "data_A3Base.head()",
"execution_count": null,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Histogram of categoricals"
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "def hist_colVals(X, **kwargs):\n \"\"\"\n X : a categorical column of a data frame\n \"\"\"\n # Check if not categorical\n #\n #\n # get value counts\n vc = X.value_counts()\n n = vc.shape[0]\n xrange = np.arange(n)\n plt.bar(xrange, vc.values, **kwargs)\n plt.xticks(xrange, vc.index.tolist(), rotation=90)\n return\n \n ",
"execution_count": 14,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "# make a histogram of these\n# (these are the *useful* categories for CamerName:A3;Test:Base)\ncategs = ['PrimaryResolution', 'SecondaryResolution', \n 'Keyframe', 'ImageRate', 'Quality',\n 'Detail', 'Motion']\n\nC = len(categs)\nncols = 4\nnrows = np.int(np.ceil(C/5))\nfigwidth = 20\nfigheight = np.int(np.min([np.ceil(20/ncols*nrows), 20]))\n\nfig, axes = plt.subplots(nrows, ncols, figsize=(figwidth, figheight))\nfig.subplots_adjust(hspace=.75)\n\nfor j, categ in enumerate(categs):\n plt.subplot(nrows, ncols, j+1)\n hist_colVals(data_A3Base[categ])\n plt.xlabel(categ, labelpad=20)\nfor j in range(C, nrows*ncols):\n plt.subplot(nrows, ncols, j+1)\n plt.axis('off')",
"execution_count": 15,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x11a25f160>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAABJwAAAKdCAYAAABmonNDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XuYZFV57/HvDxlAQggzx4km6Dh4MHogBEwmXoLhZiIQ\nbhpFVNQEjqJo5AQVhBBREQJyMZwcgwFFYoIRokZlgnKLw2B0QEcukREx6CCgGAdnREHC9T1/7N1S\nFDUz3T3VVdXd38/z7Ke61n5rr1XV1at6v7X2WqkqJEmSJEmSpH7ZaNgNkCRJkiRJ0sxiwkmSJEmS\nJEl9ZcJJkiRJkiRJfWXCSZIkSZIkSX1lwkmSJEmSJEl9ZcJJkiRJkiRJfWXCSZIkSZIkSX1lwkmS\nJEmSJEl9ZcJJkiRJkiRJfbXxsBswGU960pNq4cKFw26GpA3w9a9//a6qmj/sdmwI+yJp+rMvkjQK\n7IskjYp+9kfTMuG0cOFCli9fPuxmSNoASb437DZsKPsiafqzL5I0CuyLJI2KfvZHXlInSZIkSZKk\nvjLhJEmSJEmSpL4y4SRJkiRJkqS+MuEkSZIkSZKkvjLhJEmSJEmSpL4y4SRJkiRJkqS+MuEkSZIk\nSZKkvtp42A2YaguPuXgo9d56yj5DqVfSaBpWX6THsm/WbDeovsi/NUnr0u++yD5HGk2OcJIkSZIk\nSVJfmXCSJEmSJElSX5lwkiRJkiRJUl+ZcJIkSZIkSVJfmXCSJEmSJElSX5lwkiRJkiRJUl+tN+GU\nZLck1WP7SVfc3CQfSXJXknuTXJFkhx7H2yzJaUnuTHJfkmVJdunnk5IkSZIkSdLwbDyB2COAr3Xc\nf2jshyQBFgMLgbcCa4BjgSVJdqqqOzoedy6wD3AU8F3gLcClSV5QVddP5klIkiRJkiRpdEwk4XRT\nVV29ln37AzsDe1TVEoAky4CVwNE0ySqS7Ai8Gji0qs5ry5YCK4AT2uNIkiRJkiRpGuvXHE77Az8Y\nSzYBVNXdNKOeDuiKexC4sCPuIeACYM8km/apPZIkSZIkSRqSiSScPp7k4SQ/TvJPSRZ07NseuLHH\nY1YAC5Js0RG3sqp+3iNuE2DbCbRHkiRJkiRJI2g8l9TdDZwBLAV+CjwH+AtgWZLnVNWPgHnArT0e\nu7q9nQvc08atWUfcvLU1IslhwGEACxYsWFuYJEmSJEmShmy9Caequg64rqNoaZKrgK/STBD+rilq\n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\nhcCZSeYAK2lGb24DHDyQJyNp2rIvkjTK+plwmlJVdQ5wDsCiRYtqyM2RNBrGvq27qav85CR/B9wL\nLAWOq6pvdOwfz0jLFVPQXkkzR/eclme1t0uB3arqkST7Aqe3+zajOenbvapu73rsIcBJwInAVsAN\nwF5Vde1UNV7SjGFfJGlk9TPhNJEJ6Z6+jjgnpJO0Xkm2prn87YqqWt4W3w+cDVwGrAKeDfwF8JUk\nv1tV32rjJjXSUpLGVFXGEbMaOLTd1hV3H/C2dpOkcbMvkjTK+jmHkxPSSRqIdk64zwEP0XwbB0BV\n3VlVb6qqf6mqL1XVh4FdgAKO61PdhyVZnmT5qlW9rvKTJEmSJPUz4eSEdJKmXJIn0vQjzwD2rKo7\n1hXfDhf/d+C5HcWTXvq3qs6pqkVVtWj+/PkTarskSZIkzRbjvqTOCekkDVvbZ3wKWAT8Yde8TBOx\nAnhpks275nFypKUkSZIk9cFE5nByQjpJQ5NkI+DjwB7AvlV19TgftwB4IfDZjuLFwHtpRlp+rI1z\npKUkSZIk9cm4E05OSCdpyP6WJkF0EnBvkud37Lujqu5IcgbwCHA1zWVxz6IZaflI+zjAkZaSJEmS\nNNX6uUqdJE2lvdvb43j8BODvBd5Dc6nc4cDrgS2AHwNfBN5bVTd3PcaRlpIkSZI0RUw4SZoWqmrh\nOGI+Cnx0nMdzpKUkSZIkTZF+rlInSZIkSZIkmXCSJEmSJElSf5lwkiRJkiRJUl+ZcJIkSZIkSVJf\nmXCSJEmSJElSX5lwkiRJkiRJUl+ZcJIkSZIkSVJfmXCSJEmSJElSX5lwkiRJkiRJUl+ZcJIkSZIk\nSVJfmXCSJEmSJElSX5lwkiRJkiRJUl+ZcJIkSZIkSVJfmXCSJEmSJElSX5lwkiRJkiRJUl+ZcJIk\nSZIkSVJfmXCSJEmSJElSX5lwkiRJkiRJUl+ZcJIkSZIkSVJfmXCSJEmSJElSXw0l4ZTkaUk+leTu\nJD9N8i9JFgyjLZJmN/sjSaPAvkjSKLAvktRPA084Jdkc+CLwbOBPgNcCzwSWJPmlQbdH0uxlfyRp\nFNgXSRoF9kWS+m3jIdT5BuAZwLOq6haAJP8B/CfwRuADQ2iTpNnJ/kjSKLAvkjQK7Isk9dUwLqnb\nH7h6rBMDqKqVwJeBA4bQHkmzl/2RpFFgXyRpFNgXSeqrYSSctgdu7FG+AthuwG2RNLvZH0kaBfZF\n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\nE6RC5qV+u1L1G9JO9rcxqXDdvh1dtHK7g0gXrY3KiCvvcw7S+ZsFuDkixkqaFdgTWJHUO+uciCjt\nG1tJt5GOVSkJLus5JK1EmvJ2ZtLr8glJywLHM+n1+ueIuKzCMG069eQ3LmZmZmbWM/TphJOZmZmZ\nmZmZmTVfX6/hZE0maW7gw7pCi5bl3k7z5bvvRURvLXxqZmZmZmZmfVifrskgae48NrS47H8knSvp\nqXw7W9IXK4pvZkn7SLpB0muSxkj6SNJzks6RtFYVcXVE0jykouLrVbDvayXtLWnesvfdFUmLSjpV\n0oukWk2v5NtoSS/mdYtVGyVImkXSbpJOz7cfSJq56risfJL6S1pP0oIdrF9A0i5lx2XN53NtZmZm\nZq3Sp4fUSRoPrFMrnCxpReA/efWd+efXgHGkAsvPlhjbQqTZ6FYk1WwaCyxCKl54HWlGti8BJ0bE\noSXGtXsnq2cnzTDzW1KBRSLiHyXFNYE0g8GnwJXAucD1Vfe0yq+p20jJ3atItbfezav7AcsDm+f7\nAyLi8ZLiehDYuVYDTNJ8pBn1ViLN6AepSP1DOa7RZcRl1coJxguYNAvGBOAs4BcR8VGh3VrAXWUV\n37fm87k2MzMzs1br60Pq6qcMPJaU3NkgIl6FiYXFbydNk7pzibGdDMwNrBkRD+RYvgCcRxqytryk\ngcDlkp6OiPNKiutMUmKno+kWAziw8HspCafsF6SEybb59pakC4DzIuKxEuMo+j0pybRFRHzQqEEe\nhnglcArwzZLiWpWUUKo5DlgK2CoirsxxbU16vR0OdDorofUaBwBbAIOA+4ABwP7AOpI2jYg3qgvN\nmszn2szMzMxaqq/3cJpsanhJo0jf7p5V124f4IiIWLTE2N4B9o+IwXXLlwMeBxaOiLclHUOadW2N\nkuJ6jNQz5xfA3XWr5wEeBnYA7gEoa+a14rmUNDuwDbALsDEpOfYIcA5wYUS8XUZMOa4PgW0i4sYu\n2m0KXBYRc5YUV/1r/3XSzGPH1bUbBOwYEZUMK7Vy5b/viyLi2MKylYErSD1gNomIF93rpefzuTYz\nMzOzVuvTNZwa+BzQaJr4p4H5S45ldlJvq3rvkM7b5/P9O4AvlxUU8BXgz6SeTocBH0TEyzmxVEsu\nvVFYVrqIGBMRgyNiU2AJ4BBgFuBU4DVJl5cYzhigO3Wl5gU+aXEsnVmIScNJi+4kHUPrG5Zm0nBi\n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\nkiRppCw4SZIkSZIkaaQsOEmSJEmSJGmkLDhJkiRJkiRppCw4SZIkSZIkaaQsOEmSJEmSJGmkLDhJ\nkiRJkiRppCw4SZIkSZIkaaQsOEmSJEmSJGmkLDhJkiRJkiRppCw4SZIkSZIkaaQsOEmSJEmSJGmk\nLDhJkiRJkiRppCw4SZIkSZIkaaQsOEmSJEmSJGmkLDhJkiRJkiRppCw4SZIkSZIkaaQsOEmSJEmS\nJGmkLDhJkiRJkiRppGak4JTk3kk+k+TqJL9P8tkki2YiF0nzm/cjSbOB9yJJkjRupr3glGQz4Czg\ngcDzgOcC9wfOTnKn6c5H0vzl/UjSbOC9SJIkjaMNZ+A9XwjcF3hAVf0EIMn/AP8PeBHw7hnISdL8\n5P1I0mzgvUiSJI2dmRhStzdw3sQPVABVdTHw38A+M5CPpPnL+5Gk2cB7kSRJGjszUXDaDrhoQPty\nYNtpzkXS/Ob9SNJs4L1IkiSNnZkoOC0ArhzQvhLYcppzkTS/eT+SNBt4L5IkSWMnVTW9b5jcCLy7\nqg7qaz8COKiqBs4rleQA4IDu5QOAH69jCncFLp9DsbMlj7kWO1vymGuxU33sXvepqoXruO9IrMv9\naIT3oum0Pt+n+c7Pbt3Nlc/Oe9HcM1euLa2f+fZ9nvF7kSSN2kxMGn4lg/9at7q/7gFQVccDx6/v\nmyc5v6qWzJXY2ZLHXIudLXnMtdipPvYsNOn70ajuRdNpDL5PM8bPbt352U3KvLgXjYrX1vzg91mS\n5r6ZGFK3nDZXQb9tgR9Mcy6S5jfvR5JmA+9FkiRp7MxEwekU4JFJ7jvRkGQx8OhumyRNF+9HkmYD\n70WSJGnszETB6d+BS4AvJNknyd7AF4BfAB+YhvefTPfz2RA7W/KYa7GzJY+5FjvVx55tZvp+NF3m\n+vdpJvnZrTs/u+HNl3vRqHhtzQ9+nyVpjpv2ScMBkiwC/hV4PBDgv4BXVdUl056MpHnN+5Gk2cB7\nkSRJGjczUnCSJEmSJEnS+JqJIXWSJEmSJEkaYxacJP1Jkg2S/E2SzWY6F0mSJEnS3DXvCk5J7p7k\n7jOdx2QkuVuSDWc6D80LdwYuAB4204lIkiRJkuausSxiJNkJ2KyqvtTT9nLgYODu3etfAm+qqo+v\n53vdFXg58PCu6TzgfVW1chLH2IG2EscVtCLgu6vq00meCbwH2Ar4Y5JjgddXVXXnuDXww6r67oBj\n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\nAElFTkSuQmCC\n"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Finding correlations with PrimaryBitsPerSecond"
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "from sklearn.preprocessing import StandardScaler",
"execution_count": 16,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "data_A3Base['logPrimaryBitsPerSecond'].hist(bins=1000, cumulative=True)",
"execution_count": 17,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 17,
"data": {
"text/plain": "<matplotlib.axes._subplots.AxesSubplot at 0x10f305b00>"
},
"metadata": {}
},
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x10f305fd0>",
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "scaler = StandardScaler()\nqualityResponse = scaler.fit_transform(data_A3Base.loc[:, ['Quality', 'logPrimaryBitsPerSecond']])",
"execution_count": 18,
"outputs": []
},
{
"metadata": {
"scrolled": true,
"trusted": true
},
"cell_type": "code",
"source": "plt.hist2d(qualityResponse[:,0],\n qualityResponse[:,1],\n bins=20);\nplt.xlabel('Quality')\nplt.ylabel('log(PrimaryBitsPerSecond)')\nplt.colorbar();",
"execution_count": 19,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x11afece48>",
"image/png": "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\nyzkQmJl1uf8Pc5FeEojloSgAAAAASUVORK5CYII=\n"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# A very simple linear regression"
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "from sklearn.linear_model import LinearRegression, ElasticNetCV\nfrom sklearn.model_selection import train_test_split",
"execution_count": 20,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "X_train, X_test, y_train, y_test = train_test_split(data_A3Base.loc[:,['Quality', 'ImageRate', 'Keyframe']].values,\n data_A3Base['logPrimaryBitsPerSecond'].values)",
"execution_count": 21,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "en = ElasticNetCV(normalize=True)\nen.fit(X_train, y_train)",
"execution_count": 22,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 22,
"data": {
"text/plain": "ElasticNetCV(alphas=None, copy_X=True, cv=None, eps=0.001, fit_intercept=True,\n l1_ratio=0.5, max_iter=1000, n_alphas=100, n_jobs=1, normalize=True,\n positive=False, precompute='auto', random_state=None,\n selection='cyclic', tol=0.0001, verbose=0)"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "en.score(X_test, y_test)",
"execution_count": 23,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 23,
"data": {
"text/plain": "0.48322579290589274"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# Encoding features for regression\n\n## Encoding the categoricals\n\nIf there are any categoricals, then maybe we should put columns as integers so we can regress on them? "
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "def categDF(data):\n categoricals = data.select_dtypes(include=['object'])\n categoricals = categoricals.drop('Message', axis=1)\n return categoricals\n",
"execution_count": 24,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "def setUpCategs(data, sparse=False):\n from sklearn.preprocessing import LabelEncoder, OneHotEncoder\n lb = LabelEncoder()\n oh = OneHotEncoder()\n categoricals = categDF(data)\n categoricals = categoricals.apply(lb.fit_transform)\n categoricals = oh.fit_transform(categoricals)\n if not sparse:\n categoricals = categoricals.toarray()\n return categoricals\n",
"execution_count": 25,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "def unencodeOneHotLabelling(ohEnc, oh, lbl):\n return lbl.inverse_transform(oh.active_features_)[np.argmax(ohEnc, axis=-1)]",
"execution_count": 26,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "categoricals = setUpCategs(data)",
"execution_count": 27,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "categoricals_A3Base = setUpCategs(data_A3Base)",
"execution_count": 28,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "categ_df = categDF(data)",
"execution_count": 29,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "categ_df_A3Base = categDF(data_A3Base)",
"execution_count": 30,
"outputs": []
},
{
"metadata": {
"trusted": false,
"collapsed": true
},
"cell_type": "code",
"source": "categ_df_A3Base.head()",
"execution_count": null,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Can we unscramble categoricals?"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "elems = pd.DataFrame(np.array([['cat', 'dog', 'mouse', 'mouse', 'cat', 'guineapig'],['white', 'white', 'white', 'red', 'black', 'orange']]).T, columns=['animal', 'colour'])\nelems",
"execution_count": 31,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 31,
"data": {
"text/plain": " animal colour\n0 cat white\n1 dog white\n2 mouse white\n3 mouse red\n4 cat black\n5 guineapig orange",
"text/html": "<div>\n<style>\n .dataframe thead tr:only-child th {\n text-align: right;\n }\n\n .dataframe thead th {\n text-align: left;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>animal</th>\n <th>colour</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>cat</td>\n <td>white</td>\n </tr>\n <tr>\n <th>1</th>\n <td>dog</td>\n <td>white</td>\n </tr>\n <tr>\n <th>2</th>\n <td>mouse</td>\n <td>white</td>\n </tr>\n <tr>\n <th>3</th>\n <td>mouse</td>\n <td>red</td>\n </tr>\n <tr>\n <th>4</th>\n <td>cat</td>\n <td>black</td>\n </tr>\n <tr>\n <th>5</th>\n <td>guineapig</td>\n <td>orange</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "lblDemo = LabelEncoder()\nohDemo = OneHotEncoder()",
"execution_count": 32,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "lblDemo.fit_transform(elems.values.ravel())",
"execution_count": 33,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 33,
"data": {
"text/plain": "array([1, 7, 2, 7, 4, 7, 4, 6, 1, 0, 3, 5])"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "lblDemo.inverse_transform([1,2,3])",
"execution_count": 34,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 34,
"data": {
"text/plain": "array(['cat', 'dog', 'guineapig'], dtype=object)"
},
"metadata": {}
}
]
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "ohEncodingOfAnimals = ohDemo.fit_transform(np.c_[lblDemo.fit_transform(elems.values.ravel())]).toarray()",
"execution_count": 35,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "lblDemo.inverse_transform(ohDemo.active_features_)[np.argmax(ohEncodingOfAnimals, axis=-1)]",
"execution_count": 36,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 36,
"data": {
"text/plain": "array(['cat', 'white', 'dog', 'white', 'mouse', 'white', 'mouse', 'red',\n 'cat', 'black', 'guineapig', 'orange'], dtype=object)"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Now for the continous"
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "numerical_names = ['Keyframe', 'ImageRate', 'Quality', 'KbpsLimit', 'CollectSeconds']\nnumerical = data.filter(items=numerical_names)\nnumerical_A3Base = data_A3Base.filter(items=numerical_names)",
"execution_count": 37,
"outputs": []
},
{
"metadata": {
"trusted": false,
"collapsed": true
},
"cell_type": "code",
"source": "numerical.values[:5,:]",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"trusted": false,
"collapsed": true
},
"cell_type": "code",
"source": "numerical_A3Base.values[:5,:]",
"execution_count": null,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Now the response(s)\nTotalBytes should never be negative so far as I'm aware, so let's fix this:"
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "response_names = ['logTotalBytes', 'logPrimaryBitsPerSecond', 'logSecondaryBitsPerSecond', 'logTertiaryBitsPerSecond']\nresponses = data.filter(items=response_names)\nresponses_A3Base = data_A3Base.filter(items=response_names)",
"execution_count": 38,
"outputs": []
},
{
"metadata": {
"trusted": false,
"collapsed": true
},
"cell_type": "code",
"source": "responses.values[:5,:]",
"execution_count": null,
"outputs": []
},
{
"metadata": {
"trusted": false,
"collapsed": true
},
"cell_type": "code",
"source": "responses_A3Base.values[:5,:]",
"execution_count": null,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## How to unmuddle..."
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "def getCategNames(df):\n return np.concatenate([np.unique(df[col].values) for col in df.columns])",
"execution_count": 39,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "def unencodeOneHot(ohArr, df):\n categNames = getCategNames(df)\n return [categNames[np.where(ohArr)[1]][j::2] for j in range(2)]",
"execution_count": 40,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "categNames_A3Base = getCategNames(categ_df_A3Base)",
"execution_count": 41,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "names_A3Base = np.concatenate((numerical_names, categNames_A3Base))",
"execution_count": 42,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# Building regressors on the data"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Prepare the data"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "First on a small problem, then on a progressively bigger ones"
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "from sklearn.preprocessing import PolynomialFeatures\nfrom sklearn.multioutput import MultiOutputRegressor\nfrom sklearn.preprocessing import StandardScaler",
"execution_count": 43,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "scaler = StandardScaler()",
"execution_count": 44,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "##### Making Covariates and Responses"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "X_full = np.hstack((scaler.fit_transform(numerical.values), categoricals))\ny_full = responses.values\ny_full_pbps = y_full[:,1]",
"execution_count": 45,
"outputs": [
{
"output_type": "stream",
"text": "/Users/aberk/anaconda/lib/python3.5/site-packages/sklearn/utils/validation.py:444: DataConversionWarning: Data with input dtype int64 was converted to float64 by StandardScaler.\n warnings.warn(msg, DataConversionWarning)\n",
"name": "stderr"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "X_A3Base = np.hstack((scaler.fit_transform(numerical_A3Base.values), categoricals_A3Base))\ny_A3Base = responses_A3Base.values\ny_A3Base_pbps = y_A3Base[:, 1]",
"execution_count": 46,
"outputs": [
{
"output_type": "stream",
"text": "/Users/aberk/anaconda/lib/python3.5/site-packages/sklearn/utils/validation.py:444: DataConversionWarning: Data with input dtype int64 was converted to float64 by StandardScaler.\n warnings.warn(msg, DataConversionWarning)\n",
"name": "stderr"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "##### Removing nan values?"
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "nonnanrows_full = [not np.isnan(y_full_pbps[j]) for j in range(y_full_pbps.shape[0])]\n\nX_full_nonnan = X_full[nonnanrows_full, :]\ny_full_nonnan = y_full_pbps[nonnanrows_full]",
"execution_count": 47,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "nonnanrows = [not np.isnan(y_A3Base_pbps[j]) for j in range(y_A3Base_pbps.shape[0])]\n\nX_nonnan = X_A3Base[nonnanrows, :]\ny_nonnan = y_A3Base_pbps[nonnanrows]",
"execution_count": 48,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "print('There were no nan values to remove: {}'.format(X_full.shape == X_full_nonnan.shape))\nprint('Number of training examples is {}.'.format(X_full_nonnan.shape))",
"execution_count": 49,
"outputs": [
{
"output_type": "stream",
"text": "There were no nan values to remove: False\nNumber of training examples is (19855, 59).\n",
"name": "stdout"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "print('There were no nan values to remove: {}'.format(X_A3Base.shape == X_nonnan.shape))\nprint('Number of training examples is {}.'.format(X_nonnan.shape))",
"execution_count": 50,
"outputs": [
{
"output_type": "stream",
"text": "There were no nan values to remove: True\nNumber of training examples is (2711, 20).\n",
"name": "stdout"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "##### Train Test Split"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "print('Splitting full vanilla data into train and test...', end='')\nXf_train, Xf_test, yf_train, yf_test = train_test_split(X_full_nonnan, y_full_nonnan)\nprint('done.')",
"execution_count": 51,
"outputs": [
{
"output_type": "stream",
"text": "Splitting full vanilla data into train and test...done.\n",
"name": "stdout"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "print('Splitting vanilla data into train and test...', end='')\nX_train, X_test, y_train, y_test = train_test_split(X_nonnan, y_nonnan)\nprint('done.')",
"execution_count": 52,
"outputs": [
{
"output_type": "stream",
"text": "Splitting vanilla data into train and test...done.\n",
"name": "stdout"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "##### Polynomial features"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "print('Generating interaction features of degree ≤ 2...', end='')\npoly = PolynomialFeatures(degree=2, interaction_only=True)\npolyf = PolynomialFeatures(degree=2, interaction_only=True)\nX_nonnan_poly2 = poly.fit_transform(X_nonnan)\nXfn_poly2 = polyf.fit_transform(X_full_nonnan)\nprint('done.')\n\nprint('Size of A3Base poly features is {}.'.format(X_nonnan_poly2.shape))\nprint('Size of full poly features is {}.'.format(Xfn_poly2.shape))\n\nprint('Splitting poly2 data into train and test...', end='')\nXp2_train, Xp2_test, yp2_train, yp2_test = train_test_split(X_nonnan_poly2, y_nonnan)\nXfp2_train, Xfp2_test, yfp2_train, yfp2_test = train_test_split(Xfn_poly2, y_full_nonnan)\nprint('done.')",
"execution_count": 53,
"outputs": [
{
"output_type": "stream",
"text": "Generating interaction features of degree ≤ 2...done.\nSize of A3Base poly features is (2711, 211).\nSize of full poly features is (19855, 1771).\nSplitting poly2 data into train and test...done.\n",
"name": "stdout"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## ElasticNet"
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "en = ElasticNetCV(l1_ratio=[.1, .5, .7, .9, .95, .99, 1], n_jobs=-1)",
"execution_count": 54,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Fitting on data with no interaction terms"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "en.fit(X_train, y_train)",
"execution_count": 55,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 55,
"data": {
"text/plain": "ElasticNetCV(alphas=None, copy_X=True, cv=None, eps=0.001, fit_intercept=True,\n l1_ratio=[0.1, 0.5, 0.7, 0.9, 0.95, 0.99, 1], max_iter=1000,\n n_alphas=100, n_jobs=-1, normalize=False, positive=False,\n precompute='auto', random_state=None, selection='cyclic',\n tol=0.0001, verbose=0)"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "Rsq_vanilla_EN = en.score(X_test, y_test)\nprint('R^2 = {}'.format(Rsq_vanilla_EN))",
"execution_count": 56,
"outputs": [
{
"output_type": "stream",
"text": "R^2 = 0.889368122801296\n",
"name": "stdout"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "MSE_vanilla_EN = mean_squared_error(y_test, en.predict(X_test))\nprint('MSE = {}'.format(MSE_vanilla_EN))",
"execution_count": 57,
"outputs": [
{
"output_type": "stream",
"text": "MSE = 0.3405153293879938\n",
"name": "stdout"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Fitting on data with interaction terms\n\n(**Note:** we do negligibly better with poly-degree=3)"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "en.fit(Xp2_train, yp2_train)",
"execution_count": 58,
"outputs": [
{
"output_type": "stream",
"text": "/Users/aberk/anaconda/lib/python3.5/site-packages/sklearn/linear_model/coordinate_descent.py:491: ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Fitting data with very small alpha may cause precision problems.\n ConvergenceWarning)\n",
"name": "stderr"
},
{
"output_type": "execute_result",
"execution_count": 58,
"data": {
"text/plain": "ElasticNetCV(alphas=None, copy_X=True, cv=None, eps=0.001, fit_intercept=True,\n l1_ratio=[0.1, 0.5, 0.7, 0.9, 0.95, 0.99, 1], max_iter=1000,\n n_alphas=100, n_jobs=-1, normalize=False, positive=False,\n precompute='auto', random_state=None, selection='cyclic',\n tol=0.0001, verbose=0)"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "Rsq_poly2_EN = en.score(Xp2_test, yp2_test)\nprint('R^2 = {}'.format(Rsq_poly2_EN))",
"execution_count": 59,
"outputs": [
{
"output_type": "stream",
"text": "R^2 = 0.9298634386110338\n",
"name": "stdout"
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "MSE_poly2_EN = mean_squared_error(yp2_test, en.predict(Xp2_test))\nprint('MSE = {}'.format(MSE_poly2_EN))",
"execution_count": 60,
"outputs": [
{
"output_type": "stream",
"text": "MSE = 0.22480050308605712\n",
"name": "stdout"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Nice! I'm getting an R^2 value of .932, which means I'm explaining about 93 % of the variance for the A3 Camera in the Base Test."
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Notes\n\n* We really want to predict `log(PrimaryBitsPerSecond)`. And we probably want to scale it first — Yes! Scaling the numerical sends the $R^2$ from .72 to .93!\n* What are the other variables we want to scale? (See above...)\n* Are we allowed to use Quality in our prediction? Yes! "
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Random forest regressors"
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "from sklearn.ensemble import GradientBoostingRegressor, RandomForestRegressor, ExtraTreesRegressor",
"execution_count": 61,
"outputs": []
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "xTree = ExtraTreesRegressor(n_jobs=-1)\nrf = RandomForestRegressor(n_jobs=-1)\ngb = GradientBoostingRegressor()",
"execution_count": 62,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Fitting RF on vanilla data"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "gb.fit(X_train, y_train)",
"execution_count": 63,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 63,
"data": {
"text/plain": "GradientBoostingRegressor(alpha=0.9, criterion='friedman_mse', init=None,\n learning_rate=0.1, loss='ls', max_depth=3, max_features=None,\n max_leaf_nodes=None, min_impurity_decrease=0.0,\n min_impurity_split=None, min_samples_leaf=1,\n min_samples_split=2, min_weight_fraction_leaf=0.0,\n n_estimators=100, presort='auto', random_state=None,\n subsample=1.0, verbose=0, warm_start=False)"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "gb.score(X_test, y_test)",
"execution_count": 64,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 64,
"data": {
"text/plain": "0.98471306918555757"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "mean_squared_error(y_test, gb.predict(X_test))",
"execution_count": 65,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 65,
"data": {
"text/plain": "0.047051848105785624"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "This isn't fair..."
},
{
"metadata": {},
"cell_type": "markdown",
"source": "#### Visualizing important features"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "idx_importance = np.argsort(gb.feature_importances_)[::-1]\n\nprint(np.column_stack((names_A3Base, gb.feature_importances_))[idx_importance, :])",
"execution_count": 66,
"outputs": [
{
"output_type": "stream",
"text": "[['ImageRate' 0.1875158867429818]\n ['Quality' 0.1511907701971947]\n ['Keyframe' 0.13704966090840615]\n ['CollectSeconds' 0.08165236618421329]\n ['low' 0.07656360892746206]\n ['2048x1536' 0.06544005952895092]\n ['768x432' 0.06435143465941774]\n ['1920x1080' 0.06330958151661266]\n ['768x576' 0.06255643273093771]\n ['high' 0.045744525589884]\n ['low' 0.02445032090133445]\n ['high' 0.020394341484404888]\n ['1280x960' 0.012299542270778547]\n ['1280x720' 0.007481468357421095]\n ['384x288' 0.0]\n ['384x216' 0.0]\n ['NaN' 0.0]\n ['Off' 0.0]\n ['KbpsLimit' 0.0]\n ['medium' 0.0]]\n",
"name": "stdout"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Fitting RFs on data with degree 2 interactions"
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "gb.fit(Xp2_train, yp2_train)",
"execution_count": 67,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 67,
"data": {
"text/plain": "GradientBoostingRegressor(alpha=0.9, criterion='friedman_mse', init=None,\n learning_rate=0.1, loss='ls', max_depth=3, max_features=None,\n max_leaf_nodes=None, min_impurity_decrease=0.0,\n min_impurity_split=None, min_samples_leaf=1,\n min_samples_split=2, min_weight_fraction_leaf=0.0,\n n_estimators=100, presort='auto', random_state=None,\n subsample=1.0, verbose=0, warm_start=False)"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "gb.score(Xp2_test, yp2_test)",
"execution_count": 68,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 68,
"data": {
"text/plain": "0.98391166791454709"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "mean_squared_error(yp2_test, gb.predict(Xp2_test))",
"execution_count": 69,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 69,
"data": {
"text/plain": "0.051566045939548354"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Super unfair..."
},
{
"metadata": {},
"cell_type": "markdown",
"source": "#### Viewing important features"
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "polyFeatureNames_A3Base = poly.get_feature_names(names_A3Base)",
"execution_count": 70,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Print those features that were **above $1\\sigma$ importance**."
},
{
"metadata": {
"collapsed": true,
"trusted": true
},
"cell_type": "code",
"source": "idx_importance_sorted = gb.feature_importances_.argsort()[::-1]",
"execution_count": 71,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "th = gb.feature_importances_.mean() + gb.feature_importances_.std()\nfor j in idx_importance_sorted:\n coef = gb.feature_importances_[j]\n if coef < th:\n break\n else:\n ftrName = polyFeatureNames_A3Base[j]\n coef = gb.feature_importances_[j]\n print(ftrName, end='')\n print(' '*(30-len(ftrName)), end='')\n print(coef)",
"execution_count": 72,
"outputs": [
{
"output_type": "stream",
"text": "ImageRate 0.045772194412\nQuality NaN 0.0394980312404\nImageRate CollectSeconds 0.0391174161703\nKeyframe CollectSeconds 0.0375500294879\nKeyframe Off 0.0341215357276\nImageRate low 0.0318074683224\nImageRate NaN 0.0287853420985\nKeyframe low 0.028398654279\nQuality Off 0.0278292824982\nQuality 0.0270897019144\nlow 0.0253269250746\nQuality CollectSeconds 0.0235956556616\nKeyframe ImageRate 0.0230087754445\n1920x1080 NaN 0.0200962455656\nImageRate Off 0.0198177464728\n768x576 NaN 0.0194536776599\nCollectSeconds high 0.0181182628741\n2048x1536 NaN 0.0175035723368\nKeyframe 1280x960 0.0167390715394\nCollectSeconds NaN 0.0154485448602\nKeyframe NaN 0.0147333301171\nCollectSeconds Off 0.0146058987005\nQuality 2048x1536 0.0139905260138\n768x432 NaN 0.0134125225516\n",
"name": "stdout"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Using the full data? "
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "gbFull = GradientBoostingRegressor()\ngbFull.fit(Xf_train, yf_train)",
"execution_count": 73,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 73,
"data": {
"text/plain": "GradientBoostingRegressor(alpha=0.9, criterion='friedman_mse', init=None,\n learning_rate=0.1, loss='ls', max_depth=3, max_features=None,\n max_leaf_nodes=None, min_impurity_decrease=0.0,\n min_impurity_split=None, min_samples_leaf=1,\n min_samples_split=2, min_weight_fraction_leaf=0.0,\n n_estimators=100, presort='auto', random_state=None,\n subsample=1.0, verbose=0, warm_start=False)"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "gbFull.score(Xf_test, yf_test)",
"execution_count": 74,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 74,
"data": {
"text/plain": "0.94268334142715804"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "On the full data, we still get an R^2 coefficient of ~94%!"
}
],
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python [default]",
"language": "python"
},
"language_info": {
"mimetype": "text/x-python",
"file_extension": ".py",
"version": "3.5.3",
"name": "python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python"
},
"toc": {
"threshold": 4,
"number_sections": true,
"toc_cell": false,
"toc_window_display": false,
"toc_section_display": "block",
"sideBar": true,
"navigate_menu": true,
"moveMenuLeft": true,
"widenNotebook": false,
"colors": {
"hover_highlight": "#DAA520",
"selected_highlight": "#FFD700",
"running_highlight": "#FF0000",
"wrapper_background": "#FFFFFF",
"sidebar_border": "#EEEEEE",
"navigate_text": "#333333",
"navigate_num": "#000000"
},
"nav_menu": {
"width": "252px",
"height": "492px"
}
},
"gist": {
"id": "",
"data": {
"description": "Midvale Workbook — Video Compression Regression",
"public": true
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.