{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Stochastic Gradient Descent for Linear Regression\n", "\n", "Predict the miles per gallon from the curb weight and engine size, using Stochastic Gradient Descent and a linear model with L2 regularization. You need to code up SGD yourself such as in [here](https://github.com/ageron/handson-ml3/blob/main/04_training_linear_models.ipynb). " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
symbolingnormalized-lossesmakefuel-typeaspirationnum-of-doorsbody-styledrive-wheelsengine-locationwheel-baselengthwidthheightcurb-weightengine-typenum-of-cylindersengine-sizefuel-systemborestrokecompression-ratiohorsepowerpeak-rpmcity-mpghighway-mpgprice
03NaNalfa-romerogasstdtwoconvertiblerwdfront88.6168.864.148.82548dohc4130mpfi3.472.689.0111.05000.0212713495.0
13NaNalfa-romerogasstdtwoconvertiblerwdfront88.6168.864.148.82548dohc4130mpfi3.472.689.0111.05000.0212716500.0
21NaNalfa-romerogasstdtwohatchbackrwdfront94.5171.265.552.42823ohcv6152mpfi2.683.479.0154.05000.0192616500.0
32164.0audigasstdfoursedanfwdfront99.8176.666.254.32337ohc4109mpfi3.193.4010.0102.05500.0243013950.0
42164.0audigasstdfoursedan4wdfront99.4176.666.454.32824ohc5136mpfi3.193.408.0115.05500.0182217450.0
52NaNaudigasstdtwosedanfwdfront99.8177.366.353.12507ohc5136mpfi3.193.408.5110.05500.0192515250.0
61158.0audigasstdfoursedanfwdfront105.8192.771.455.72844ohc5136mpfi3.193.408.5110.05500.0192517710.0
71NaNaudigasstdfourwagonfwdfront105.8192.771.455.72954ohc5136mpfi3.193.408.5110.05500.0192518920.0
81158.0audigasturbofoursedanfwdfront105.8192.771.455.93086ohc5131mpfi3.133.408.3140.05500.0172023875.0
90NaNaudigasturbotwohatchback4wdfront99.5178.267.952.03053ohc5131mpfi3.133.407.0160.05500.01622NaN
\n", "
" ], "text/plain": [ " symboling normalized-losses make fuel-type aspiration \\\n", "0 3 NaN alfa-romero gas std \n", "1 3 NaN alfa-romero gas std \n", "2 1 NaN alfa-romero gas std \n", "3 2 164.0 audi gas std \n", "4 2 164.0 audi gas std \n", "5 2 NaN audi gas std \n", "6 1 158.0 audi gas std \n", "7 1 NaN audi gas std \n", "8 1 158.0 audi gas turbo \n", "9 0 NaN audi gas turbo \n", "\n", " num-of-doors body-style drive-wheels engine-location wheel-base length \\\n", "0 two convertible rwd front 88.6 168.8 \n", "1 two convertible rwd front 88.6 168.8 \n", "2 two hatchback rwd front 94.5 171.2 \n", "3 four sedan fwd front 99.8 176.6 \n", "4 four sedan 4wd front 99.4 176.6 \n", "5 two sedan fwd front 99.8 177.3 \n", "6 four sedan fwd front 105.8 192.7 \n", "7 four wagon fwd front 105.8 192.7 \n", "8 four sedan fwd front 105.8 192.7 \n", "9 two hatchback 4wd front 99.5 178.2 \n", "\n", " width height curb-weight engine-type num-of-cylinders engine-size \\\n", "0 64.1 48.8 2548 dohc 4 130 \n", "1 64.1 48.8 2548 dohc 4 130 \n", "2 65.5 52.4 2823 ohcv 6 152 \n", "3 66.2 54.3 2337 ohc 4 109 \n", "4 66.4 54.3 2824 ohc 5 136 \n", "5 66.3 53.1 2507 ohc 5 136 \n", "6 71.4 55.7 2844 ohc 5 136 \n", "7 71.4 55.7 2954 ohc 5 136 \n", "8 71.4 55.9 3086 ohc 5 131 \n", "9 67.9 52.0 3053 ohc 5 131 \n", "\n", " fuel-system bore stroke compression-ratio horsepower peak-rpm \\\n", "0 mpfi 3.47 2.68 9.0 111.0 5000.0 \n", "1 mpfi 3.47 2.68 9.0 111.0 5000.0 \n", "2 mpfi 2.68 3.47 9.0 154.0 5000.0 \n", "3 mpfi 3.19 3.40 10.0 102.0 5500.0 \n", "4 mpfi 3.19 3.40 8.0 115.0 5500.0 \n", "5 mpfi 3.19 3.40 8.5 110.0 5500.0 \n", "6 mpfi 3.19 3.40 8.5 110.0 5500.0 \n", "7 mpfi 3.19 3.40 8.5 110.0 5500.0 \n", "8 mpfi 3.13 3.40 8.3 140.0 5500.0 \n", "9 mpfi 3.13 3.40 7.0 160.0 5500.0 \n", "\n", " city-mpg highway-mpg price \n", "0 21 27 13495.0 \n", "1 21 27 16500.0 \n", "2 19 26 16500.0 \n", "3 24 30 13950.0 \n", "4 18 22 17450.0 \n", "5 19 25 15250.0 \n", "6 19 25 17710.0 \n", "7 19 25 18920.0 \n", "8 17 20 23875.0 \n", "9 16 22 NaN " ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "# Replace 'imports-85.csv' with the actual file path if it's not in the current directory\n", "dataset_url = \"https://raw.githubusercontent.com/plotly/datasets/master/imports-85.csv\"\n", "\n", "# Read the CSV file into a Pandas DataFrame\n", "df = pd.read_csv(dataset_url)\n", "\n", "# Now, you can work with the 'df' DataFrame as needed\n", "pd.set_option('display.max_columns', None) # Show all columns\n", "df.head(10)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[2548 130]\n", " [2548 130]\n", " [2823 152]\n", " [2337 109]\n", " [2824 136]\n", " [2507 136]\n", " [2844 136]\n", " [2954 136]\n", " [3086 131]\n", " [3053 131]\n", " [2395 108]\n", " [2395 108]\n", " [2710 164]\n", " [2765 164]\n", " [3055 164]\n", " [3230 209]\n", " [3380 209]\n", " [3505 209]\n", " [1488 61]\n", " [1874 90]\n", " [1909 90]\n", " [1876 90]\n", " [1876 90]\n", " [2128 98]\n", " [1967 90]\n", " [1989 90]\n", " [1989 90]\n", " [2191 98]\n", " [2535 122]\n", " [2811 156]\n", " [1713 92]\n", " [1819 92]\n", " [1837 79]\n", " [1940 92]\n", " [1956 92]\n", " [2010 92]\n", " [2024 92]\n", " [2236 110]\n", " [2289 110]\n", " [2304 110]\n", " [2372 110]\n", " [2465 110]\n", " [2293 110]\n", " [2337 111]\n", " [1874 90]\n", " [1909 90]\n", " [2734 119]\n", " [4066 258]\n", " [4066 258]\n", " [3950 326]\n", " [1890 91]\n", " [1900 91]\n", " [1905 91]\n", " [1945 91]\n", " [1950 91]\n", " [2380 70]\n", " [2380 70]\n", " [2385 70]\n", " [2500 80]\n", " [2385 122]\n", " [2410 122]\n", " [2385 122]\n", " [2410 122]\n", " [2443 122]\n", " [2425 122]\n", " [2670 140]\n", " [2700 134]\n", " [3515 183]\n", " [3750 183]\n", " [3495 183]\n", " [3770 183]\n", " [3740 234]\n", " [3685 234]\n", " [3900 308]\n", " [3715 304]\n", " [2910 140]\n", " [1918 92]\n", " [1944 92]\n", " [2004 92]\n", " [2145 98]\n", " [2370 110]\n", " [2328 122]\n", " [2833 156]\n", " [2921 156]\n", " [2926 156]\n", " [2365 122]\n", " [2405 122]\n", " [2403 110]\n", " [2403 110]\n", " [1889 97]\n", " [2017 103]\n", " [1918 97]\n", " [1938 97]\n", " [2024 97]\n", " [1951 97]\n", " [2028 97]\n", " [1971 97]\n", " [2037 97]\n", " [2008 97]\n", " [2324 120]\n", " [2302 120]\n", " [3095 181]\n", " [3296 181]\n", " [3060 181]\n", " [3071 181]\n", " [3139 181]\n", " [3139 181]\n", " [3020 120]\n", " [3197 152]\n", " [3230 120]\n", " [3430 152]\n", " [3075 120]\n", " [3252 152]\n", " [3285 120]\n", " [3485 152]\n", " [3075 120]\n", " [3252 152]\n", " [3130 134]\n", " [1918 90]\n", " [2128 98]\n", " [1967 90]\n", " [1989 90]\n", " [2191 98]\n", " [2535 122]\n", " [2818 156]\n", " [2778 151]\n", " [2756 194]\n", " [2756 194]\n", " [2800 194]\n", " [3366 203]\n", " [2579 132]\n", " [2460 132]\n", " [2658 121]\n", " [2695 121]\n", " [2707 121]\n", " [2758 121]\n", " [2808 121]\n", " [2847 121]\n", " [2050 97]\n", " [2120 108]\n", " [2240 108]\n", " [2145 108]\n", " [2190 108]\n", " [2340 108]\n", " [2385 108]\n", " [2510 108]\n", " [2290 108]\n", " [2455 108]\n", " [2420 108]\n", " [2650 108]\n", " [1985 92]\n", " [2040 92]\n", " [2015 92]\n", " [2280 92]\n", " [2290 92]\n", " [3110 92]\n", " [2081 98]\n", " [2109 98]\n", " [2275 110]\n", " [2275 110]\n", " [2094 98]\n", " [2122 98]\n", " [2140 98]\n", " [2169 98]\n", " [2204 98]\n", " [2265 98]\n", " [2300 98]\n", " [2540 146]\n", " [2536 146]\n", " [2551 146]\n", " [2679 146]\n", " [2714 146]\n", " [2975 146]\n", " [2326 122]\n", " [2480 110]\n", " [2414 122]\n", " [2414 122]\n", " [2458 122]\n", " [2976 171]\n", " [3016 171]\n", " [3131 171]\n", " [3151 161]\n", " [2261 97]\n", " [2209 109]\n", " [2264 97]\n", " [2212 109]\n", " [2275 109]\n", " [2319 97]\n", " [2300 109]\n", " [2254 109]\n", " [2221 109]\n", " [2661 136]\n", " [2579 97]\n", " [2563 109]\n", " [2912 141]\n", " [3034 141]\n", " [2935 141]\n", " [3042 141]\n", " [3045 130]\n", " [3157 130]\n", " [2952 141]\n", " [3049 141]\n", " [3012 173]\n", " [3217 145]\n", " [3062 141]]\n" ] } ], "source": [ "target_variable_column = df[['city-mpg']]\n", "feature_columns = df[['curb-weight', 'engine-size']]\n", "# Convert selected columns to a NumPy array\n", "y = target_variable_column.values\n", "X = feature_columns.values\n", "print(X)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }