lib with functions

This commit is contained in:
s434695 2021-05-30 23:26:52 +02:00
parent 654cb79a5d
commit 0f069f6061
6 changed files with 23399 additions and 72 deletions

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,99 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "50d1198e",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"<h1><center>Regresja jądrowa</center></h1>\n",
"\n",
"#### <center>Karolina Oparczyk, Tomasz Grzybowski, Jan Nowak</center>\n"
]
},
{
"cell_type": "markdown",
"id": "f792be04",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Regresja jądrowa używana jest jako funkcja wagi do opracowania modelu regresji nieparametrycznej. Nadaje ona niektórym elementom zbioru większą \"wagę\", która ma wpływ na ostateczny wynik. \n",
"\n",
"Można ją porównać do rysowania krzywej na wykresie punktowym tak, aby była jak najlepiej do nich dopasowana. Jest mniej wrażliwa na wartości odstające, niż na przykład regresja liniowa."
]
},
{
"cell_type": "markdown",
"id": "ce35888e",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Właściwości regresji jądrowej:\n",
"* symetryczna - wartość maksymalna leży pośrodku krzywej\n",
"<img src=\"files/symmetric.PNG\">\n",
"* powierzchnia pod krzywą funkcji wynosi 1\n",
"* wartość funkcji jądrowej nie jest ujemna"
]
},
{
"cell_type": "markdown",
"id": "dbe6165c",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Przykłady:\n",
"* jądro Gaussa\n",
"\\begin{equation}\n",
"K(x) = (2\\pi)^{-\\frac12} \\text{ exp } (-\\frac{{x}^{2}}2) \\text{ lg}(x)\n",
"\\end{equation}\n",
"<img src=\"files/gauss.png\">"
]
},
{
"cell_type": "markdown",
"id": "f46e92e5",
"metadata": {},
"source": [
"* jądro Epanechnikova\n",
"\\begin{equation}\n",
"K(x) = (\\frac34)(1-x^2)l_{|x|\\leq1}(x)\n",
"\\end{equation}\n",
"<img src=\"files/epanechnikov.png\">"
]
}
],
"metadata": {
"celltoolbar": "Slideshow",
"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.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}

File diff suppressed because one or more lines are too long

37
KernelRegression.py Executable file
View File

@ -0,0 +1,37 @@
import numpy as np
def gauss_const(h):
"""
Returns the normalization constant for a gaussian
"""
return 1/(h*np.sqrt(np.pi*2))
def gauss_exp(ker_x, xi, h):
"""
Returns the gaussian function exponent term
"""
num = - 0.5*np.square((xi- ker_x))
den = h*h
return num/den
def kernel_function(h, ker_x, xi):
"""
Returns the gaussian function value. Combines the gauss_const and
gauss_exp to get this result
"""
const = gauss_const(h)
gauss_val = const*np.exp(gauss_exp(ker_x,xi,h))
return gauss_val
def weights(bw_manual, input_x, all_input_values ):
w_row = []
for x_i in all_input_values:
ki = kernel_function(bw_manual, x_i, input_x)
ki_sum = np.sum(kernel_function(bw_manual, all_input_values, input_x))
w_row.append(ki/ki_sum)
return w_row
def single_y_pred(bw_manual, input_x, iks, igrek):
w = weights(bw_manual, input_x, iks)
y_single = np.sum(np.dot(igrek,w))
return y_single

Binary file not shown.

View File

@ -91,7 +91,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.9.2" "version": "3.8.8"
} }
}, },
"nbformat": 4, "nbformat": 4,