PolynomialRegression/Polynomial Regression.ipynb

486 lines
222 KiB
Plaintext
Raw Normal View History

2021-06-24 11:07:41 +02:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Algorytm najszybszego spadku dla regresji wielomianowej. "
2021-06-24 11:07:41 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Skład grupy:\n",
2021-06-27 14:09:23 +02:00
"- Nowak Anna,\n",
"- Łaźna Patrycja,\n",
"- Bregier Damian"
2021-06-24 11:07:41 +02:00
]
},
{
"cell_type": "code",
2021-06-25 01:36:15 +02:00
"execution_count": 1,
2021-06-24 13:03:10 +02:00
"metadata": {},
"outputs": [],
"source": [
2021-06-25 01:36:15 +02:00
"import pandas as pd\n",
2021-06-25 09:42:03 +02:00
"import random\n",
2021-06-25 01:36:15 +02:00
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"np.set_printoptions(suppress=True)"
2021-06-24 13:03:10 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 0. Podstawowe informacje o zbiorze danych"
]
},
{
"attachments": {
"image.png": {
"image/png": "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
}
},
"cell_type": "markdown",
"metadata": {},
"source": [
"Ze względu na specyfikę wytycznych projektu zakładającego wykorzystanie jedynie dwóch cech: x i y oraz modelowanie zależności y od x za pomocą funkcji wielomianowej dobrany został przez nas odpowiedni dataset. Obejmuje on jedynie trzy kolumny, czyli: płeć, wzrost w calach oraz wagę w funtach, z czego ze względu na specyfikę projektu wykorzystywane są jedynie wzrost oraz waga. Każdy z parametrów zawiera po 10 tysięcy unikalnych wartości.\n",
"\n",
"![image.png](attachment:image.png)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. Wczytywanie i preprocessing danych"
]
},
2021-06-24 13:03:10 +02:00
{
"cell_type": "code",
2021-06-27 11:07:37 +02:00
"execution_count": 2,
2021-06-24 11:07:41 +02:00
"metadata": {},
2021-06-25 01:36:15 +02:00
"outputs": [],
2021-06-24 11:07:41 +02:00
"source": [
2021-06-27 11:07:37 +02:00
"# Stopień wielomianu\n",
"degree = 4\n",
"X_plot = np.linspace(0, 100, 1000)\n",
2021-06-25 01:36:15 +02:00
"initial_theta = np.matrix([0] * (degree + 1)).reshape(degree + 1, 1)"
2021-06-24 11:07:41 +02:00
]
},
{
"cell_type": "code",
2021-06-25 01:36:15 +02:00
"execution_count": 3,
2021-06-24 11:07:41 +02:00
"metadata": {},
2021-06-25 01:36:15 +02:00
"outputs": [],
2021-06-24 11:07:41 +02:00
"source": [
"# Wybór dwóch kolumn - dotyczących wzrostu i wagi\n",
2021-06-25 01:36:15 +02:00
"data = pd.read_csv('weight-height.csv')[[\"Height\", \"Weight\"]]\n",
"# Czyszczenie tabeli i wartości pustych\n",
2021-06-25 01:36:15 +02:00
"data = data.dropna()\n",
"data_matrix = np.matrix(data)\n",
"\n",
"m, n_plus_1 = data_matrix.shape\n",
"n = n_plus_1 - 1\n",
"X = (np.ones((m, 1)))\n",
"\n",
"for i in range(1, degree + 1):\n",
" Xn = np.power(data_matrix[:, 0:n], i)\n",
" Xn /= np.amax(Xn, axis=0)\n",
" X = np.concatenate((X, Xn), axis=1)\n",
"\n",
"X = np.matrix(X).reshape(m, degree * n + 1)\n",
"Y = np.matrix(data_matrix[:, -1])"
2021-06-24 11:07:41 +02:00
]
2021-06-24 13:03:10 +02:00
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. Metody do regresji wielomianowej"
2021-06-24 13:03:10 +02:00
]
},
{
"cell_type": "code",
2021-06-25 01:36:15 +02:00
"execution_count": 4,
2021-06-25 09:42:03 +02:00
"metadata": {
"scrolled": true
},
2021-06-27 14:09:23 +02:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"BGD:\n",
"f(x) = -65.64506277392492x^0 + 68.77648241255974x^1 + 114.75349304333467x^2 + 102.20675310280696x^3 + 52.800146520467116^4\n",
"82705 updates\n",
"\n",
"MBGD:\n",
"f(x) = -44.80297112432834x^0 + 44.010396798783276x^1 + 87.16025462485948x^2 + 99.3042290245095x^3 + 91.09402012892289^4\n",
"37501 updates\n",
"\n",
"SGD:\n",
"f(x) = 33.46300047596074x^0 + 42.75465449013618x^1 + 48.38013898892164x^2 + 51.32380253289521x^3 + 52.33242989471253^4\n",
"600001 updates\n",
"\n",
"momentum:\n",
"f(x) = 8.015549563834165x^0 + 38.12997860471219x^1 + 58.33870778356615x^2 + 71.22019895802777x^3 + 78.72511869002682^4\n",
"61 updates\n",
"\n"
]
}
],
2021-06-24 13:03:10 +02:00
"source": [
2021-06-27 14:09:23 +02:00
"def print_theta(theta):\n",
" print(\"f(x) = \", end=\"\")\n",
" for i,x in enumerate(theta.tolist()[:-1]):\n",
" x = x[0]\n",
" print(f\"{x}x^{i}\", end=\" + \")\n",
" print(f\"{theta.tolist()[-1][0]}^{len(theta) - 1}\")\n",
"\n",
"# Implementacja wzrosu na regresję wielomianową\n",
2021-06-24 13:03:10 +02:00
"def polynomial_regression(theta, x):\n",
2021-06-27 11:07:37 +02:00
" x = x/data[\"Height\"].max()\n",
2021-06-25 01:36:15 +02:00
" return sum(theta * np.power(x, i) for i, theta in enumerate(theta.tolist()))\n",
2021-06-24 13:03:10 +02:00
"\n",
"# Implementacja wzoru na RMSE, czyli pierwiastek z błędu średniokwadratowego\n",
2021-06-25 01:36:15 +02:00
"def mean_squared_error(theta, X, Y):\n",
" J = 1.0 / (2.0 * m) * ((X * theta - Y).T * (X * theta - Y))\n",
" return J.item()\n",
2021-06-24 13:03:10 +02:00
"\n",
"# Wzór na gradient prosty\n",
2021-06-27 11:07:37 +02:00
"def gradient(theta, X, Y):\n",
2021-06-25 01:36:15 +02:00
" return 1.0 / len(Y) * (X.T * (X * theta - Y)) \n",
2021-06-24 13:03:10 +02:00
"\n",
2021-06-25 09:42:03 +02:00
"# Batch gradient descent (BGD)\n",
2021-06-27 14:09:23 +02:00
"def BGD(X, Y, theta, cost_function = mean_squared_error, learning_rate=0.1, eps=10**-5, max_steps = 10000000000):\n",
2021-06-27 11:07:37 +02:00
" cost = cost_function(theta, X, Y)\n",
" logs = [[cost, theta]]\n",
" \n",
" for i in range(max_steps):\n",
2021-06-27 14:09:23 +02:00
" theta = theta - learning_rate * gradient(theta, X, Y)\n",
2021-06-27 11:07:37 +02:00
" next_cost = cost_function(theta, X, Y)\n",
" logs.append([next_cost, theta])\n",
" if abs(cost - next_cost) <= eps:\n",
" break\n",
" cost = next_cost\n",
" return theta, logs\n",
"\n",
2021-06-27 14:09:23 +02:00
"# BGD z momentum\n",
"def momentum(X, Y, theta, cost_function = mean_squared_error, learning_rate=0.1, momentum = 0.9, epochs=30):\n",
2021-06-25 01:36:15 +02:00
" cost = cost_function(theta, X, Y)\n",
2021-06-24 13:03:10 +02:00
" logs = [[cost, theta]]\n",
2021-06-27 14:09:23 +02:00
" delta_history = [np.matrix([0]*(degree+1)).T]\n",
" for i in range(epochs):\n",
" delta_history.append(momentum * delta_history[-1] + learning_rate * gradient(theta, X, Y))\n",
" theta = theta - delta_history[-1]\n",
2021-06-25 01:36:15 +02:00
" next_cost = cost_function(theta, X, Y)\n",
2021-06-24 13:03:10 +02:00
" logs.append([next_cost, theta])\n",
2021-06-25 01:36:15 +02:00
" cost = next_cost\n",
2021-06-24 13:03:10 +02:00
" return theta, logs\n",
2021-06-25 09:42:03 +02:00
"\n",
"# Mini-batch gradient descent (MBGD)\n",
2021-06-27 14:09:23 +02:00
"def MBGD(X, Y, theta, cost_function = mean_squared_error, learning_rate=0.1, epochs=5, batch_size=16):\n",
2021-06-25 09:42:03 +02:00
" cost = cost_function(theta, X, Y)\n",
" logs = [[cost, theta]]\n",
" start, end = 0, batch_size\n",
2021-06-24 13:03:10 +02:00
" \n",
2021-06-25 09:42:03 +02:00
" steps = m / batch_size\n",
" for i in range(epochs):\n",
" zipped_XY = list(zip(X, Y))\n",
" random.shuffle(zipped_XY)\n",
" X_shuffled, Y_shuffled = zip(*zipped_XY)\n",
" X_shuffled = np.concatenate(X_shuffled, axis=0) \n",
" Y_shuffled = np.concatenate(Y_shuffled, axis=0) \n",
" for j in range(int(steps)):\n",
" batch = X_shuffled[start:end,:], Y_shuffled[start:end,:]\n",
2021-06-27 14:09:23 +02:00
" theta = theta - learning_rate * gradient(theta, batch[0], batch[1])\n",
2021-06-25 09:42:03 +02:00
" cost = cost_function(theta, X, Y)\n",
" logs.append([cost, theta])\n",
"\n",
" if start + batch_size < batch_size:\n",
" start += batch_size\n",
" else:\n",
" start = 0\n",
" end = min(start + batch_size, m)\n",
" return theta, logs\n",
"\n",
"# Stochastic gradient descent (SGD)\n",
2021-06-27 14:09:23 +02:00
"def SGD(X, Y, theta, cost_function = mean_squared_error, learning_rate=0.1, epochs=5):\n",
" return MBGD(X, Y, theta, cost_function, learning_rate, epochs, 1)\n",
"\n",
"final_theta_BGD, logs_1 = BGD(X, Y, initial_theta)\n",
"print(\"BGD:\")\n",
"print_theta(final_theta_BGD)\n",
"print(f\"{len(logs_1)} updates\\n\")\n",
"\n",
"final_theta_MBGD, logs_2 = MBGD(X, Y, initial_theta, epochs = 60)\n",
"print(\"MBGD:\")\n",
"print_theta(final_theta_MBGD)\n",
"print(f\"{len(logs_2)} updates\\n\")\n",
"\n",
"final_theta_SGD, logs_3 = SGD(X, Y, initial_theta, epochs = 60)\n",
"print(\"SGD:\")\n",
"print_theta(final_theta_SGD)\n",
"print(f\"{len(logs_3)} updates\\n\")\n",
2021-06-25 09:42:03 +02:00
"\n",
2021-06-27 14:09:23 +02:00
"final_theta_momentum, logs_4 = momentum(X, Y, initial_theta, epochs = 60)\n",
"print(\"momentum:\")\n",
"print_theta(final_theta_momentum)\n",
"print(f\"{len(logs_4)} updates\\n\")"
2021-06-25 01:36:15 +02:00
]
},
{
"attachments": {
"image.png": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA70AAAFDCAYAAAD22mnsAAAgAElEQVR4Aey9i5MV1b33/fwBp97UqefkVl5m9gCHPSC3Y0TfWEblMigMaAheciByDorUaLQgJuflIFFHAoxIEIgKMUclyiUqCnEorAcPRnDAwQHHh0GMAySMWB7HGzMJMpMw7t9bq7tX9+q1e3ev3rt77758qaJm797d6/JZq7vXb/1u/4vwDwRAAARAAARAAARAAARAAARAAAQSSuB/JbRf6BYIgAAIgAAIgAAIgAAIgAAIgAAIEIReTAIQAAEQAAEQAAEQAAEQAAEQAIHEEoDQm9ihRcdAAARAAARAAARAAARAAARAAAQg9GIOgAAIgAAIgAAIgAAIgAAIgAAIJJYAhN7EDi06BgIgAAIgAAIgAAIgAAIgAAIgAKEXcwAEQAAEQAAEQAAEQAAEQAAEQCCxBCD0JnZo0TEQAAEQAAEQAAEQAAEQAAEQAAEIvZgDIAACIAACIAACIAACIAACIAACiSUAoTexQ4uOgQAIgAAIgAAIgAAIgAAIgAAIQOjFHAABEAABEAABEAABEAABEAABEEgsAQi9iR1adAwEQAAEQAAEQAAEQAAEQAAEQABCL+YACIAACIAACIAACIAACIAACIBAYglA6E3s0KJjIAACIAACIAACIAACIAACIAACEHoxB0AABEAABEAABEAABEAABEAABBJLAEJvYocWHQMBEAABEAABEAABEAABEAABEIDQizkAAiAAAiAAAiAAAiAAAiAAAiCQWAIQehM7tOgYCIAACIAACIAACIAACIAACIAAhF7MARAAARAAARAAARAAARAAARAAgcQSgNCb2KFFx0AABEAABEAABEAABEAABEAABCD0Yg6AAAiAAAiAAAiAAAiAAAiAAAgklgCE3sQOLToGAiAAAiAAAiAAAiAAAiAAAiAAoRdzAARAAARAAARKJHBy+700fUwVZYaPpakNy6i5829mid1vbaFfzJtME8ZUUyaTodrvTqWGppfp+JfmKdRz7DV6YsHNVD9hpHXOz5+l1k+tc/AJBEAABEAABECgOAIQeovjhqtAAARAAARAQCNwdvciGlpTR427j1Pb6mma0Fo9Yg7tOPUB7bznaspcNJUWPPEyHen6C31ybBstHn+Bdk7NDRvpxEAvtaycRNnMKJrV9Dy9eeJT6vnz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
}
},
"cell_type": "markdown",
"metadata": {},
"source": [
"Metoda gradientu prostego\n",
"![image.png](attachment:image.png)"
2021-06-24 13:03:10 +02:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3. Reprezentacja graficzna regresji wielomianowej"
2021-06-24 13:03:10 +02:00
]
},
{
"cell_type": "code",
2021-06-25 09:42:03 +02:00
"execution_count": 5,
2021-06-25 01:36:15 +02:00
"metadata": {
"scrolled": true
},
2021-06-24 13:03:10 +02:00
"outputs": [
2021-06-27 14:09:23 +02:00
{
"name": "stdout",
"output_type": "stream",
"text": [
"BGD:\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 720x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"MBGD:\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 720x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"SGD:\n"
]
},
2021-06-24 13:03:10 +02:00
{
"data": {
2021-06-27 14:09:23 +02:00
"image/png": "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
"text/plain": [
"<Figure size 720x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Momentum:\n"
]
},
{
"data": {
"image/png": "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
2021-06-24 13:03:10 +02:00
"text/plain": [
"<Figure size 720x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"def plot_polynomial_regression(theta):\n",
" fig = plt.figure(figsize=(10,5))\n",
2021-06-25 01:36:15 +02:00
" Y_plot = polynomial_regression(theta, X_plot).tolist()\n",
2021-06-24 13:03:10 +02:00
" chart = fig.add_subplot()\n",
2021-06-27 11:07:37 +02:00
" chart.plot(data[\"Height\"], Y ,\"go\")\n",
2021-06-24 13:03:10 +02:00
" chart.plot(X_plot, Y_plot, color=\"red\", lw=2, label=f\"degree {len(theta)}\")\n",
2021-06-27 11:07:37 +02:00
" plt.ylim([0,250])\n",
2021-06-24 13:03:10 +02:00
" plt.show()\n",
2021-06-27 14:09:23 +02:00
"\n",
"print(\"BGD:\")\n",
"plot_polynomial_regression(final_theta_BGD)\n",
"print(\"MBGD:\")\n",
"plot_polynomial_regression(final_theta_MBGD)\n",
"print(\"SGD:\")\n",
"plot_polynomial_regression(final_theta_SGD)\n",
"print(\"Momentum:\")\n",
"plot_polynomial_regression(final_theta_momentum)"
2021-06-27 11:07:37 +02:00
]
},
2021-06-24 13:03:10 +02:00
{
"cell_type": "markdown",
"metadata": {},
"source": [
2021-06-27 14:09:23 +02:00
"## 4. Regresja wielomianowa z wykorzystaniem gotowych bibliotek"
2021-06-24 13:03:10 +02:00
]
},
{
"cell_type": "code",
2021-06-27 14:09:23 +02:00
"execution_count": 6,
2021-06-24 13:03:10 +02:00
"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",
2021-06-27 14:09:23 +02:00
"execution_count": 7,
2021-06-24 13:03:10 +02:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2021-06-27 11:07:37 +02:00
"Pipeline(steps=[('polynomialfeatures', PolynomialFeatures(degree=4)),\n",
2021-06-24 13:03:10 +02:00
" ('linearregression', LinearRegression())])"
]
},
2021-06-27 14:09:23 +02:00
"execution_count": 7,
2021-06-24 13:03:10 +02:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = make_pipeline(PolynomialFeatures(degree=degree, include_bias=True), \n",
" LinearRegression())\n",
2021-06-25 01:36:15 +02:00
"model.fit(data[[\"Height\"]],Y)"
2021-06-24 13:03:10 +02:00
]
},
{
"cell_type": "code",
2021-06-27 14:09:23 +02:00
"execution_count": 8,
2021-06-24 13:03:10 +02:00
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
2021-06-27 11:07:37 +02:00
"4"
2021-06-24 13:03:10 +02:00
]
},
2021-06-27 14:09:23 +02:00
"execution_count": 8,
2021-06-24 13:03:10 +02:00
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
2021-06-27 11:07:37 +02:00
"image/png": "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
2021-06-24 13:03:10 +02:00
"text/plain": [
"<Figure size 720x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
2021-06-27 11:07:37 +02:00
"Y_plot_2 = model.predict([[x] for x in X_plot])\n",
2021-06-24 13:03:10 +02:00
"\n",
"fig = plt.figure(figsize=(10,5))\n",
"chart = fig.add_subplot()\n",
2021-06-25 01:36:15 +02:00
"chart.plot(data[\"Height\"], Y ,\"go\")\n",
2021-06-27 11:07:37 +02:00
"chart.plot(X_plot, Y_plot_2, color=\"red\", lw=2, label=f\"degree {degree}\")\n",
"plt.ylim([0,250])\n",
2021-06-27 11:07:37 +02:00
"plt.xlim([0,100])\n",
2021-06-24 13:03:10 +02:00
"degree"
]
2021-06-27 14:09:23 +02:00
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 720x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"polyfit_theta = np.polyfit(data[\"Height\"]/data[\"Height\"].max(), Y, degree)\n",
"plot_polynomial_regression(polyfit_theta)"
]
2021-06-24 11:07:41 +02:00
}
],
"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",
2021-06-27 11:07:37 +02:00
"version": "3.8.5"
2021-06-24 11:07:41 +02:00
}
},
"nbformat": 4,
"nbformat_minor": 4
}