PolynomialRegression/Polynomial Regression.ipynb
Anna Nowak ef6371cea3 init
2021-06-24 11:07:41 +02:00

187 lines
34 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Algorytm najszybszego spadku dla regresji wielomianowej. \n",
"Zakładamy, że dysponujemy zbiorem składającym się z dwóch cech (x i y). Modelujemy zależność y od x za pomocą funkcji wielomianowej. Celem projektu jest implementacja metody najszybszego spadku dla tego problemu. Zakładamy kwadratową funkcję straty. Implementacja powinna umożliwiać podanie stopnia wielomianu, który ma być użyty do modelowania. Implementacja powinna zwracać wektor oszacowanych parametrów oraz pokazywać wizualnie zmiany wartości funkcji straty wraz z postępem uczenia."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Zbiór danych: https://www.kaggle.com/varpit94/apple-stock-data-updated-till-22jun2021?select=AAPL.csv\n",
"This dataset provides historical data of APPLE INC. stock (AAPL). The data is available at a daily level. Currency is USD."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Date</th>\n",
" <th>Open</th>\n",
" <th>High</th>\n",
" <th>Low</th>\n",
" <th>Close</th>\n",
" <th>Adj Close</th>\n",
" <th>Volume</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1980-12-12</td>\n",
" <td>0.128348</td>\n",
" <td>0.128906</td>\n",
" <td>0.128348</td>\n",
" <td>0.128348</td>\n",
" <td>0.100751</td>\n",
" <td>469033600</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1980-12-15</td>\n",
" <td>0.122210</td>\n",
" <td>0.122210</td>\n",
" <td>0.121652</td>\n",
" <td>0.121652</td>\n",
" <td>0.095495</td>\n",
" <td>175884800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1980-12-16</td>\n",
" <td>0.113281</td>\n",
" <td>0.113281</td>\n",
" <td>0.112723</td>\n",
" <td>0.112723</td>\n",
" <td>0.088485</td>\n",
" <td>105728000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1980-12-17</td>\n",
" <td>0.115513</td>\n",
" <td>0.116071</td>\n",
" <td>0.115513</td>\n",
" <td>0.115513</td>\n",
" <td>0.090676</td>\n",
" <td>86441600</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1980-12-18</td>\n",
" <td>0.118862</td>\n",
" <td>0.119420</td>\n",
" <td>0.118862</td>\n",
" <td>0.118862</td>\n",
" <td>0.093304</td>\n",
" <td>73449600</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Date Open High Low Close Adj Close Volume\n",
"0 1980-12-12 0.128348 0.128906 0.128348 0.128348 0.100751 469033600\n",
"1 1980-12-15 0.122210 0.122210 0.121652 0.121652 0.095495 175884800\n",
"2 1980-12-16 0.113281 0.113281 0.112723 0.112723 0.088485 105728000\n",
"3 1980-12-17 0.115513 0.116071 0.115513 0.115513 0.090676 86441600\n",
"4 1980-12-18 0.118862 0.119420 0.118862 0.118862 0.093304 73449600"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df = pd.read_csv('AAPL.csv')\n",
"X = df['Low']\n",
"Y = df['Volume']\n",
"display(df.head(5))"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize=(20,10))\n",
"chart = fig.add_subplot()\n",
"chart.plot(X,Y ,\"go\")\n",
"plt.show()"
]
}
],
"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.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}