diff --git a/How Much is Your Car Worth.ipynb b/How Much is Your Car Worth.ipynb index bfc2fbe..53c3b0d 100644 --- a/How Much is Your Car Worth.ipynb +++ b/How Much is Your Car Worth.ipynb @@ -4,14 +4,29 @@ "cell_type": "code", "execution_count": 1, "metadata": { - "collapsed": true + "collapsed": false }, "outputs": [], "source": [ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", - "from sklearn import linear_model" + "from sklearn import linear_model\n", + "from sklearn.cross_validation import train_test_split \n", + "from collections import defaultdict\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline" ] }, { @@ -67,6 +82,1495 @@ "source": [ "df = pd.read_csv(\"car_data.csv\")" ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "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", + "
PriceMileageMakeModelTrimTypeCylinderLiterDoorsCruiseSoundLeather
017314.1031298221BuickCenturySedan 4DSedan63.14111
117542.0360839135BuickCenturySedan 4DSedan63.14110
216218.84786213196BuickCenturySedan 4DSedan63.14110
316336.91314016342BuickCenturySedan 4DSedan63.14100
416339.17032419832BuickCenturySedan 4DSedan63.14101
\n", + "
" + ], + "text/plain": [ + " Price Mileage Make Model Trim Type Cylinder Liter \\\n", + "0 17314.103129 8221 Buick Century Sedan 4D Sedan 6 3.1 \n", + "1 17542.036083 9135 Buick Century Sedan 4D Sedan 6 3.1 \n", + "2 16218.847862 13196 Buick Century Sedan 4D Sedan 6 3.1 \n", + "3 16336.913140 16342 Buick Century Sedan 4D Sedan 6 3.1 \n", + "4 16339.170324 19832 Buick Century Sedan 4D Sedan 6 3.1 \n", + "\n", + " Doors Cruise Sound Leather \n", + "0 4 1 1 1 \n", + "1 4 1 1 0 \n", + "2 4 1 1 0 \n", + "3 4 1 0 0 \n", + "4 4 1 0 1 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mileage_p = df[['Price', 'Mileage']]\n", + "func_one = lambda x: 0 + .5 * x\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(mileage_p['Mileage'], mileage_p['Price'])\n", + "plt.ylabel('Price')\n", + "plt.xlabel('Mileage')\n", + "plt.plot(mileage_p.Price, func_one(mileage_p.Price), linewidth=2)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "dfa = mileage_p.loc[:, ['Price', 'Mileage']]\n", + "dfa.dropna(inplace=True)\n", + "price = dfa[['Price']]\n", + "mile = dfa['Mileage']" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Coeficient: [-0.11861458]\n", + "0.0204634473235\n" + ] + } + ], + "source": [ + "regrp = linear_model.LinearRegression()\n", + "regrp.fit(price, mile)\n", + "print(\"Coeficient: {}\".format(regrp.coef_))\n", + "print(regrp.score(price, mile))\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###This equation is not a good fit for the data\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "a = regrp.coef_[0]\n", + "func_two = lambda x: 0 + a * x\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaUAAAEPCAYAAADiVdsmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJztvX2YHcV1oP+eQdKgGSHNB0QCBALzYfGhBIuNpSw4KMEg\nko2xDdlAfnaWYBbHUZyBaLAFihOTmFWMYzCW82DFGIPs+IvE6xh+JkKyE22y3jWKBcQKICM5hhgR\nMJIihiD0NXP2j6qertu3+869d27f7pk57/PUM32ru6tO171Tp0/VqVOiqhiGYRhGGegoWgDDMAzD\niDClZBiGYZQGU0qGYRhGaTClZBiGYZQGU0qGYRhGaTClZBiGYZSGQpWSiPSIyF+JyNMi8pSILBGR\nPhHZJCLPiMhGEekJrr9FRHaIyHYRuTTIP19EtvlznwzyO0Xkqz7/uyKyoN3PaBiGYdRP0ZbSJ4GH\nVfUs4KeB7cDNwCZVPRP4tv+MiJwNXAWcDVwG3C0i4sv5NHCdqp4BnCEil/n864A9Pv8TwO3teSzD\nMAyjGQpTSiIyB3iLqn4OQFWPqOorwOXAen/ZeuAd/vjtwJdV9bCqPgvsBJaIyPHAMaq6xV/3+eCe\nsKyvARfn+EiGYRjGOCnSUjoVeFlE7hORx0TkHhHpBuaq6kv+mpeAuf74BOD54P7ngRNT8nf5fPzf\nH4NTesArItKXy9MYhmEY46ZIpTQNWAzcraqLgdfwQ3UR6mIgWRwkwzCMKcK0Aut+HnheVf/Rf/4r\n4BbgRRGZp6ov+qG5n/jzu4CTgvvn+zJ2+eNkfnTPycALIjINmKOqe5OCiIgpPsMwjAZRVRn7qsYo\nTCl5pfNjETlTVZ8B3go86dM1OKeEa4C/9rc8CHxJRO7EDcudAWxRVRWRIRFZAmwBfgNYG9xzDfBd\n4FdxjhNZ8rS8cVuJiNyqqrcWLcdYmJytxeRsLSZn68jrZb5ISwngd4EvisgM4IfAtcBRwAMich3w\nLPBrAKr6lIg8ADwFHAFWaBzifAVwPzAT5823weffC3xBRHYAe4Cr2/FQhmEYRnMUqpRU9Z+An005\n9daM69cAa1LytwKLUvIP4pWaYRiGUX6KXqdk1M/mogWok81FC1Anm4sWoE42Fy1AnWwuWoA62Vy0\nAHWyuWgBikJskz83Nlr2OSXDMIwykVe/aZaSYRiGURpMKRmGYRilwZSSYRiGURpMKRmGYRilwZSS\nYRiGURpMKRmGYRilwZSSYRiGURpMKRmGYRilwZSSYRiGURpMKRmGYRilwZSSYRiGURpMKRmGYRil\nwZSSYRiGURpMKRmGYRilwZSSYRiGURpMKRmGYRilwZSSYRiGURoKVUoi8qyIfF9EHheRLT6vT0Q2\nicgzIrJRRHqC628RkR0isl1ELg3yzxeRbf7cJ4P8ThH5qs//rogsaO8TGklEZLlI/0aXZHnR8hiG\nUS6KtpQUWKaqb1LVN/u8m4FNqnom8G3/GRE5G7gKOBu4DLhbRKKteD8NXKeqZwBniMhlPv86YI/P\n/wRwezseykjHKaHZX4c7L3Fp9tdNMRmGEVK0UgJI7vF+ObDeH68H3uGP3w58WVUPq+qzwE5giYgc\nDxyjqlv8dZ8P7gnL+hpwcevFN+qnbxDWzoRrcGntTJdnGIbhKFopKfAtEfmeiFzv8+aq6kv++CVg\nrj8+AXg+uPd54MSU/F0+H//3xwCqegR4RUT6Wv4UhmEYRkuYVnD9F6jqv4nIccAmEdkenlRVFREt\nSDaj5ey9AwYuBGa6zwOvw9AdedXmhgYjS2zvHar6SF51GYbRGgpVSqr6b/7vyyLydeDNwEsiMk9V\nX/RDcz/xl+8CTgpun4+zkHb542R+dM/JwAsiMg2Yo6p702QRkVuDj5tVdfN4ns2oRlUfEZF3wkqv\nKIZyUxTB/FWkAC8UkXeaYjKM5hCRZcCy3OtRLcYQEZEu4ChVfVVEuoGNwB8Bb8U5J9wuIjcDPap6\ns3d0+BJOcZ0IfAs43VtTjwIDwBbgm8BaVd0gIiuARar62yJyNfAOVb06RRZV1eTcljGBEenf6Jwp\nrvE564GVm1T3XFrrPsMw6iOvfrNIS2ku8HXvQDcN+KKqbhSR7wEPiMh1wLPArwGo6lMi8gDwFHAE\nWKGxRl0B3I8bFnpYVTf4/HuBL4jIDmAPUKWQDMMwjPJQmKVUJsxSmnzEw3drw/krG74zjBaRV79p\nSglTSpMVc3QwjPwwpZQjppQMwzAaI69+s+h1SoZhGIYxiiklwzAMozSYUjIMwzBKgyklwzAMozSY\nUjIMwzBKgyklwzAMozSYUjIMwzBKgyklwzAMozSYUjIMwzBKgyklwzAMozSYUjIMwzBKgyklwzBy\nQ0SWi/RvdEmWFy2PUX4sICsWkNUw8sC2D5ncWEBWw2gz9pY/XvoGnUK6BpfWzoy3EjGMdEwpGdb5\nphC/5d95iUuzv25tYxj5U+R26EYJCDrfaIjlQhGxIRb6Bl2bXBNlzISVg8AUb5dG2HsHDFwIhMN3\ndxQqklF6TClNecrb+drOsRMbVX1ERN7pf0/AkH2HxpgUrpRE5Cjge8Dzqvo2EekDvgosAJ4Ffk1V\n9/lrbwHeAwwDA6q60eefD9wPHA08rKo3+PxO4PPAYmAPcJWqPte+pzOapXgLzt7yW4H/vkwRGXVT\nhjmlG4CngMgN8GZgk6qeCXzbf0ZEzgauAs4GLgPuFpHI8+PTwHWqegZwhohc5vOvA/b4/E8At7fh\neSYYe+9wHe56XBp43eUVTbGT5K4zHXonrNzkknmNGUY7KFQpich84JeBzwKRgrkc1zvi/77DH78d\n+LKqHlbVZ4GdwBIROR44RlW3+Os+H9wTlvU14OKcHqXttMo5wTrfbFT1EdU9l7pkbWIY7aDo4btP\nAB8AZgd5c1X1JX/8EjDXH58AfDe47nngROCwP47Y5fPxf38MoKpHROQVEelT1b0tfYo20+qhrXIO\nsdjwmWFMRQpTSiLyK8BPVPVxEVmWdo2qqoi0ZXWviNwafNysqpvbUW9zRM4J84DPAGfPhG1ryEGx\nFOVsYJPkhlEufD+9LO96irSU/jNwuYj8Ms5BYbaIfAF4SUTmqeqLfmjuJ/76XcBJwf3zcRbSLn+c\nzI/uORl4QUSmAXOyrCRVvbU1j5UfgYJYDA8B/5t4mmzgPBFZ3sqOu3hnA8MwyoJ/Ud8cfRaRD+dV\nUeEJuAh4yB9/DFjlj28GPuqPzwaeAGYApwI/JA6T9CiwBDcv9TBwmc9fAXzaH18NfCWjfi26Depo\no+Uwez/cry71+L/q0/0KfRtbW2ffxrzrqP95Z+8Hlhf9PViyZMmlvPrNoueUQqJhuo8CD4jIdXiX\ncABVfUpEHsB56h0BVqhvGZzyuR83//Cwqm7w+fcCXxCRHTiX8Kvb8Bw5kVxPtK5QafKnvOunDMPI\nj1IoJVX9X8D/8sd7gbdmXLcGWJOSvxVYlJJ/EK/UJh8XAAMjjHpQ5uEIYM4GhmG0F4sSTrmjhMfz\nSAf74ahzYG2nOzPwOgzdBn3L3Od8nBBa4ejQTBkWYdowyk1e/aYpJcqrlKo75hUHYcaT7vgw0Lmn\n7OF3xqNcLMyQYZQXU0o5Ul6l1L/RRaiO5lXWA7/zGBx1luvktwH3jgBPwL7VZey0059h5SbVPZfW\nX0ZoLU4HOkqvjA1jsmP7KRmezgVOIc0D/gK4qwPuWjxZt1aILa1rL4GZi92ztncrCdvawzDaRykc\nHYws0hwNOp4D+t2i2dspv3faeJ0lIi+8B4GP0+7ntbVahtFeTCmVGE2JauD+DnzdRXGoTSNzMnnN\n36Q9Q9k79Mq26O6PA8MCpVX+hjFJKHoBVhkSJVk8Cyx3C1b7NlJjoai7rnsrdA3DUnWp60B4Dw0s\nPm3k2mLaZPZ+GFQ4VrNkrLft6q9vtJ5hV7e2fQGxJUtlTnn1m4U/WBlSGZRSlmLI6mz99QeC6w8k\nrt9dbzSGeiI3tKrTb75t+jY6RdyzNaMtWqJU09uiZ7iMCtuSpSJTXv2mDd+VhrQIBjeugZGzkvMZ\n/vovwp2dwfWdlde3LuJD0fMqvp5HKofVQnKP/vAErNzjDss//GgYExlTSqWmYwHclehsf2eNcwk/\nM2VOKbx+HvDu4FzsYJCcPwLGcEaov9Nv9dxUpTv47HOcIoZWKsaEzJtT2qKU7vaGMSkp2gQsQ6K0\nw3fdW1OG1fyw3G0Ks8M5FoXOHZXXD/rr4+Gu9HqyhwndPfUFZs0quzVtsjQzAO146s24d3VRQ5WW\nLE2UlFe/WfiDlSGVQSl5OSoUQ3qH2eMV1RVe6VwRHPdsrdU5+/J3uw5+g09LFXoPOQU4PkeIVkcV\nryzvikyllNZ2zdUxfpktWZoqKa9+04bvSoQ692ncUFLfoBtaG6rhEn45bu0OxLu+Dz8NKxfAyHPh\nsFP1vNBv4EIV3QUwHW5aDPoNEXm7pg5VpZfbPt5L1nAklHX3XMMwGqZobVuGRKkspTEtnY3OIpq2\nKzF8d8C5hWfdm2YRLE35nOZ1V4xreXV5XQfSvO8aK6/Smmq1zJYsTZWUV79Z+IOVIZVHKWUPJVV2\nnoN+DmnQK5Ke4er5pOTwVrNKqbHhrbSOf5zfTV7rj/ZXKiabQ7JkqZGUV79pw3cThtAD7kpgLUGQ\n0w5Y2Vv7/jDczzbgPty+ijfhtqK6ATh8EPaPa78kbfEwWq3yGvP0y/YgbLXMWVjU88aw9pqamFIq\nFeOJEzfyHAx0Zd2rbr7qNnj/KuiY7ZQawI049/HhI7A/ZT6pnBv9NbJ2yndui9stY7UM2fJaB1xJ\n0WvjjAIp2gQsQ6Ikw3deljoiOETDd0k35u6tzruup8qTjtHhqzTX6jnqhv/Sh6+yZKpP5mY84sa+\nr3E39dphivL/XlPljdz1V9u8VnPfr6UivyM0j3LNUioZWnMoaeQgrOuEE4AP4qI2PLMHhu6E2R8K\nNtLrqr43jLadRIA/Px04Pe2NtJZMWW+07rjxN93WvyGHw3aXALfi2+xdzZfZKs7sh/ddAjde7LYg\nqR5aLFA4wyiGArXs0cCjwBPAU8Cf+Pw+YBPwDLAR6AnuuQXYAWwHLg3yz8dNlOwAPhnkdwJf9fnf\nBRa0U+O3sK1qWDmRRTFW7Lromg0KcwOL4ViFhSll1hscNr3uZt90W71Qtwxv3IwG0J09XNnuG7xM\n2QuDp2qq9/u1VOh3pLmUW/BDdfm/07zSuBD4GPBBn78K+Kg/PtsrsOnAKcBO4p1ztwBv9scPA5f5\n4xXA3f74KuAr7WzccbRLYhFtlkKZPQysjhfUqsaRHHqHsl2fBxX6FM5VF2k8GQW7O3MRbrZs4f35\nK6U0WbKvKa5zq273nmHoGaps80GtVFj5RECfaGmqPvdESZNSKQUP1wX8I3COt4Lm+vx5wHZ/fAuw\nKrhnA7AUOB54Osi/GlgXXLPEH08DXm5n4zbZFslO9ADMeiXuqG/zCmVp1Jnth64d8XzJlQpdmral\nRfxP3rM1jrjdtcN1lINBh5hUcqH1lBaSJzVs0epaHW0Dzz9uJVJk55YRdTxN6aeGNipaqVqylJUm\npVLCbcf+BPAq8DGf9+/BeYk+A58C3hWc+yzON/p8YFOQ/xbgIX+8DTghOLcT6GtX4zbXJmmd2Lka\nK51wqCcME3SlwgUKs7RyQv9Yhe6tKc+cfINX9wYfdY5VzhA7yNgOo9p6Cp0LonVUrG7gdzFp3pCz\nLcnxDY8W/VxFp8n0G5moKa9+s1BHB1UdAc4TkTm4rQl+IXFeRUTbIYuI3Bp83Kyqm9tRb32ciQsn\ndCvwg8PAdDcHfg1uS3SmwwBwMtAD3EYwaY4LD5QkcgCYhxslvQvgGBj4EOy9DQZ+HjcnB6wEDp8O\nZ6UJtzgKiaSj7s39GyvXBK3vgJXLgDX1PK1OqpBB6S71k+sZ24u5ixeDiCwDluVdTym871T1FRH5\nJs7qeUlE5qnqiyJyPPATf9ku4KTgtvnA8z5/fkp+dM/JwAsiMg2Yo6p7M2S4tVXPMz6SndhNwF/g\nDJAXgd/ZBgNnudh3t1OpfH7vMPRNry5z5Lns+j5DopyZToEcfBLWLXaefmcB1+MUWFjfAHB9Pyy6\npGwdQ1nW/ei4t4Mv5zqxYsl9/ywjBf+ivjn6LCIfzquioky/Y/Gedbh/uL8HLsY5Oqzy+TdT7egw\nAzgV+CGxo8OjwBLccF/S0eHT/vhqJpyjQ8/WtHh2jEb7jpwfLlKYr85podPPOY3ec4TMtUWZHn27\nK7fNuMAPw12gsMjX1XM4a5twMuZBaNOQS1b9RX+v4/892FCVaw8b0ixDyqvfLPKBFgGPeUXzfeAD\nPr8P+BbpLuGrcfNC26mcDI5cwncCa4P8TuABYpfwU9rZuC1qp5T5mmhr8K5DlQroWHWLam9Tt9XD\nUoWuHdnl9mx180hdgUNCj7r5qSjAa+SpV7X4dMTlbUitK13u9uxbZJ3W5E6T7aVjoqZJp5TKlMqs\nlBJyLneKIvKsmz1S3fku9Uoi+tyryQgP1eV0jUC3xh59c/3f2bvc/fdr+n5Gc0acEhwtR8lwaMjw\nQhuOnSG6h119kZXWXCdTaUWGdWXvvWSWyMRL9p0Vn/LqN0sxp2TUS/camNkJFwDfAaZJ+nUv4PZX\nGsBFMdi1GLY/LCJ/oKpr4nLe56+/Sdxo6v/1nxfhokV0nAAn1pBnGLcGerQcQH4fWFO5jfl03Fbt\n2xL3z+tw82XvBnZ2wMdP8OX0U3Nvp3TiCfBrZzrnjIiBg5VbwVdMkv88HCGPbdaN/FBzFJm8FK1t\ny5CYMJZS3+7YkolcucMYeMd6a2Whwml+GK5isa26NU9p80HzE5/7ffkL/ZBe1fBdUHZ4X68yunYp\n7Z7B4PjcGlbYfE1zZa/dPt1bndV1kcaWX3KtVj1beGRFkLA3c0uWopRXv2mW0oRi5Dn4Tn+lt9w3\nce7ir/vPfcBLwBtxzodJD711s51lsxJnRS33+f9BvHvtDcA7cBbTZ0dguMNZZm/EbXlxEOeVd3SK\njCcCsjKOs/fxRP0fAX7k6/52jWedDwwtFpm1FV6rudOts36618BRi2Or7UngV3DTlnTCtjU0+WZt\nLsiG0UaK1rZlSJTIUqLGG7k71zNc+aYfec9tUHiDOqeE4xSO1ng+SAMr4IqEhRBZLRdoZaSIOX6e\nZ8auSussuv5Kf01oCc3xltUsb4mlWUBh/Ue/FltPYTlz/fNEMtaz222qF2Eo8zDpDhcHnMNI+DnZ\n7o07TtT6Hi1Zmgwpr36z8AcrQyqLUkrpMKs6Y+C+eMhu0CuOrpHqSA6zFUSrh/eiIKCDXmn1eQWT\npkDmaeyNF3rZzff5oUt65KEXKYMuf19SpigAbJe/Poom0f0a9Hrniw1aqcSylUCsMNLkTx+WSyiM\n1Qmnj4aUEqNejLGDRj3fY/X3Xk8MP1NylsqTTClNwMZtXI7ab+SM7qkUzfVEVsY8TbcUev35i/xx\nqMxCZdWrzspJKoTQkgoVzm3qrLGl/vi0DIXQMwSzXnNl9wRlHKtOiSbr6hqG2YHVElpMmfM8u2M5\nIsswfPb0tqy3zYN2T1hXo7EDDyfm9A5UrvHKrjuj7LQXEXOBtlS6lFe/Oeackoh0AO8CTlXVPxaR\nk4F5qrpl7MFBozFG+muf7xt0XmLX4OZl/gvOe+3UjOuPws0LfRw3nXIj8HsAr8LaYxJzTbj5mHfj\n8tcTR5IA+BBuXmk/8Ke4KA/7cGudz84SuBv+rCMuO1nfZ4Ljl4Hf9tfesBPkDXBdh4tiUR3FoHqe\n5yZXHetw812XA/f45wfniTi0Ob43ivZwcIw2T0ZlGOmHI+fA3YvjeucF7bSuE36wsLqU4YwvKS06\nwY1rRPpHo1E0EsGgLJEsDKNZ6nF0uBsYAX4R+GPcjPjdwH/KUa4ph+tMus5xnVzEgMJwv4gsd51L\nUml9B+fIMA8Xm/aG8F5chzwQ5L0AHNwJ3T/CeRoEnEDc6X3QHy8Pzr8Z+Bpu15DXcEpmHS7oRjL8\n0E04x4v3+Y3r0jYWBLeN1rtxSjO676QO+MmPYO/74b4aoXmqOmp//zP+eB8uNFJU9/XAfctEZGvC\naeEgrDjIaJy/FQdhRr+L3xd36v7vIy7/7s7Kej+TaCvtqnRJvwk4/Ib4exyT8+DODi/fhXDw6Tru\nMYcMY1JQj1JaoqpvEpHHAVR1r4ikxFczxkdkBc3DdXIvACcI3LwYBr7u3tS7iZXWqcDfBvcfDfwm\nfjdanIfc48Av4ayc14DXR+Dwfe7cwMW4KO04CypUhj+Fs5RCK+ODuBfzV4E7qVQ2y/31t+KCarzR\n50f3vxf4/4LybwL2K0x/HT7ZVdnBOwWlTa1DGQY+4Y8jBf01/zfyLKxSZp1w42Owco+zmqadA3d5\nK6jeTj1aF3YTcIA4FGNktf0F8GJHunVTFdtuBK5P7EJ7I85aHCv+ncWEMyY+9SilQyJyVPRBRI7D\nWU5GLvh5ctbjOv1rwHUuX3TnQ2VwAk5hnA3cQRCVG9chPouzpl7FWTaLOmDgD+FIh+v4IgV2MS5K\n+L/jhrw6gMO4jv1UnJXxFeD/93VGvBdn6UT8AHgP8XBheG7E17Eb13HvXw99J1JlsT0/AvvqCDia\n7Mx/z9cdKrhBAsU64jryaGgrpGOP6p5LfXTzztqd+t47KiOo34BThjf6vzfj2vFz/jj8TqrRqoCt\nw/2waHFSPtgXDB8OA32DIhLdHw3ZLU6WbxgTjjoms96N6wV34bYeeAb4taIn2SbChF2DMiQms0NP\nucgRIHRQiI4H1S10TXM0WFqjrPDayHOtV51X3GnecSA816/O625QnZNDJGeXxq7kt2m16/jswOkg\nchu/Up2DwrRdlQ4XsxW4r7E2m7PDOVEsTGmDczW5nxOjziLVLuBZG/JV19u91ZXdr5WLga8M2vsa\nrXS8qHuTw8zNEat/I8lNFpMOLPnFF7RkKa9+s97KzwLe79NZRTfGRGncJuTIiA4eKpUr1XXCkQv2\nFQrHJzrAKDBr0rU6Ok4qpdN83sJAkUXx75b68rpH3N/+IL/Xd77Ha+z6HQVwvUhjz7lZXkHMVzjG\nP8PCxDNcEd3bUOBU115XehnmaKWy6d4adsaMum93Dbvnm6/QeSjuuLu3Vnr/Rd50aS7iWdHVo6gb\nqvEmjH2761RINTdHzPAUTMT5G/R5PVuhc0czu/9O5oS51reyLTWXcuuouC9I/f7v9KIbZCI07jhl\nihTUkOvAr1BniYRrfcI1QF3+8zyvBJLu0KF7d1fYeWv8hj/Hd+6RMun1HXcUnihalxStV1oYdL6z\nA5nO1UqFeK5WW1DnaWz9pSulWh1IfG7WK/Ei2Wjt1ZzX0q9PC310rLq1XtHn7uE4qG26Ozqpi5jd\ndVQHu61Satnf+VhLAupRSs66q7GgeMpGS8+wNE0xNd+emku5dVT8LG5CYI9PI7iZ3ceA84tumDI3\nbgvkSgw1hcNUF6V0OEu9YrlAK4dxjtN4T6RjUxRB0orq9YoqPI46ulEleCiO4HCuViu7qJ5IWSXf\n5n9KnYWWVJAVw2ypHUhlu6R1vD3D6dZNOBwZXh9aovV15BnDbKv9diDDwbBeC5XSWMN3UV60Tirt\nWaeyUrItTVrbnmgu5dZR8T3hPxVwKc497OeALUU3TJkbd5wyZWzBEM3rnJTS4YTzPzPVWSdhpIXZ\n/v6kJXBFShk9Gs8r9ShVezlFi3iTVkdoIfUqdO2KLRH152vdE0VKyJ7fcR1/dC4rkkPf7sqhu6i8\ni1KujyJXbPBtVd+QV8KSSyiHyoW/9Qwb1fMmn1ZOMi9+1g2asFCntGVgSqnV7YnmUm4dFf9zSt42\n//eJohumzI07DnlqxHOLnAei6N1pnWAYzSCa1zhW4U2aHlV8MLgvjDkXdfhzdlR2fLXexFNj6x1y\n8ziREqulFGsqpeFqZZ1UctFcWKR8Ow/5eaQdbv+nnpQ2iORaqDTpHJAu76gDyYGE9VSvohvHnlKh\n80PPcHJPramYbPiu5e2puZRbR8WbgFXAAtzKyQ/idoY9Cnis6IYpc+M2L0/Wm+7coAO+Qt2QXOj0\nEHWys7Ta0aFL0wO0nuTL7VU3nxRu8rfUlzPjlYTH2kh2wNVIEfUk69/lZEgq0isDBRJuMcHySosl\nkqlvt5tHChXRLF9u6KEYWocXJOo9zj9rMqxS76FmlUWl9Ra2RShLhfVUl/PDOH7T3jOx95Brr/TN\nF6daaoXStzTalppLuXVUfBzwZ7iVmI/74+OAGcDpRTdMmRu3eXnCt+7I0pnvj8/znVrk9LBQK/cO\nimLMhS7hszR2Wkh2nGmRvq/UeI5oUON9j8L7wj2WovqioLC9XhGE1/dqteVX5cJcMf/irJukVTVf\n44CuozvwauyV2Huk0skjcn5Iyp8Wr69na/bwWPYbtjvfecjVH8oXKfmwjkiR145+3oLf9OoUd3tT\nTJZalvLqN8dcPKuqL+NcwdPYOdb9RjMkF4Y+pXDwCGyaDv+CixxwOrCWyhA+J+CiKryIWzS7Hfgo\nzqj9BG7n1zDs0IC/J1zkCS5EzghubfX3gOdSZDwa+C4u+sNngf+O+zlEIYMGcCsJovh8aTvYfsc/\nw2jdndFiVR926SRX5vv8Mw3gFvIuAlb455vvn+HbI7DvD6DnSmCxC7sEblldFGEiZGayLQ7C0NeS\nu9KKzHoS+hakxadjdFFt9xronO4iXUAcHeMNxIt3I17ADTysB17MMeJC38o48kbEypW4tYaGUVrq\nCcj6U7ghu7MZ7SRRVf3F8VQsIicBn8f1agp8RlXXikgf8FXccOGzuIW6+/w9t+CW7Q8DA6q60eef\nD9yP6ykfVtUbfH6nr2MxznPwKlVN62FLhbpV+rfBjR+BhR1wvcA9I/DnQ/Bns10oot/xV78XuBoX\nKSHqvFfitvg+gvuKP0ll5/QhXAjDiHU45fZe//kEXMd6Iy7E4TZ/HHGTL+8vgIW4n0fahn7rcJEN\nBnFRDv5sBG7siM//QIHElu5RfL9k2KW/xymkjwfXvn8IXnjUHe+7w7cbcM9ip+zARVz47zhFEDGA\nM/T3vwB8ka1iAAAgAElEQVQrn3R5UbSHZAiidVlREs6LY9l1LqhWAOuAV0jEMsS17XriqB2NY0FX\njUlNHSbaJtx/9XbgItzWox9rgek3DzjPH8/Cxag5Cxd2+oM+fxXwUX98NvAEMB03t7UTEH9uC/Bm\nf/wwcJk/XgHc7Y+vAr7STjN0fO0z1pqUcIJ/UN0QXp+6eYsLtNLpoaocf8/Zmu74EO65FC2sXRQc\nh/Mw8xLDUmE9Ud5p6jzwormoaJhx2q6sxarVz58+3DZ2u0Vrp6J6+/wzVy5MdfdG26knnTA2aPVc\nWLymKns+KZrPmbMj3UOv8eE7V0bPcDB/lloGNnxnKeeUV79ZT8WP+b/fD/K+l8MD/jXwVq/85vq8\necB2f3wLsCq4fgOwFDgeeDrIvxpYF1yzxB9PA15uZ+OOrz36NlavJ+rZ6jr2qKOJHAe6FWYfSd9D\naIFWd07d/viilI7+NE33assK5TNrpHJ+Kc0bsEfT56WWatZiVao8yLoS5c9OdUqoVkppC3QzHSsS\nUTRCZ5Eo2kX1olp/75iRIOJrm5toJ9v5I2uvptVxlAlTSJZam4pUSt/1fzcCv4IbCvthix/uFNzE\nxTHAvwf5En0GPgW8Kzj3WdzEwfnApiD/LcBD/ngbcEJwbifQ167GHWebpL7puq3Go071Nt/hJ3d3\njby9ujRegxN1qt3qLKkuTXd8iBRI1rmkTNHusf0aW1Phhn7R4ts0S+c0TVd0o529twoiWcJoEt1V\nVlJ6u3VppSIP2+fY0XLSLdM5gQLoOpDwQExxdqjcgbb1v4k0GZdmKiVLlvJMefWb9UQJ/x8i0oOb\nGPgUMBu/U1wrEJFZuP0FblDVV92cgENVVUS0VXWNIcetwcfNqrq5HfVmM+fa6rmgG64FeR3mH+Pm\nj+7DzekkN9D7EG5abhrO0QHcSOhduDmne3DTb1dROecRRbxejnNCSDIL2OvLeZXKOZ5FuHmUn/h6\n7wPOxE0BrsdNHYbzOtG81H3Abyms81/89w/Dfh8lvG+Z21co3CIjmotZuSdFQH/PtcT3/Daw7nF3\nvS6D66dXzkutXJBeDoA84ebuOhfAjOdg3/dh5dvcuaE7NZjL0TG22shvHmh7nVHVDWN8iMgyYFnu\nFRWsaafjt0QN8rbjdrYFNzQXDd/dDNwcXLcBWIIb4guH734d+HRwzVJ/PMGG73oPVb8V9/rgoV3+\njT+Kzp287iJNjxweDV/9lMZzQxu8ZRRG8p6rzgpLDt+d7Y9P0vQ5pJOD8pLnztXYPTs5LxXO14Sh\nhhqPTFBr1X763E/kBl4VHqieCNx1LqxNdymnwaG8lHKGgfts3Y2lIlJe/WY9Fb8R+DbwpP/808CH\nWvBAgvOM+0Qi/2P4uSOviJKODjNwm/z8kNjR4VGvoIRqR4dIQV3NhHJ0SC4QPVZh1ite3tVuaGlQ\n47VB4XVRnLtkBzw30bFG8z5p14bzL33qhuCOCxTLlYmyIieJSMEly4uGHOeknEtGLe/b7Z+z4cgE\nWQogbrfk8GPS2WL2SDT8VqngGo8jFyid3dVzfclYgnVvbVEjtJFFKMjv/9EW3aa0ieZSbh0V/73v\n8B/3nyVSUON8oAtxi2GeIF6YexkuCvm3cAtMNgI9wT2rcfNC26kczz8fN3+0E1gb5HcCDwA7cItq\nTmln446zfVZXLhDtUlK3MbhAnTNDr8ZzPtHkfmhdZDkqRB5pafm9mr6vUqSYwjh6oWWVtCr6vIx9\nCp2JuZk5Wt1hO6Xk26HhziDrnnTnkch7MKy/J2WeqTGlVK0cq2L8pcQ1bGbbjvGVYane35Mp/5R2\n0VzKraPi7/m/jwd5kyLmXd6N2wK5Mr2n4n+UMKrCfK+8orh4oRv0bRkd63yt3pxvjjoL7EqNPbyi\ne0/WOMpDWF6y7KjDj1zVw+HBrgNuS46l6vZjqu26HCuZ7q3emaCpt9X0TrxfU7zqdsftH3m7JS3D\nyKLKCjuU5ZQQdWrdKUOJppTKmKyds9oFzaXcOir+G1z4gMhS+lXgb4pukInQuG2QO+isu3ycs3PV\nWU8XaOVckWq1m3cUnic6tzRQOmFA1mhdU7gdRVdCmaUNAR6jsRUWDhcmLYVrfNm9IyR2nq1WvhXz\nKasbsaSq33iP09g9PrJmZms8fBfVu0Bjr71ojVXn4VpvztnrzCJ399T5oYbctu0Nvl3/Z6aU0tsF\nzaXcOio+DTen9DouRsp3sobBJmqaqEopkD/ROYWd/0Kt3mDvIo2HryLHg6jTn62xlRVuY5F0Tlga\n3Ncz7JRi6Ho9V9MdHsLI46nKJuFqXWsfpNkjCXfvMTtlYqcGTR/OnKNux9a+3U5hX6Gxog6vO7dm\nJ1WPwgDui4dBr2xKqTQzvGlpvP9fpvx9u2gu5TYgQDdwTNENMZEat8Uy1tiFNWuoKFIu0fqeaC+m\n5HX3a+X80blaaRVF1kRUTnS+91C4Jqc6IkKa9RRtozHqTFBzbqW2UkqbC6vvDdYrnpT7zw2UbdKR\nI1TK88est/Z31thCWEvl/f+bqimvfjNznZKIDAYfNcgXL8yd1XcZeeDWuFQECr1QRN6pNde6/EDh\nHHGx5xYBlwN/i1sXFAUJvQkXv265//wgLkbdC0AHsG4EjvwLvP90+F2c38jHg3vfMx3uOSuu87Wv\nwVOL4xh823DL2yJuAM7FrU+6F1V9RKT/MeCS9GfuG3Sx8FYchN/urF5TdXz242eWB7B3M/T1urXa\nNwRXrQLeDfzIp4pgscTBbm8CXh+B9T6O38DrLnZeJZpYu1QpQ3c/rO2ojpfHYpH+jRbTrlwkv0sj\nP2otnj2GQBkFSEa+kRtVgUIT0aWTUcVvAt4jbpHsIlyA1jOB63Ad3yDO8fE9xAoJ4Cmc42MUzHSg\nA+SnXFzco4E/pbITfRBYG8jSt8wtkl2HU2DTgd/0n7fjoki9zct32JexdzMMBEppABjalVDCB2Hd\nY6CzYeA0mCZOIf0XEoFWR9KUQ6VS3wbcc0kc0XtF0D7vxi3M/QtcENgkz/tn2X8Q9v8xrFzm8ofG\nVCApLxYjTpaQ7cB1/bDokvpePIyiseC4OVC0CViGRMmH72ovCA2dHXqHqud++nbDjF1ueG6eOgeF\nVG8yjeeewnrO1djNPGt+KNwtNnRFH1Q3hNgz5Oq7QF1ooXM1Du/Ts7XaTbt3KPt5owWw0YLaUeeD\nTEeBsV27Z73i55m2Os/ASPbkXk/Z3nbNfYc9w5Xtf2XqM7fpf8CGp5pqs6k715RXv1lr+G6Vqt4u\nIp9K12U6kJJv5ELSEnLDRdVv3zeOuKGz0PrRGTBtlttPCZyVMg/4K3+8cg/wGBw5FU49vbru13GW\n0zwqraQoTFA4dLX3DrjnQrh+Zmwd7bsf+Ar8zTegqzPYb+kc/5a5IOWBj85uiw4fXigKN3Qr8Mwe\n2PcubfotdVqX+7tvtfu70r/5Dm1uxBpqgificEnD/fC2rG0ymqaeN/nmhoeNsUcwjKaooQXf5v/+\nZkq6pmgtPRE0fotlrFizxKiTQGgZDWrl5HnkrJCcpA8dEdy23C51Har0hDvOWzfRG350T4/CzN0Z\nE/ipWytkh/jp3JERZSErKkNdb6dkRj5Ic2CI3L1np0b2btH3V8futVXnVzfm7t7Yjrnxveby3Nx3\nOrXbLa9+s/AHK0Mqu1JynVPXcBDd4VA8zJR0Ae/eCr2vVQ/jXREcH6+VruBdB/zQ1Q7ofs1tKT5n\nJI4AnuzEI+VXfweXPXw157V0ZRV1sj1bk8NmyQ44/XNWB9+9NX27jIty71TSFEeN86khhBpRPvV2\nmlO9cx3f92nDdy0vt0aFD+Fmsh9KSQ8W3SAToXFbJNty14km49stTHQiS4PONwpwmjx/v0LX4Uol\nc1xgKVSsFxpxdUQhhJaqc4NOzldVvs1nK6UsF+i0LTIq9ikaa61PyjVpVlk475U2PxaFT2p/Z5yh\nZFNc5btT4+U19iLQV2XhTvXOtZXfXdHytPnZNZdya1T4Mi4e3QdxO85ehAtbvgy4qOgGmQiN2xrZ\n+jamd9xV62R2x/8gybh3czReV5RmmYTRG5L5Y30O9ydKRtZOvuHPeqXaQrlAsyKA1/MGn93x1lJK\n0aLhpILsGWm2Y2m2c0pRCAec5ZqmONOfa4wXgbDs5He1fLzyW5q6Ka9+s5ZL+PG49SO/7tM3gS+r\n6pM17jFyoScl79VwncxItL+PSO8a5wZ+Ge59YhjYj3MPZzr83vT6690e1qFwBFjv9z1ahXM0eBFn\nUH8c3ETvMtj7zsBZwDtBzP66c4BYT7yOKVonBbHDwtA4HBYiDj4HA10kHEPcceSMcYJ3xjgheA73\nn9YozTgKxA4IfYvh2nCyvNPJdSuVjiUDr0PHc0B/dWnpjjDu9yDRd7EYru8P9pKqmJRXW4djlIU6\nNWInzsFhN/D+ojX0RNH4LZJtuXtzDmPIzT4E3JfuUNC9Nd5vKXxDvsZbKKdp7BYeWVHd6tyRK4bv\nDlA1NJfmXJGcr0oLtxPeEzlL9A5VzovVOzRXNa9S99xLZbndWyvbqPmICo3OyVQ/V9IRJbJIK5xR\nVnuZh9ParNbzNiOjJUtjpbz6zbEqPRq35fhfAv8I/AFwYtGNMVEat4Xy+U60b3elE0DWUE7adgzh\ncNVsdRv99Wm8+d4cdZv4XaTRduNpHV2KohhjSCgrJl84B5Ud/TspQ4aiqttLrbLsZFik5jrqxpVS\nzQjiB1KUdcJ7cOx9pdJ/QzZvZKl1qe1KCfgC8BhwG7Co6AaYiI2br8xZcymsTt9kLzkflDanElk8\ng+rmfyreyodjRZW0VBqJyXesug0Ko91lG+ssazx3Ewtax99RM+ruXrVrbYPP0DOU7U04fisnlrNv\ndxiv0FKr/y+nztxcEUppBHg1Iw0V3SAToXFzljllCOhK/xY9bXf18F1aINbk5zAQaVYw1Ua2AR/L\nIqivw638R0/bh6gxubLLbkYhJa3GWa8wxhYU/r4Dld9dV+YaqfEqJbOS2pOmWjsXMnw3VdJEVEpe\n7mC+JrlRX+chN2/Ttxt4ZGwl1aPxEGE0T5TsCEe3stiaIkdVx56uOCtcyjM9x7LLSA5vVQ4Jtrf9\ns5RuPVtopA0dRkOYrXXZtvmkIn8Pk7ed8+o3a3nfGSWmMnzMBbiR1tsJPLamw8rNqnsuFend6oKx\nPuhPXQLcSxwt/AbgwE7VA+e7CNVcAu+l0vvrRuBncJ5hh88TkeXqvLvSPM9ug75lLhL2kV3we6dC\n51GuvDAE0ki/C+1T7TkWX1MVyqUTbnwMVi6AM/ud51wUcqjZ9tt7R1yX+6xNewCeALyvjnAznXuc\nF2L0XOsBzoM7I2/HUQ8+rfSiI6eQR4ZRDorWtmVITDBLidRho7QN9UbX5qSsb5mlbq3TuRVDR5Vl\nRwFVZ2ml91+fxgFVk2+HUbSH5GLcrpQyuvwQXvZ8RwNrcBoYVgy3Ob9f3ULhruBzFOGi9pBetQz1\nW20p8o9UW6+tecseT1tZsnau8byaS7kFP9TngJeAbUFeH7AJeAbYCPQE524BduAifV4a5J+P2wdg\nB/DJIL8T+KrP/y6woJ2Nm1+7pXXUVY4Jgbtw99ZKBTFX4ygNsZMAo8Nwo6F9druO8qQ0hRct1k0o\nvEg5pg3/zfGK8CKt9sJrPNZdLG/980FeAQ5nO4JUbRk/htNC0tEhjIxez9zSaHunyNS6oZ9m2sqS\ntfMYz6q5lFvwQ70FeFNCKX0M+KA/XgV81B+fDTyB26TnFGAnIP7cFuDN/vhh4DJ/vAK42x9fBXyl\nnY2bX7tleaB17gjmkQLvtu6tzhI411so1V5iVE2+zz7A6FqoNBfztO3Mow45Symdlqbcas4rxfLH\n7vDB91YzBl5222U5cWiG3GMrB1d3V0pw2dqKKZYpGYUjPbagJUtlSZNSKfkHOyWhlLYDc/3xPGC7\nP74FWBVctwFYios88XSQfzWwLrhmiT+eBrzczsbNsc1Shu+qFr8m1rdcqc4NfM5rrvNMTqYn48UN\nqhtSipRN2t5C0fWjC2I17lyTw3eRd+DspIxjxcurEVg1VKJdBxJKtUZE7KQC6AmUaZrC6k51QEgp\nOy0M0O6xv8/o+aPt5t06saJ/Z5Ys1UpTSSn9e3As0WfgU8C7gnOfxS3sPR/YFOS/BXjIH28DTgjO\n7QT62tW4ObdbZBXsjtcYpVlPUWeXHl8uLi/ZoSY750FfXq21M1GMvqhzXejrvUhdjLul6qy5ZqNc\nh1tzJOVLjRWXEhE7qmt0c0CvLKNFqV07Espu2EXQGHs4r3mllGqlmpVkqdQpr36z1N53qqoiou2o\nS0RuDT5uVtXN7ai3WdTHKnPecosugR/VuPozJDzzZsLKL4r0PxZ7mh18Dm4K4qo9kyhjETD876r7\nLgUQERJecyNwSYcbcb0duBz4lsKRQ3Btp7tmxUEXJGRkKRxR6FkjImiGd5lI/2ClDN8B1na453iQ\nZojrus+XvW8z/N0yfxzFi1sNN34EFnbAGzrgpo76NnLbeycM/I/48wAwdGf1dWkcwXk2AhzpgO41\n7vlti22jHIjIMlxA7nwpgbY9herhu3n++Hji4bubgZuD6zYAS3BDfOHw3a8Dnw6uWeqPJ83wXUL2\n5dVzO8nhu6w5lNDTrGcrTD/sykhb93Ssusn40LqpmOtZnbBAhok3I4yG2w5Vlld7Yz2qLKjQQSHp\nkFDf8F19bRpaaI3NMZHYjLHx+pLfz+T24LI0cVNe/WYZHiyplD6Gnzvyiijp6DADOBX4IbGjw6Ne\nQQnVjg6RgrqaSeLokCJ/Zgw5d27aLqo26ouCo1YoMnVDbsm5otM0VjZRaKGKTQcD1+5GQg5FHf5Y\nwUuzgq9Wum7Xqr+x9gxlbcwbb/z1hW2jVe3Tqme0ZGm8aVIqJeDLwAvAIeDHwLU4l/Bvke4Svho3\nL7Q9/IckdgnfCawN8juBB4hdwk9pZ+OWJVXOO0UKRjOsgItSLKRo/6FBdXNCc4LPo1ZUzYn5ZpVS\nynfVsk45q6xKC21QnYXYO9RoENTG5Kgd+SL9OrOiJnqayC8Zk1IplSVNNqWU/KFXTsCHb/5pw3pR\n2JulCidr7KCwUKFzuHq7h2i9Ue+h2q7YafHeag/f5d9G2R08o8OT6Wu/8vvOerambekRf4/JbUMm\nbxibyZ4m+kuGKaUJ2Lg5ypsZpTvjh35frEyibSp6X4MZiWG9im0oguNedZ51adusR9ZO+hxIZWcb\nraOa85pb7JuP5VFfG9YTCLaYWGYk5qWqv9Pi4v1ZauX3PLFj5eXVb5ba+86oxnmGzf5IECPtEjfq\nuQjnDdfxNNw1M+EtdiLs/X14/yromA1rAbpgYKaLgxfGxLtvD/AYDCl87lLoBn4R+PaI80ZL8gLx\nDrLLo/oGgZS4eDfh5LrndfiPX1PzKqvCt9mHgliCH4Lhp2HtzMpYhLcCTyXiBLZTxlbECTSMFIrW\ntmVITBBLicwQORWT4mlrZfycRHKB7P3qojxUXku1teXX7yQXnc5RFxcvPWZbq+aR8mvL2kMn8TXh\nmqbOHcnrqu9pfo4gO1pHWl75hj0tNdKO7RsezukZNI9yzVKaUPQNwpkp1krIwedgoIvUqNtyRvX1\nu4Cf88ffPwj776A6MncH3DjkLJzrZ7r1NNuB/Qdh+gxYL3HE8YGDRby9N4rWEXnbX3Mb3HMbrBWX\ne9PpcNQ3ROTtyeszIqa/M3ld44ykfafvGn+5zVD126gjIroREv9O1s50/lk3jgBPwNDqYr7TcmFK\nacJxAW6BasQAcD1u64OB1+G11S4/uRBVlkN3txtCi7gJ2K84V3qAGgqvYw/suw3uWwnDM+HwTJjT\nCccC78YNAb4ADD8Z/2PtvaNygW00fDfwOgxtdltqdCxwivS1tv9D+vrGqLNvGdwplUNn6zrhmZSO\nuBUddrLNBl6HodTvtP4yjXKR/J0s6oCVe+w7dZhSmlDsvQPuuTCwVkZg6PNw34nufEVnldJhXtvh\n9lGKIge8CnSL29cH4MbpMPxnsPf9KR3j5sq5jkjBrAc+DnwFeBFYuSeqsdIaGemHw7g5q6HNMPsP\n4S4f6eGmftBU66MRJsNcxxgWXObztOrZxy4nVWmW3jI2JhBFj0uWITFB5pS8rE1u1xDGwYuCfkb7\nG2kwV9GjVC9EXZ0+rxF63tW/JXl2BIPm55lo4VxH9bPXt3V5K2Uo4tnrLaeZ36Cl4n8nOTyH5lJu\n0Q9WhjSRlJKXt+5OgYrJ+mTU7sgdXDOVQ3x/1pqm6J7eoVqyVMqc5nDRuFKKy+ze6uof/xqejA5j\nddYmhOP5blr3e2iNa/FEd1GeSGkyKPa8+k0bvptgZE2mu+O0YZdw/PoSnCvxv+DmgnbjtkKPWIWb\nH3pmsasHoO+LcOZM+BUq57Ki4bubgP2HYf9/1Ywho2qZVxyEgcO4vbGiMryTRaPtcO3MeAgR4iHF\nZkmdF1qmuuf8eu7WuuapjKmO/U5qULS2LUNiAllK6W+zPVuzd2fNcsuOQgdd6YfxlmpsTQ1qdYDT\ncLfa3iG/J9OYlkO2DKNx+uoqI7vMtFBJSxNt0IhlmY+10IgMzZXdvuE7S5ZUzVIyatKxIGXB7BdF\n5F1AhgfcfcAn/PEjOAvqq8SLYL/T6RwgromrYR1+wWamVVQ/nXtU91w6vjKyeGZP5DLduJv23s1u\nQXLEAM4xo3nycxV3aB3u7fXJ2DcIB5+GG3HelublZxRA0dq2DIkJZSmlvc12Z8zRVMRN83M5kYUy\nJ2UR7tLgc+qmeU0t2EyXuRXBVDO37AjCHDVm+TC6M+0VgUU5Pkup7HM1eXw/liZ/yqvfNEtpgqEp\nb8Xu78DXGbWGVuHmVV6cCSsHvUWSXOi5GgY+wujapA/gXLbXAw/hFsfeiFvct4hGFmymuRWP900+\nSVzmfYNwsL+1b/eLiOeoxjM/1R7G7w5uC2KNElG0ti1DYgJZSjWeoe4o0oyGOOkZcoFZu4edRTCo\n1ZHAZ6ubP2rE/bw8b92NypOH/Hm2SSvKHsuSYxJ4illqfcqr3yz8wcqQJoNS8s9RZzy3rgOJIa9D\nfhfZjc6JoXrYrnadFdtkNDhcVl+HN56OsdF78+iE8+rYWzE0WOt304zSMyU2NZIppQnYuAU9S80O\nwSmf+WnzRVEQ1dTgn9l1JQO3znolLUBrmlz1dnhls74abfN8627VGqWsDQ+becko73dlqXXJlNIE\nbNyyJd9hDGc4MUS7m66uHr5jdXp5aYtg5yt0abAvk198Wt1R1dvhldlRoOhOOO/6m3MUKed3Zam1\nKa9+0xwdphR9g24fpnlUunoPKAz3i8hyVV0jIsDKle7c0J2quiZZkptc7zmvuo75wAHgz4dgxqPO\nESNzIn0SUKyTgObgRFKJxboz2osppSnFSL/7uxznVXYr8APgegEWw70Pi/Q+AaxW3XNs5NUl0r+s\n2qurbxB+ocOt44kY9foDVh6O1iGJ9GcooHo7vOi6bTPhO7hAtPs2N9UEkxDNMTqAjm7fUfGSUqMu\nU2KtYjIEGG6Kok3ANpmZl+F8nHcAq9plhub0LOOY8O/eWung0OOH2TZo5eZ92UNucVl9G+MoEKdp\ntddfz9ZKmWtNpNfl6LC6jBui1Xq2yZCaeb7x/EYtNd/uBciouZRb9IO1oeGOAnYCp+BirT0BnNWO\nxs3hWcb1Q61eGLpQs0P1ZO9gG8sS7YJbpdSqomiPt6Mq81zFZO6Ey9zukzlNhHbPq9+cCsN3bwZ2\nquqzACLyFeDtwNNFCtUc452/iPZjWuuHVjYcdMNvZ3c2Kom6YZ0/cAtw13a4QK7ZO2jqJA5AOZmf\nzTDazVRQSicCPw4+Pw8sKUiWQtGqSfEoKve2NTBwHqPRHQZeh6E7YeBD1JgbUOcUsTUub1+O4942\nV1EM1u7FMHXbXbwZNmkRkSuBy1T1ev/53cASVf3d4BoF/ii4bbOqbm6roHUQB/ZcG/5QWxLYMyM0\nUKkmWssmz1TB2r0YytbuIrIMWBZkfVhVpeX1TAGltBS4VVUv859vAUZU9fbgGs2jcZtBhGNxPts7\nVDlYfb5cP1TDMKYmefWbU0EpTcP5PV8MvABsAX5dVZ8OrimFUhLhJOBf67j0JZw34dM+bffpeVVG\n8pPQMAzDYUppHIjILwF34Tzx7lXVP0mcL4tSOgYYyqn4rwAPAi/jtpz9D+BVVV7KqT7DMCYxppRy\npCxKKUSEGcAbgIXAWT4t9OmYNouzH7dv+v8BdqpyqM31G4ZRMkwp5UgZlVIziDAHeCPViuyNwFbg\nh8CxwMnA6TmI8G9UDyk+Dbygiv3QDGMSYUopRyaLUmoUETpwiusC4C3Az+MUVjv5ASmKTJVX2yyH\nYRgNYEopR6aqUmoGETqB06geUjwL6GqDCK+Sbo39UJUjbajfMAxMKeWKKaV8EaGXWHGFSiyPIcQ0\nnidWXuHfF21Y0TCaw5RSjphSKhd+WPEkqpXYWcBxbRBBSbfGtqvyWhvqN4zSY0opR0wpTXxEmAmc\nQbUSWwg0HNuvCfaRbo39yIYVjcmIKaUcMaU0NfHRMxZSrchObZMI/0q1NfY08LINKxplx5RSjphS\nMupBhKOABaRbY/1tEOEI6dbYD1TZ34b6DWMUU0o5YkrJyAsRuoAzSV8EPb0NIuwl3Rp7TpXhNtRv\nTFJMKeWIKSWjLIggOGeONCW2oE1iPEu1Nfa0KrvbVL8xATCllCOmlIyJjAjTcDsrpymy3jaIcIh0\na2yHKq+3oX6jAEwp5YgpJWOqIcIs3LBi2iLojjaIsJsUawz4V4t0PzEwpZQjppQMozZ+WHEu6Ups\nfpvE+CEpjh6q7G1T/UaAKaUcMaVkGK1HhOm4SPeRIntjcNyOSPevUz2kuJ2MDTSNxjCllCOmlAyj\nHIgwm1h5hdbYwjaJYBto1okppRwxpWQYExM/rHgC6SGpjm+TGDuoVmLbVdnXpvoLwZRSjphSMoyp\nQxHcIPAAAAr+SURBVBDpPm0RdHcbRHiNdGtsQm2gaUopR0wpGYZRCx/pPm0DzTPaUP1Pq7KtDfU0\nhCmlHDGlZBhGK/GR7ueTbo3NbbC4z6jyW62VcPxMKqUkIv8VuBX3Bf2sqj4WnLsFeA8wDAyo6kaf\nfz5wP3A08LCq3uDzO4HPA4uBPcBVqvqcP3cN8Pu+6NtU9fMZ8phSMgyjUEQ4GrfHWKjEDgGrVHmp\nSNnSmGxKaSEwAvw5MBgpJRE5G/gS8LPAicC3gDNUVUVkC/B+Vd0iIg8Da1V1g4isAM5V1RUichXw\nTlW9WkT6gH8EzvfVbgXOV9WqyUdTSoZhGI2RV7/ZjpXbVajqdlV9JuXU24Evq+phVX0W2AksEZHj\ngWNUdYu/7vPAO/zx5cB6f/w14GJ/vBzYqKr7vCLaBFzW+qcxDMMwWkUhSqkGJ+C2ro54HmcxJfN3\n+Xz83x8DqOoR4BUR6a9RlmEYhlFSpuVVsIhsAualnFqtqg/lVW+ziMitwcfNqrq5IFEMwzBKh4gs\nA5blXU9uSklVL2nitl3AScHn+TgLZxeV8bWi/Oiek4EXRGQaMEdV94jILiob8CTgb2vIe2sT8hqG\nYUwJ/Iv65uiziHw4j3rKMHwXTpQ9CFwtIjNE5FTcGoAtqvoiMCQiS0REgN8AvhHcc40//lXg2/54\nI3CpiPSISC9wCfBIzs9iGIZhjIPcLKVaiMg7gbXAscA3ReRxVf0lVX1KRB4AnsJt/bxCY/fAFTiX\n8Jk4l/ANPv9e4AsisgPnEn41gKruFZGP4DzwAP4ozfPOMAzDKA+2eBZzCTcMw2iUSeUSbhiGYRhp\nmFIyDMMwSoMpJcMwDKM0mFIyDMMwSoMpJcMwDKM0mFIyDMMwSoMpJcMwDKM0mFIyDMMwSoMpJcMw\nDKM0mFIyDMMwSoMpJcMwDKM0mFIyDMMwSoMpJcMwDKM0mFIyDMMwSoMpJcMwDKM0mFIyDMMwSoMp\nJcMwDKM0mFIyDMMwSkMhSklE/lREnhaRfxKR/ykic4Jzt4jIDhHZLiKXBvnni8g2f+6TQX6niHzV\n539XRBYE564RkWd8+m/te0LDMAyjGYqylDYC56jqzwDPALcAiMjZwFXA2cBlwN0iEu0B/2ngOlU9\nAzhDRC7z+dcBe3z+J4DbfVl9wB8Cb/bpwyLS046HywMRWVa0DPVgcrYWk7O1mJzlpxClpKqbVHXE\nf3wUmO+P3w58WVUPq+qzwE5giYgcDxyjqlv8dZ8H3uGPLwfW++OvARf74+XARlXdp6r7gE04RTdR\nWVa0AHWyrGgB6mRZ0QLUybKiBaiTZUULUCfLihagTpYVLUBRlGFO6T3Aw/74BOD54NzzwIkp+bt8\nPv7vjwFU9Qjwioj01yjLMAzDKCnT8ipYRDYB81JOrVbVh/w1vw8cUtUv5SWHYRiGMXHITSmp6iW1\nzovIbwK/TDzcBs4COin4PB9n4ewiHuIL86N7TgZeEJFpwBxV3SMiu6g0gU8C/raGPFpL3jIgIh8u\nWoZ6MDlbi8nZWkzOcpObUqqFd1L4AHCRqh4ITj0IfElE7sQNtZ0BbFFVFZEhEVkCbAF+A1gb3HMN\n8F3gV4Fv+/yNwBrv3CDAJcCqNHlUVdLyDcMwjPZSiFICPgXMADZ557r/q6orVPUpEXkAeAo4AqxQ\n1ciCWQHcD8wEHlbVDT7/XuALIrID2ANcDaCqe0XkI8A/+uv+yDs8GIZhGCVF4j7fMAzDMIqlDN53\nhSEil/lFujtEJHVor8X1fU5EXhKRbUFen4hs8gt8N4ZrqVq5kLhBOU8Skb8TkSdF5J9FZKCMsorI\n0SLyqIg8ISJPiciflFHOoKyjRORxEYkcfUonp4g8KyLf93JuKbGcPSLyV+IW4T8lIkvKJKeIvNG3\nYZReEZGBMsmYqPdJX8eXfLnFyamqUzIBR+HWQZ0CTAeeAM7Kuc63AG8CtgV5HwM+6I9XAR/1x2d7\nmaZ7GXcSW7ZbgDf744eBy/zxCuBuf3wV8JUm5ZwHnOePZwE/AM4qqaxd/u803LzihWWU09+/Evgi\n8GCJv/sfAX2JvDLKuR54T/DdzymjnP7+DuDfcM5WpZLR1/UvQKf//FXcHH1hcubWAZc9AT8HbAg+\n3wzc3IZ6T6FSKW0H5vrjecB2f3wLsCq4bgOwFDgeeDrIvxpYF1yzxB9PA15ukcx/Dby1zLICXbj5\nw3PKKCfOY/RbwC8AD5X1u8cppf5EXqnkxCmgf0nJL5WcQbmXAv9QRhmBPtxLZ68v4yGcU1hhck7l\n4bvRRbeeohbXzlXVl/zxS8Bcf9yqhcR94xFORE7BWXePllFWEekQkSe8PH+nqk+WUU5cCKwPACNB\nXhnlVOBbIvI9Ebm+pHKeCrwsIveJyGMico+IdJdQzoirgS/741LJqKp7gTuAfwVeAPap6qYi5ZzK\nSkmLFiCJuleJ0sglIrNwoZtuUNVXw3NlkVVVR1T1PJwl8vMi8guJ84XLKSK/AvxEVR/HLU+oogxy\nei5Q1TcBvwT8joi8JTxZEjmnAYtxQ0KLgddwIx2jlERORGQG8DbgL5PnyiCjiJwG3IgbwTkBmCUi\n7w6vabecU1kpJRfqnkSlpm8XL4nIPABxMf5+4vPHs5AYiRcS721GKBGZjlNIX1DVvy6zrACq+grw\nTeD8Esr5n4HLReRHuDfmXxSRL5RQTlT13/zfl4Gv44IZl03O54HnVTVa7vFXOCX1YsnkBKfct/r2\nhPK15X8C/o+q7vFWzP/ETW0U1pZTWSl9Dxdt/BT/NnMVbiFuu4kW/+L//nWQf7WIzBCRU4kXEr8I\nDHlvI8EtJP5GSlnhQuKG8OXeCzylqneVVVYROTbyChKRmbix8MfLJqeqrlbVk1T1VNxQzt+q6m+U\nTU4R6RKRY/xxN24uZFvZ5PTl/1hEzvRZbwWexM2HlEZOz68TD90lyy2DjNuBpSIy05f/Vtw60eLa\nstnJu8mQcG8xP8B5kNzShvq+jBu3PYQbY70WN9H4LdwWHhuBnuD61V627cDyIP98XGexE1gb5HcC\nDwA7cJ5opzQp54W4uY8ncJ3847gI66WSFVgEPObl/D7wAZ9fKjkTMl9E7H1XKjlxczVP+PTP0f9E\n2eT05fwMzrHln3Bv93PKJifQDezG7XAQ5ZVKRl/OB3FKfRvOq3F6kXLa4lnDMAyjNEzl4TvDMAyj\nZJhSMgzDMEqDKSXDMAyjNJhSMgzDMEqDKSXDMAyjNJhSMgzDMEqDKSXDaDMiMixuO4NtIvKAX/ib\ndt132i2bYRSNKSXDaD/7VfVNqroIt5D6feFJH4oFVb2gCOEMo0hMKRlGsfwDcLqIXCQi/yAi38BF\nU0BE/iO6SERWidt87wmJNzM8TUT+xkf0/nsReWMxj2AYrWNa0QIYxlTFW0S/jNsQDdwWIeeo6nP+\ns/rrfgm4HLeB2gGJdwH9DPBbqrpTRJYAdwMXt+0BDCMHTCkZRvuZKSKP++O/Bz4HXIALbPlcyvVv\nBT6nqgcAVHWf31bk54C/dPEvAZiRr9iGkT+mlAyj/byubs+iUbxieS3jeqV6H6YO3IZsb0q53jAm\nLDanZBjlZxNwbeSlJyK9qjoE/EhEftXniYj8dJFCGkYrMKVkGO0nLTR/2u6eCqCqj+D2pPmeH/Yb\n9OffBVwnbjv4f8bNOxnGhMa2rjAMwzBKg1lKhmEYRmkwpWQYhmGUBlNKhmEYRmkwpWQYhmGUBlNK\nhmEYRmkwpWQYhmGUBlNKhmEYRmkwpWQYhmGUhv8HG7du+ExkmfMAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(mileage_p['Price'], mileage_p['Mileage'])\n", + "plt.xlabel('Price')\n", + "plt.ylabel('Mileage')\n", + "plt.plot(mileage_p.Price, func_two(mileage_p.Price), linewidth=2)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(price, mile)\n", + "plt.xlabel('Price')\n", + "plt.ylabel('Mileage')\n", + "plt.plot(price, regrp.predict(price), linewidth=2)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##Start of Part 2:\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Use mileage, cylinders, liters, doors, cruise, sound, and leather to find the linear regression equation." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "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", + "
PriceMileageMakeModelTrimTypeCylinderLiterDoorsCruiseSoundLeather
017314.1031298221BuickCenturySedan 4DSedan63.14111
117542.0360839135BuickCenturySedan 4DSedan63.14110
216218.84786213196BuickCenturySedan 4DSedan63.14110
316336.91314016342BuickCenturySedan 4DSedan63.14100
416339.17032419832BuickCenturySedan 4DSedan63.14101
\n", + "
" + ], + "text/plain": [ + " Price Mileage Make Model Trim Type Cylinder Liter \\\n", + "0 17314.103129 8221 Buick Century Sedan 4D Sedan 6 3.1 \n", + "1 17542.036083 9135 Buick Century Sedan 4D Sedan 6 3.1 \n", + "2 16218.847862 13196 Buick Century Sedan 4D Sedan 6 3.1 \n", + "3 16336.913140 16342 Buick Century Sedan 4D Sedan 6 3.1 \n", + "4 16339.170324 19832 Buick Century Sedan 4D Sedan 6 3.1 \n", + "\n", + " Doors Cruise Sound Leather \n", + "0 4 1 1 1 \n", + "1 4 1 1 0 \n", + "2 4 1 1 0 \n", + "3 4 1 0 0 \n", + "4 4 1 0 1 " + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "set_one = df\n", + "set_one.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "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", + "
PriceMileageCylinderLiterDoorsCruiseSoundLeather
017314.103129822163.14111
117542.036083913563.14110
216218.8478621319663.14110
316336.9131401634263.14100
416339.1703241983263.14101
\n", + "
" + ], + "text/plain": [ + " Price Mileage Cylinder Liter Doors Cruise Sound Leather\n", + "0 17314.103129 8221 6 3.1 4 1 1 1\n", + "1 17542.036083 9135 6 3.1 4 1 1 0\n", + "2 16218.847862 13196 6 3.1 4 1 1 0\n", + "3 16336.913140 16342 6 3.1 4 1 0 0\n", + "4 16339.170324 19832 6 3.1 4 1 0 1" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "set_one = set_one[['Price', 'Mileage', 'Cylinder', 'Liter', 'Doors', 'Cruise', 'Sound', 'Leather']]\n", + "set_one.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "input_data = set_one[['Mileage', 'Cylinder', 'Liter', 'Doors', 'Cruise', 'Sound', 'Leather']]\n", + "predict_value = set_one['Price']" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Coeficient: [ -1.69747832e-01 3.79237893e+03 -7.87220732e+02 -1.54274585e+03\n", + " 6.28899715e+03 -1.99379528e+03 3.34936162e+03]\n", + "0.446264353673\n" + ] + } + ], + "source": [ + "regrt = linear_model.LinearRegression()\n", + "regrt.fit(input_data, predict_value)\n", + "print('Coeficient: {}'.format(regrt.coef_))\n", + "print(regrt.score(input_data, predict_value))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###This data set only has a 44% accuracy at predicting car price. Which sucks, but much better than just mileage" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Coeficient: [ -1.79922895e-01 -1.74267951e+03 -2.91228419e+03]\n", + "0.0592505439204\n" + ] + } + ], + "source": [ + "new_input = input_data[['Mileage', 'Doors', 'Sound']]\n", + "\n", + "newreg = linear_model.LinearRegression()\n", + "newreg.fit(new_input, predict_value)\n", + "print('Coeficient: {}'.format(newreg.coef_))\n", + "print(newreg.score(new_input, predict_value))" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Coeficient: [ 4054.20250438]\n", + "0.323859037595\n" + ] + } + ], + "source": [ + "new_i = input_data[['Cylinder']]\n", + "\n", + "newr = linear_model.LinearRegression()\n", + "newr.fit(new_i, predict_value)\n", + "print('Coeficient: {}'.format(newr.coef_))\n", + "print(newr.score(new_i, predict_value))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "####The number of cylinders is the most import feature of the car to predict price, although it is still only accurate 32% of the time by its self. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##Now time to try automating important variables\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import itertools\n", + "\n", + "dependant_variables = list(set_one.columns)\n", + "dependant_variables.remove('Price')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "(('Mileage', 'Cylinder', 'Liter', 'Doors', 'Cruise', 'Sound', 'Leather'), 0.4462643536728379)\n", + "\n", + "----------------------------------------------------------------------------------------------------\n", + "\n", + "[ -1.69747832e-01 3.79237893e+03 -7.87220732e+02 -1.54274585e+03\n", + " 6.28899715e+03 -1.99379528e+03 3.34936162e+03] 6758.7551436\n" + ] + } + ], + "source": [ + "choices = []\n", + "\n", + "def combos(list_of_series):\n", + " combos = []\n", + " x = len(list_of_series) + 1\n", + " for num in range(2,x):\n", + " combos.append(list(itertools.combinations(list_of_series, num)))\n", + " x -= 1\n", + " return itertools.chain(*combos)\n", + "\n", + "combos = combos(dependant_variables)\n", + "print(combos)\n", + "\n", + "def regression_for(combo):\n", + " combo = list(combo)\n", + " df = set_one.loc[:, combo + ['Price']]\n", + " df.dropna(inplace=True)\n", + " input_data = df[combo]\n", + " price = df['Price']\n", + " regr = linear_model.LinearRegression()\n", + " regr.fit(input_data, price)\n", + " return regr, regr.score(input_data, price)\n", + "\n", + "\n", + "for combo in combos:\n", + " regr, score = regression_for(combo)\n", + " choices.append((combo, score))\n", + " \n", + "best = sorted(choices, key=lambda x: x[1])[-1]\n", + "print(best)\n", + "print('\\n' + 50 * len(best) * '-' + '\\n')\n", + "regr, score = regression_for(best[0])\n", + "print(regr.coef_, regr.intercept_)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##Based on the data set used in the previous example, mileage, cylinders, liters, doors, cruise, sound, and leather still yields the most accurate prediction, 44.6%. Next I will incorporate make, model, trim, and type into my data set and see what combination yields the most accurate result\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def get_dict(groupby_obj):\n", + " keys = []\n", + " val = 1\n", + " x = len(groupby_obj) + 1\n", + " while val < x:\n", + " for key in groupby_obj.groups:\n", + " keys.append((key, val))\n", + " val += 1\n", + " return {el:v for el,v in keys}" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Convertible': 3, 'Coupe': 5, 'Hatchback': 1, 'Sedan': 4, 'Wagon': 2}" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "set_two = df\n", + "\n", + "\n", + "car_type = set_two.sort('Type')\n", + "c_type = car_type.groupby('Type')\n", + "\n", + "type_d = get_dict(c_type)\n", + "type_d" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Buick': 2,\n", + " 'Cadillac': 5,\n", + " 'Chevrolet': 6,\n", + " 'Pontiac': 4,\n", + " 'SAAB': 1,\n", + " 'Saturn': 3}" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "car_make = set_two.sort('Make')\n", + "car_make.groupby('Make').size()\n", + "make = car_make.groupby('Make')\n", + "make_d = get_dict(make)\n", + "make_d" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'9-2X AWD': 13,\n", + " '9_3': 21,\n", + " '9_3 HO': 30,\n", + " '9_5': 8,\n", + " '9_5 HO': 4,\n", + " 'AVEO': 19,\n", + " 'Bonneville': 32,\n", + " 'CST-V': 25,\n", + " 'CTS': 9,\n", + " 'Cavalier': 18,\n", + " 'Century': 7,\n", + " 'Classic': 11,\n", + " 'Cobalt': 27,\n", + " 'Corvette': 16,\n", + " 'Deville': 20,\n", + " 'G6': 14,\n", + " 'GTO': 28,\n", + " 'Grand Am': 31,\n", + " 'Grand Prix': 10,\n", + " 'Impala': 12,\n", + " 'Ion': 5,\n", + " 'L Series': 3,\n", + " 'Lacrosse': 15,\n", + " 'Lesabre': 2,\n", + " 'Malibu': 22,\n", + " 'Monte Carlo': 6,\n", + " 'Park Avenue': 29,\n", + " 'STS-V6': 23,\n", + " 'STS-V8': 26,\n", + " 'Sunfire': 1,\n", + " 'Vibe': 17,\n", + " 'XLR-V8': 24}" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "car_model = set_two.sort('Model')\n", + "model = car_model.groupby('Model')\n", + "model_d = get_dict(model)\n", + "model_d" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "47" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "car_Trim = set_two.sort('Trim')\n", + "trim = car_Trim.groupby('Trim')\n", + "trim_d = get_dict(trim)\n", + "len(trim_d)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [], + "source": [ + "final_data = set_two.replace({'Type': type_d, 'Make': make_d, 'Model': model_d, 'Trim': trim_d\n", + " })\n" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false + }, + "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", + "
PriceMileageMakeModelTrimTypeCylinderLiterDoorsCruiseSoundLeather
79916507.0702671622933454634100
80016175.9576041909533454634110
80115731.1328972048433454634110
80215118.8932282597933454634110
80313585.6368023566233454634100
\n", + "
" + ], + "text/plain": [ + " Price Mileage Make Model Trim Type Cylinder Liter Doors \\\n", + "799 16507.070267 16229 3 3 45 4 6 3 4 \n", + "800 16175.957604 19095 3 3 45 4 6 3 4 \n", + "801 15731.132897 20484 3 3 45 4 6 3 4 \n", + "802 15118.893228 25979 3 3 45 4 6 3 4 \n", + "803 13585.636802 35662 3 3 45 4 6 3 4 \n", + "\n", + " Cruise Sound Leather \n", + "799 1 0 0 \n", + "800 1 1 0 \n", + "801 1 1 0 \n", + "802 1 1 0 \n", + "803 1 0 0 " + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "final_data = final_data.dropna()\n", + "final_data.tail()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": false + }, + "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", + "
PriceMileageMakeModelTrimTypeCylinderLiterDoorsCruiseSoundLeather
017314.10312982212717463.14111
117542.03608391352717463.14110
216218.847862131962717463.14110
316336.913140163422717463.14100
416339.170324198322717463.14101
\n", + "
" + ], + "text/plain": [ + " Price Mileage Make Model Trim Type Cylinder Liter Doors \\\n", + "0 17314.103129 8221 2 7 17 4 6 3.1 4 \n", + "1 17542.036083 9135 2 7 17 4 6 3.1 4 \n", + "2 16218.847862 13196 2 7 17 4 6 3.1 4 \n", + "3 16336.913140 16342 2 7 17 4 6 3.1 4 \n", + "4 16339.170324 19832 2 7 17 4 6 3.1 4 \n", + "\n", + " Cruise Sound Leather \n", + "0 1 1 1 \n", + "1 1 1 0 \n", + "2 1 1 0 \n", + "3 1 0 0 \n", + "4 1 0 1 " + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "final_data.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(('Mileage', 'Make', 'Model', 'Trim', 'Type', 'Cylinder', 'Liter', 'Doors', 'Cruise', 'Sound', 'Leather'), 0.62448899040747941)\n", + "\n", + "----------------------------------------------------------------------------------------------------\n", + "\n" + ] + } + ], + "source": [ + "\n", + "dependant_variable = list(final_data.columns)\n", + "dependant_variable.remove('Price')\n", + "\n", + "type(final_data)\n", + " \n", + "def combos(list_of_series):\n", + " combos = []\n", + " x = len(list_of_series) + 1\n", + " for num in range(2,x):\n", + " combos.append(list(itertools.combinations(list_of_series, num)))\n", + " x -= 1\n", + " return itertools.chain(*combos)\n", + "\n", + "combos = combos(dependant_variable)\n", + "\n", + "def regression_for(combo):\n", + " combo = list(combo)\n", + " df = final_data.loc[:, combo + ['Price']]\n", + " df.dropna(inplace=True)\n", + " input_data = df[combo]\n", + " price = df['Price']\n", + " regr = linear_model.LinearRegression()\n", + " regr.fit(input_data, price)\n", + " return regr, regr.score(input_data, price)\n", + "\n", + "\n", + "for combo in combos:\n", + " regr, score = regression_for(combo)\n", + " choices.append((combo, score))\n", + " \n", + "best = sorted(choices, key=lambda x: x[1])[-1]\n", + "\n", + "print(best)\n", + "print('\\n' + 50 * len(best) * '-' + '\\n')\n", + "regr, score = regression_for(best[0])\n", + "#print(regr.coef_, regr.intercept_)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['Mileage', 'Make', 'Model', 'Trim', 'Type', 'Cylinder', 'Liter', 'Doors', 'Cruise', 'Sound', 'Leather']\n" + ] + } + ], + "source": [ + "print(list(best[0]))\n", + "#a_train, a_test, b_train, b_test = train_test_split(df, df.columns, test_size=0.33)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "#I have gotten my accuracy to 64.5% using these paramaters: \n", + "## Mileage, Make, Model, Trim, Type, Cylinder, Liter, Doors, Cruise, Sound, Leather " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Make a function that iterates over all posiible splits of data frame " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(('Mileage', 'Make', 'Model', 'Trim', 'Type', 'Cylinder', 'Liter', 'Doors', 'Cruise', 'Sound', 'Leather'), 0.62448899040747941)\n", + "\n", + "----------------------------------------------------------------------------------------------------\n", + "\n", + "[ -1.78288796e-01 -2.30475011e+03 1.23586041e+02 -9.13140802e+01\n", + " -2.20756434e+03 4.95954978e+03 -7.03194039e+02 -3.03269773e+03\n", + " 3.45680314e+03 -3.78689401e+02 3.39003845e+03] 24369.7163568\n" + ] + } + ], + "source": [ + "\n", + "choices = []\n", + "inal_data = final_data\n", + "\n", + "\n", + "def combos(list_of_series):\n", + " combos = []\n", + " x = len(list_of_series) + 1\n", + " for num in range(2,x):\n", + " combos.append(list(itertools.combinations(list_of_series, num)))\n", + " x -= 1\n", + " return itertools.chain(*combos)\n", + "\n", + "\n", + "\n", + "def regression_for(combo, param='Price', data_frame=final_data):\n", + " combo = list(combo)\n", + " df = data_frame.loc[:, combo + [param]]\n", + " df.dropna(inplace=True)\n", + " input_data = df[combo]\n", + " price = df[param]\n", + " regr = linear_model.LinearRegression()\n", + " regr.fit(input_data, price)\n", + " return regr, regr.score(input_data, price)\n", + "\n", + "\n", + "def optimization(df, param='Price'):\n", + " df = list(df.columns)\n", + " df.remove(param)\n", + " choices = []\n", + " series = combos(df)\n", + " for combo in series:\n", + " regr, score = regression_for(combo)\n", + " choices.append((combo, score))\n", + " return best\n", + "optimization(final_data) \n", + " \n", + "\n", + "print(best)\n", + "print('\\n' + 50 * len(best) * '-' + '\\n')\n", + "\n", + "print(regr.coef_, regr.intercept_)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] } ], "metadata": { @@ -85,7 +1589,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.4.3" + "version": "3.4.2" } }, "nbformat": 4, diff --git a/Simple Linear Regression.ipynb b/Simple Linear Regression.ipynb index 65d531a..1411dac 100644 --- a/Simple Linear Regression.ipynb +++ b/Simple Linear Regression.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -11,7 +11,19 @@ "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", - "from sklearn import linear_model" + "from sklearn import linear_model\n", + "from sklearn.cross_validation import train_test_split as tts" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline" ] }, { @@ -27,7 +39,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -42,6 +54,73 @@ "df = pd.DataFrame(ground_cricket_data)" ] }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "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", + "
Chirps/SecondGround Temperature
020.088.6
116.071.6
219.893.3
318.484.3
417.180.6
\n", + "
" + ], + "text/plain": [ + " Chirps/Second Ground Temperature\n", + "0 20.0 88.6\n", + "1 16.0 71.6\n", + "2 19.8 93.3\n", + "3 18.4 84.3\n", + "4 17.1 80.6" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -56,6 +135,135 @@ "5. Interpolate data: With a listening device, you discovered that on a particular morning the crickets were chirping at a rate of 18 chirps per second. What was the approximate ground temperature that morning? " ] }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "train, test = tts(df, test_size=.33)\n", + "tr_chirp = train[['Chirps/Second']]\n", + "tr_temp = train['Ground Temperature']\n", + "te_chirp = test[['Chirps/Second']]\n", + "te_temp = test['Ground Temperature']\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "regr = linear_model.LinearRegression()\n", + "regr.fit(tr_chirp, tr_temp)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": false + }, + "source": [ + "Below is a scatter plot of chirps per second based on ground temperature for crickets" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "chirps = df[['Chirps/Second']]\n", + "temp = df['Ground Temperature']\n", + "\n", + "\n", + "plt.scatter(chirps, temp)\n", + "plt.plot(te_chirp, regr.predict(te_chirp))\n", + "plt.xlabel('Chirps per second')\n", + "plt.ylabel('Ground temp in Farenheit')\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Percent Accuracy: 50.495659663845885%\n" + ] + } + ], + "source": [ + "x =regr.score(te_chirp, te_temp) * 10 ** 2\n", + "print('Percent Accuracy: {}%'.format(x))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "metadata": {}, @@ -74,15 +282,220 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [], "source": [ - "df = pd.read_fwf(\"brain_body.txt\")" + "bbw = pd.read_fwf(\"brain_body.txt\")" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "collapsed": false + }, + "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", + "
BrainBody
03.38544.5
10.48015.5
21.3508.1
3465.000423.0
436.330119.5
\n", + "
" + ], + "text/plain": [ + " Brain Body\n", + "0 3.385 44.5\n", + "1 0.480 15.5\n", + "2 1.350 8.1\n", + "3 465.000 423.0\n", + "4 36.330 119.5" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bbw.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "train_b, test_b = tts(bbw, test_size=.33)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "tr_brain = train_b[['Brain']]\n", + "tr_body = train_b['Body']\n", + "te_brain = test_b[['Brain']]\n", + "te_body = test_b['Body']" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.85785104063030027" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "regrb = linear_model.LinearRegression()\n", + "\n", + "regrb.fit(tr_brain, tr_body)\n", + "\n", + "regrb.score(te_brain, te_body)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This data shows to be acurate 80%-90% of the time. Though by looking at the graph, there are 2 extreme outliers that scew our data immensely.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(bbw[['Brain']], bbw['Body'])\n", + "plt.plot(te_brain, regrb.predict(te_brain) )\n", + "plt.xlabel('Mamalian Brain weight')\n", + "plt.ylabel('Mamalian Body weight')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "metadata": {}, @@ -109,7 +522,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 45, "metadata": { "collapsed": false }, @@ -118,6 +531,129 @@ "df = pd.read_fwf(\"salary.txt\", header=None, \n", " names=[\"Sex\", \"Rank\", \"Year\", \"Degree\", \"YSdeg\", \"Salary\"])" ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "task_two_data = df[[\"Sex\", \"Rank\", 'Year', 'Degree', 'YSdeg']]\n", + "salary = df[['Salary']]" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.85471806744109691" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "linear_regression = linear_model.LinearRegression()\n", + "linear_regression.fit(task_two_data, salary)\n", + "linear_regression.score(task_two_data, salary)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Based on the R^2 score, this is a good set of data to make predictions with" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "predict_model = linear_regression.predict([0, 3, 25, 1, 35]) - linear_regression.predict([1, 3, 25, 1, 35])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If the difference in the sexs, denoted by position 0 in the predict list, is not zero then sex is a factor in salary" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[-1241.7924996]]\n" + ] + } + ], + "source": [ + "print(predict_model)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Based on the small sample size sex is a factory in salary, but the dataset is so small and the source is not known, no conclusion can be drawn from my findings" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] } ], "metadata": { @@ -136,7 +672,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.4.3" + "version": "3.4.2" } }, "nbformat": 4, diff --git a/requirements.txt b/requirements.txt index 9c0bc7e..abdd30c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ gnureadline==6.3.3 -ipython==3.1.0 +ipython[notebook] Jinja2==2.7.3 jsonschema==2.4.0 MarkupSafe==0.23