From a954f800f69c6cdb24bb236e71263865e85dfe54 Mon Sep 17 00:00:00 2001 From: Anna Nowak Date: Thu, 24 Jun 2021 13:03:10 +0200 Subject: [PATCH] Work in progress --- Polynomial Regression.ipynb | 198 ++++++++++++++++++++++++++++++++++-- 1 file changed, 190 insertions(+), 8 deletions(-) diff --git a/Polynomial Regression.ipynb b/Polynomial Regression.ipynb index f647d4c..9c2201c 100644 --- a/Polynomial Regression.ipynb +++ b/Polynomial Regression.ipynb @@ -18,17 +18,29 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", - "import matplotlib.pyplot as plt" + "import matplotlib.pyplot as plt\n", + "import numpy as np" ] }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "degree = 6\n", + "X_plot = np.linspace(0, 150, 1000)\n", + "initial_theta = [0] * (degree + 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -131,21 +143,21 @@ ], "source": [ "df = pd.read_csv('AAPL.csv')\n", - "X = df['Low']\n", + "X = df[['Low']]\n", "Y = df['Volume']\n", "display(df.head(5))" ] }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 4, "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "
" + "
" ] }, "metadata": { @@ -155,11 +167,181 @@ } ], "source": [ - "fig = plt.figure(figsize=(20,10))\n", + "fig = plt.figure(figsize=(10,5))\n", "chart = fig.add_subplot()\n", "chart.plot(X,Y ,\"go\")\n", "plt.show()" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Metody do regresji wielomianowej" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "11\n", + "441.0\n" + ] + } + ], + "source": [ + "def polynomial_regression(theta, x):\n", + " value = 0\n", + " for i in range(len(theta)):\n", + " value += theta[i] * x**i\n", + " return value \n", + "\n", + "def mean_squared_error(Y_predicted, Y):\n", + " result = 0\n", + " for i in range(len(Y)):\n", + " result += (Y_predicted[i] - Y[i]) ** 2\n", + " return result/len(Y)\n", + "\n", + "def gradient(theta, X, Y):\n", + " return 1.0 / len(y) * (X.T * (X * theta - Y)) \n", + "\n", + "def gradient_descent(X, Y, theta, cost_function = mean_squared_error, alpha=0.1, eps=0.001, max_steps = 1000000):\n", + " cost = cost_function([polynomial_regression(theta, x) for x in X], Y)\n", + " logs = [[cost, theta]]\n", + " \n", + " for i in range(max_steps):\n", + " theta = theta - alpha * gradient(theta, X, Y)\n", + " next_cost = cost_function([polynomial_regression(theta, x) for x in X], Y)\n", + " logs.append([next_cost, theta])\n", + " if abs(cost - next_cost) <= eps:\n", + " break\n", + " return theta, logs\n", + " \n", + " \n", + "print(polynomial_regression([1,1,0,1], 2))\n", + "print(mean_squared_error([1,2,1,1],[1,2,43,1]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Metody do wykresów" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def plot_polynomial_regression(theta):\n", + " fig = plt.figure(figsize=(10,5))\n", + " Y_plot = [polynomial_regression(theta, x) for x in X_plot]\n", + " chart = fig.add_subplot()\n", + " chart.plot(X_plot, Y_plot, color=\"red\", lw=2, label=f\"degree {len(theta)}\")\n", + " chart.plot(X,Y ,\"go\")\n", + " plt.show()\n", + " \n", + "plot_polynomial_regression([1,100,0,1000]) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Wyniki za pomocą gotowej biblioteki" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import PolynomialFeatures, StandardScaler\n", + "from sklearn.pipeline import make_pipeline\n", + "from sklearn.linear_model import Ridge, LinearRegression" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Pipeline(steps=[('polynomialfeatures', PolynomialFeatures(degree=6)),\n", + " ('linearregression', LinearRegression())])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model = make_pipeline(PolynomialFeatures(degree=degree, include_bias=True), \n", + " LinearRegression())\n", + "model.fit(X,Y)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "Y_plot = model.predict([[x] for x in X_plot])\n", + "\n", + "fig = plt.figure(figsize=(10,5))\n", + "chart = fig.add_subplot()\n", + "chart.plot(X,Y ,\"go\")\n", + "chart.plot(X_plot, Y_plot, color=\"red\", lw=2, label=f\"degree {degree}\")\n", + "degree" + ] } ], "metadata": {