machinelearning

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 2931cc75a2d0e2d99204842c28c593f1e4888a59
parent 54d99d4eb66d157bea7c1e93e1713d1623d5c61d
Author: Andrew <andrewlaack1@gmail.com>
Date:   Wed, 29 May 2024 21:23:47 -0500

Worked on transforms to change distributions (log for right/left skew etc.)

Diffstat:
MlinearRegression/LinearRegressionHousingV2.ipynb | 321++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
AradialBasisFunction/RadialBasisFunction.ipynb | 85+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 381 insertions(+), 25 deletions(-)

diff --git a/linearRegression/LinearRegressionHousingV2.ipynb b/linearRegression/LinearRegressionHousingV2.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 2, + "execution_count": 30, "metadata": {}, "outputs": [], "source": [ @@ -36,7 +36,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -78,7 +78,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -101,7 +101,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 33, "metadata": {}, "outputs": [], "source": [ @@ -117,7 +117,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -155,7 +155,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -192,7 +192,7 @@ " <Axes: title={'center': 'median_house_value'}>]], dtype=object)" ] }, - "execution_count": 7, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" }, @@ -235,7 +235,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 36, "metadata": {}, "outputs": [], "source": [ @@ -247,7 +247,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 37, "metadata": {}, "outputs": [], "source": [ @@ -260,7 +260,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -290,7 +290,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -308,7 +308,7 @@ "Name: median_house_value, dtype: float64" ] }, - "execution_count": 11, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -328,7 +328,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 40, "metadata": {}, "outputs": [ { @@ -353,7 +353,7 @@ " dtype=object)" ] }, - "execution_count": 12, + "execution_count": 40, "metadata": {}, "output_type": "execute_result" }, @@ -394,7 +394,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 41, "metadata": {}, "outputs": [ { @@ -403,7 +403,7 @@ "<Axes: xlabel='median_income', ylabel='median_house_value'>" ] }, - "execution_count": 13, + "execution_count": 41, "metadata": {}, "output_type": "execute_result" }, @@ -425,7 +425,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 42, "metadata": {}, "outputs": [ { @@ -446,7 +446,7 @@ "Name: median_house_value, dtype: float64" ] }, - "execution_count": 14, + "execution_count": 42, "metadata": {}, "output_type": "execute_result" } @@ -462,7 +462,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 43, "metadata": {}, "outputs": [ { @@ -488,7 +488,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 44, "metadata": {}, "outputs": [ { @@ -510,7 +510,7 @@ "Name: median_house_value, dtype: float64" ] }, - "execution_count": 16, + "execution_count": 44, "metadata": {}, "output_type": "execute_result" } @@ -528,7 +528,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 45, "metadata": {}, "outputs": [], "source": [ @@ -540,7 +540,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 46, "metadata": {}, "outputs": [], "source": [ @@ -562,7 +562,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 47, "metadata": {}, "outputs": [], "source": [ @@ -578,7 +578,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 48, "metadata": {}, "outputs": [ { @@ -612,6 +612,277 @@ "\n", "print(housing_num_min_max)" ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 0.65244015 -0.68629348 -0.76869951 ... 0.38964129 0.8060595\n", + " -0.36659258]\n", + " [ 0.61246736 -0.82677709 0.50221342 ... -0.37410807 -0.40284176\n", + " 0.84287878]\n", + " [ 0.67242654 -0.80804594 0.74050959 ... -0.66696768 -0.86820374\n", + " -0.11093453]\n", + " ...\n", + " [ 1.2370422 -1.39339433 -0.68926745 ... -0.76132366 -0.43403921\n", + " -0.65734199]\n", + " [-1.43613815 1.01355824 1.8525584 ... -0.55925943 -0.0362717\n", + " 0.05392663]\n", + " [-0.88151568 1.24301481 -1.1658598 ... -0.68477069 -0.82660714\n", + " 0.29290449]]\n" + ] + } + ], + "source": [ + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "std_scaler = StandardScaler()\n", + "housing_num_std_scaled = std_scaler.fit_transform(housing_num)\n", + "print(housing_num_std_scaled)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[7.62186519e-12]\n", + " [1.00000000e+00]\n", + " [4.06569660e-01]\n", + " ...\n", + " [1.69189792e-10]\n", + " [2.81118530e-13]\n", + " [7.04065961e-20]]\n" + ] + } + ], + "source": [ + "# Use gaussian RBF (radial basis function) to find the inverse expontential difference between the current\n", + "# value and 35. Look into gaussian RBF for the equation.\n", + "\n", + "from sklearn.metrics.pairwise import rbf_kernel\n", + "\n", + "age_simil_35 = rbf_kernel(housing[['housing_median_age']], [[35]], gamma=.1)\n", + "print(age_simil_35)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[177870.30957131]\n", + " [274213.83455045]\n", + " [198235.40371427]\n", + " [196091.92950513]\n", + " [221224.4779807 ]]\n" + ] + } + ], + "source": [ + "from sklearn.linear_model import LinearRegression\n", + "\n", + "# Initialize scaler\n", + "target_scaler = StandardScaler()\n", + "\n", + "# Fit scaler to median house values (this was defined above) then assign the output (scaled values)\n", + "# to scaled_labels.\n", + "scaled_labels = target_scaler.fit_transform(housing_labels.to_frame())\n", + "\n", + "# Init lin reg\n", + "model = LinearRegression()\n", + "\n", + "# Fit model to !!scaled!! house values and median incomes (one to one regression)\n", + "model.fit(housing[['median_income']], scaled_labels)\n", + "\n", + "# Select a few random values to predict\n", + "some_new_data = housing[['median_income']].iloc[:5]\n", + "\n", + "# Run predictions to find scaled guess for house value\n", + "scaled_predictions = model.predict(some_new_data)\n", + "\n", + "# Undo transform for standar scaler change.\n", + "predictions = target_scaler.inverse_transform(scaled_predictions)\n", + "\n", + "# print output\n", + "print(predictions)\n", + "\n", + "# This is to show we can scale output values to make them more uniform and that\n", + "# scikit learn contains inverse_transform functions to invert basic data transformations." + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [], + "source": [ + " # Simpler way to use standard scaler.\n", + "\n", + "from sklearn.compose import TransformedTargetRegressor\n", + "\n", + "model = TransformedTargetRegressor(LinearRegression(), transformer=StandardScaler())\n", + "\n", + "model.fit(housing[['median_income']], housing_labels)\n", + "\n", + "predictions = model.predict(some_new_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "BEFORE:\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAGiCAYAAAAFotdwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAAzeElEQVR4nO3de3RU1d3/8U9CyAV0JgRMhqkBY7FAhHLVEC9YH7IIEm1T8SloqjxtCtUmVgS5pCqitQVjvYBSUnoxrqdQlWdJqqDRNAipEANEUiBCKjYYrE5iGzJjEEIg+/eHK+fnFJSLE0I279daZ63M2d+zz957JZnPOplzEmaMMQIAALBMeGcPAAAAoCMQcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlU455JSVlemGG26Q1+tVWFiYioqKjqnZtWuXvv3tb8vtdqtnz5667LLLVFdX57QfOnRIOTk56t27t8477zxNmjRJ9fX1QX3U1dUpIyNDPXr0UHx8vGbPnq0jR44E1axfv14jR45UVFSUBgwYoMLCwlOdDgAAsNQph5wDBw5o2LBhWrp06XHb33vvPV111VUaNGiQ1q9fr+3bt+v+++9XdHS0U3P33Xfr5Zdf1qpVq7RhwwZ9+OGHuvHGG532o0ePKiMjQ4cPH9amTZv07LPPqrCwUPPnz3dqamtrlZGRoWuvvVZVVVWaMWOGfvSjH+m111471SkBAAALhX2Vf9AZFham1atXKzMz09k3ZcoUde/eXf/7v/973GP8fr8uuOACrVy5UjfddJMkaffu3Ro8eLDKy8s1ZswYvfrqq7r++uv14YcfKiEhQZJUUFCguXPn6uOPP1ZkZKTmzp2rtWvXaufOnUHnbmpqUnFx8elOCQAAWCIilJ21tbVp7dq1mjNnjtLT07Vt2zYlJSUpLy/PCUKVlZVqbW1VWlqac9ygQYPUr18/J+SUl5dr6NChTsCRpPT0dN1xxx2qrq7WiBEjVF5eHtRHe82MGTO+cHwtLS1qaWkJGm9jY6N69+6tsLCw0CwCAADoUMYYffLJJ/J6vQoP/+I/SoU05DQ0NKi5uVmLFi3Sww8/rEceeUTFxcW68cYb9cYbb+iaa66Rz+dTZGSkYmNjg45NSEiQz+eTJPl8vqCA097e3vZlNYFAQAcPHlRMTMwx41u4cKEefPDBUE0XAAB0on379unCCy/8wvaQX8mRpO985zu6++67JUnDhw/Xpk2bVFBQoGuuuSaUpztleXl5mjlzpvPa7/erX79+2rdvn1wuVyeODAAAnKxAIKDExESdf/75X1oX0pDTp08fRUREKDk5OWj/4MGD9eabb0qSPB6PDh8+rKampqCrOfX19fJ4PE7N5s2bg/pov/vq8zX/eUdWfX29XC7Xca/iSFJUVJSioqKO2e9yuQg5AAB0MSf6qElIn5MTGRmpyy67TDU1NUH7//73v6t///6SpFGjRql79+4qLS112mtqalRXV6fU1FRJUmpqqnbs2KGGhganpqSkRC6XywlQqampQX2017T3AQAAzm2nfCWnublZe/bscV7X1taqqqpKcXFx6tevn2bPnq3Jkydr7Nixuvbaa1VcXKyXX35Z69evlyS53W5lZ2dr5syZiouLk8vl0p133qnU1FSNGTNGkjR+/HglJyfr1ltvVX5+vnw+n+677z7l5OQ4V2Juv/12Pf3005ozZ45++MMfat26dXrhhRe0du3aECwLAADo8swpeuONN4ykY7apU6c6Nb///e/NgAEDTHR0tBk2bJgpKioK6uPgwYPmJz/5ienVq5fp0aOH+e53v2s++uijoJq9e/ea6667zsTExJg+ffqYWbNmmdbW1mPGMnz4cBMZGWkuvvhi88wzz5zSXPx+v5Fk/H7/KR0HAAA6z8m+f3+l5+R0dYFAQG63W36/n8/kAADQRZzs+zf/uwoAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArHTK/6ATJ+eieV3vH4XuXZTR2UMAACBkuJIDAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABY6ZRDTllZmW644QZ5vV6FhYWpqKjoC2tvv/12hYWF6cknnwza39jYqKysLLlcLsXGxio7O1vNzc1BNdu3b9fVV1+t6OhoJSYmKj8//5j+V61apUGDBik6OlpDhw7VK6+8cqrTAQAAljrlkHPgwAENGzZMS5cu/dK61atX66233pLX6z2mLSsrS9XV1SopKdGaNWtUVlam6dOnO+2BQEDjx49X//79VVlZqUcffVQLFizQ8uXLnZpNmzbp5ptvVnZ2trZt26bMzExlZmZq586dpzolAABgoTBjjDntg8PCtHr1amVmZgbt/+c//6mUlBS99tprysjI0IwZMzRjxgxJ0q5du5ScnKwtW7Zo9OjRkqTi4mJNnDhRH3zwgbxer5YtW6Z7771XPp9PkZGRkqR58+apqKhIu3fvliRNnjxZBw4c0Jo1a5zzjhkzRsOHD1dBQcFJjT8QCMjtdsvv98vlcp3uMhzXRfPWhrS/M2HvoozOHgIAACd0su/fIf9MTltbm2699VbNnj1bl1566THt5eXlio2NdQKOJKWlpSk8PFwVFRVOzdixY52AI0np6emqqanR/v37nZq0tLSgvtPT01VeXv6FY2tpaVEgEAjaAACAnUIech555BFFRETopz/96XHbfT6f4uPjg/ZFREQoLi5OPp/PqUlISAiqaX99opr29uNZuHCh3G63syUmJp7a5AAAQJcR0pBTWVmpxYsXq7CwUGFhYaHsOiTy8vLk9/udbd++fZ09JAAA0EFCGnL++te/qqGhQf369VNERIQiIiL0/vvva9asWbroooskSR6PRw0NDUHHHTlyRI2NjfJ4PE5NfX19UE376xPVtLcfT1RUlFwuV9AGAADsFNKQc+utt2r79u2qqqpyNq/Xq9mzZ+u1116TJKWmpqqpqUmVlZXOcevWrVNbW5tSUlKcmrKyMrW2tjo1JSUlGjhwoHr16uXUlJaWBp2/pKREqampoZwSAADooiJO9YDm5mbt2bPHeV1bW6uqqirFxcWpX79+6t27d1B99+7d5fF4NHDgQEnS4MGDNWHCBE2bNk0FBQVqbW1Vbm6upkyZ4txufsstt+jBBx9Udna25s6dq507d2rx4sV64oknnH7vuusuXXPNNXrssceUkZGh5557Tlu3bg26zRwAAJy7TvlKztatWzVixAiNGDFCkjRz5kyNGDFC8+fPP+k+VqxYoUGDBmncuHGaOHGirrrqqqBw4na79frrr6u2tlajRo3SrFmzNH/+/KBn6VxxxRVauXKlli9frmHDhun//u//VFRUpCFDhpzqlAAAgIW+0nNyujqekxOM5+QAALqC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KDip8QcCAbndbvn9frlcrtNdhuO6aN7akPZ3JuxdlNHZQwAA4IRO9v07pJ/Jqa2tlc/nU1pamrPP7XYrJSVF5eXlkqTy8nLFxsY6AUeS0tLSFB4eroqKCqdm7NixTsCRpPT0dNXU1Gj//v1OzefP017Tfh4AAHBuiwhlZz6fT5KUkJAQtD8hIcFp8/l8io+PDx5ERITi4uKCapKSko7po72tV69e8vl8X3qe42lpaVFLS4vzOhAInMr0AABAF3JO3V21cOFCud1uZ0tMTOzsIQEAgA4S0pDj8XgkSfX19UH76+vrnTaPx6OGhoag9iNHjqixsTGo5nh9fP4cX1TT3n48eXl58vv9zrZv375TnSIAAOgiQhpykpKS5PF4VFpa6uwLBAKqqKhQamqqJCk1NVVNTU2qrKx0atatW6e2tjalpKQ4NWVlZWptbXVqSkpKNHDgQPXq1cup+fx52mvaz3M8UVFRcrlcQRsAALDTKYec5uZmVVVVqaqqStJnHzauqqpSXV2dwsLCNGPGDD388MN66aWXtGPHDt12223yer3OHViDBw/WhAkTNG3aNG3evFkbN25Ubm6upkyZIq/XK0m65ZZbFBkZqezsbFVXV+v555/X4sWLNXPmTGccd911l4qLi/XYY49p9+7dWrBggbZu3arc3NyvvioAAKDLO+UPHm/dulXXXnut87o9eEydOlWFhYWaM2eODhw4oOnTp6upqUlXXXWViouLFR0d7RyzYsUK5ebmaty4cQoPD9ekSZO0ZMkSp93tduv1119XTk6ORo0apT59+mj+/PlBz9K54oortHLlSt1333362c9+pksuuURFRUUaMmTIaS0EAACwy1d6Tk5Xx3NygvGcHABAV9Apz8kBAAA4WxByAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGClkIeco0eP6v7771dSUpJiYmL09a9/XT//+c9l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1luSpNdff13vvPOO/vjHP2r48OG67rrr9POf/1xLly7V4cOHJUkFBQVKSkrSY489psGDBys3N1c33XSTnnjiiY6aEgAA6EI6LOTk5OQoIyNDaWlpQfsrKyvV2toatH/QoEHq16+fysvLJUnl5eUaOnSoEhISnJr09HQFAgFVV1c7Nf/Zd3p6utPH8bS0tCgQCARtAADAThEd0elzzz2nt99+W1u2bDmmzefzKTIyUrGxsUH7ExIS5PP5nJrPB5z29va2L6sJBAI6ePCgYmJijjn3woUL9eCDD572vAAAQNcR8is5+/bt01133aUVK1YoOjo61N1/JXl5efL7/c62b9++zh4SAADoICEPOZWVlWpoaNDIkSMVERGhiIgIbdiwQUuWLFFERIQSEhJ0+PBhNTU1BR1XX18vj8cjSfJ4PMfcbdX++kQ1LpfruFdxJCkqKkoulytoAwAAdgp5yBk3bpx27NihqqoqZxs9erSysrKcr7t3767S0lLnmJqaGtXV1Sk1NVWSlJqaqh07dqihocGpKSkpkcvlUnJyslPz+T7aa9r7AAAA57aQfybn/PPP15AhQ4L29ezZU71793b2Z2dna+bMmYqLi5PL5dKdd96p1NRUjRkzRpI0fvx4JScn69Zbb1V+fr58Pp/uu+8+5eTkKCoqSpJ0++236+mnn9acOXP0wx/+UOvWrdMLL7ygtWvXhnpKAACgC+qQDx6fyBNPPKHw8HBNmjRJLS0tSk9P169//WunvVu3blqzZo3uuOMOpaamqmfPnpo6daoeeughpyYpKUlr167V3XffrcWLF+vCCy/U7373O6Wnp3fGlAAAwFkmzBhjOnsQnSUQCMjtdsvv94f88zkXzet6V5T2Lsro7CEAAHBCJ/v+zf+uAgAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACsRcgAAgJUIOQAAwEqEHAAAYCVCDgAAsBIhBwAAWImQAwAArETIAQAAViLkAAAAKxFyAACAlQg5AADASoQcAABgJUIOAACwEiEHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVQh5yFi5cqMsuu0znn3++4uPjlZmZqZqa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09DQYIz57PbUfv36mXXr1pmtW7ea1NRUk5qa6hzffovl+PHjTVVVlSkuLjYXXHDBcW+xnD17ttm1a5dZunRpl7yF/JNPPjHbtm0z27ZtM5LM448/brZt22bef/99Y8xnt5DHxsaaP//5z2b79u3mO9/5znFvIR8xYoSpqKgwb775prnkkkuCboNuamoyCQkJ5tZbbzU7d+40zz33nOnRo8cxt0FHRESYX/3qV2bXrl3mgQceOKtvgzbmy9fuk08+Mffcc48pLy83tbW15i9/+YsZOXKkueSSS8yhQ4ecPs7FtbvjjjuM2+0269evD7rN+dNPP3VqztTPaFf7fXmitduzZ4956KGHzNatW01tba3585//bC6++GIzduxYp49zde06CyGnAzz11FOmX79+JjIy0lx++eXmrbfe6uwhnVGTJ082ffv2NZGRkeZrX/uamTx5stmzZ4/TfvDgQfOTn/zE9OrVy/To0cN897vfNR999FFQH3v37jXXXXediYmJMX369DGzZs0yra2tQTVvvPGGGT58uImMjDQXX3yxeeaZZ87E9ELqjTfeMJKO2aZOnWqM+ew28vvvv98kJCSYqKgoM27cOFNTUxPUx7///W9z8803m/POO8+4XC7zgx/8wHzyySdBNX/729/MVVddZaKioszXvvY1s2jRomPG8sILL5hvfOMbJjIy0lx66aVm7dq1HTbvUPiytfv000/N+PHjzQUXXGC6d+9u+vfvb6ZNm3bMG8C5uHbHWzNJQT8/Z/JntCv9vjzR2tXV1ZmxY8eauLg4ExUVZQYMGGBmz54d9JwcY87NtessYcYYc+auGwEAAJwZfCYHAABYiZADAACsRMgBAABWIuQAAAArEXIAAICVCDkAAMBKhBwAAGAlQg4AALASIQcAAFiJkAMAAKxEyAEAAFYi5AAAACv9Pz3hngB7D0AcAAAAAElFTkSuQmCC", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AFTER:\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Replace population with log of population to help decrease right skew. \n", + "# When there are a few values way off to the right (left skew), using the log can bring them\n", + "# in closer to the rest of the data making it more of a gaussian distribution which is good.\n", + "\n", + "# Another way to do this is with sqrt, but the distribution is not quite as good.\n", + "\n", + "from sklearn.preprocessing import FunctionTransformer\n", + "\n", + "log_trans = FunctionTransformer(np.log, inverse_func=np.exp)\n", + "\n", + "log_pop = log_trans.transform(housing[['population']])\n", + "print('BEFORE:')\n", + "plt.hist(housing['population'])\n", + "plt.show()\n", + "print(\"AFTER:\")\n", + "plt.hist(log_pop)\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "BEFORE:\n" + ] + }, + { + "data": { + "image/png": "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e/dWWVmZAoGA/vGPf2jChAkqLi4O97RahEOHDumJJ55QYWGh2rRpE+7ptEgjR460/z1gwAClpqaqR48eWrlypdq2bRvGmTUe3kKS1KVLF0VGRl5wBXZ1dbU8Hk+YZtVynV9T1vvqZWVlKT8/Xx9++KG6detm7/d4PDp9+rSOHTsWMp41vnwOh0O9evVSSkqKcnNzlZycrJdffpm1bQSlpaWqqanRLbfcoqioKEVFRam4uFgLFy5UVFSUYmNjWeNGFh0drRtvvFH79+9vMT/DBIy++x9VSkqKioqK7H319fUqKiqS1+sN48xapsTERHk8npD1DgaD2rZtG+t9mSzLUlZWllavXq2NGzcqMTEx5HhKSopat24dssYVFRWqqqpija9QfX296urqWNtGMHz4cO3evVtlZWX2NmjQII0bN87+N2vcuE6cOKEDBw4oLi6u5fwMh/sq4uZi+fLlltPptPLy8qzPP//cmjx5shUdHW35/f5wT81Ix48ftz777DPrs88+syRZL774ovXZZ59Z//73vy3Lsqz58+db0dHR1rvvvmvt2rXLuvfee63ExETr5MmTYZ65GaZOnWq53W5r06ZN1pEjR+zt22+/tcdMmTLF6t69u7Vx40Zr586dltfrtbxebxhnbY5Zs2ZZxcXFVmVlpbVr1y5r1qxZVkREhLV+/XrLsljbpvD9TyFZFmt8taZPn25t2rTJqqystLZs2WKlpaVZXbp0sWpqaizLahnrS8B8zyuvvGJ1797dcjgc1m233WZt3bo13FMy1ocffmhJumCbMGGCZVnffZT6t7/9rRUbG2s5nU5r+PDhVkVFRXgnbZCLra0k680337THnDx50vr1r39tdezY0WrXrp31i1/8wjpy5Ej4Jm2QRx991OrRo4flcDisrl27WsOHD7fjxbJY26bw3wHDGl+d+++/34qLi7McDof1k5/8xLr//vut/fv328dbwvpGWJZlhee1HwAAgCvDNTAAAMA4BAwAADAOAQMAAIxDwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADj/D94Wj6IaZzgpgAAAABJRU5ErkJggg==", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "AFTER:\n" + ] + }, + { + "data": { + "image/png": "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a+PGjbrjjjtatRAAAMAs3+h7ckId35MDAEDo6ZDvyQEAALhaEDkAAMBIRA4AADASkQMAAIxE5AAAACMROQAAwEhEDgAAMBKRAwAAjETkAAAAIxE5AADASEQOAAAwEpEDAACMROQAAAAjETkAAMBIRA4AADASkQMAAIxE5AAAACMROQAAwEhEDgAAMBKRAwAAjETkAAAAIxE5AADASEQOAAAwEpEDAACMROQAAAAjETkAAMBIRA4AADASkQMAAIxE5AAAACMROQAAwEhEDgAAMBKRAwAAjETkAAAAIxE5AADASEQOAAAwEpEDAACMROQAAAAjETkAAMBIRA4AADASkQMAAIxE5AAAACMROQAAwEhEDgAAMBKRAwAAjETkAAAAIxE5AADASEQOAAAwEpEDAACMROQAAAAjBT1yLl68qKeeekq9e/dWdHS0brnlFj3zzDOyLMseY1mW8vLy1LNnT0VHRys5OVkfffRRwHlOnTql9PR0uVwuxcTEKCMjQ2fPng0Y8/7772vkyJGKiopSQkKC8vPzg305AAAgRAU9cn71q19p6dKleu2113To0CH96le/Un5+vl599VV7TH5+vhYvXqxly5aprKxMnTt3VkpKis6fP2+PSU9PV2VlpYqKirR582aVlJQoMzPTPu73+zV69Gj16tVL5eXleuGFFzRv3jwtX7482JcEAABCUJh16S2WILjvvvsUFxenN9980943btw4RUdH63e/+50sy5LH49Hjjz+uJ554QpLk8/kUFxenFStWaMKECTp06JD69++vPXv2aMiQIZKkwsJCjRkzRsePH5fH49HSpUs1Z84ceb1eORwOSVJubq42btyow4cPX9Fc/X6/3G63fD6fXC5XMJdBN+UWtPqxnyxIDeJMAAAwy5W+fgf9Ts5dd92l4uJiffjhh5KkP/3pT3r33Xf1wx/+UJJUXV0tr9er5ORk+zFut1uJiYkqLS2VJJWWliomJsYOHElKTk5WeHi4ysrK7DGjRo2yA0eSUlJSVFVVpdOnTwf7sgAAQIiJDPYJc3Nz5ff71bdvX0VEROjixYt67rnnlJ6eLknyer2SpLi4uIDHxcXF2ce8Xq9iY2MDJxoZqW7dugWM6d2792XnaDrWtWvXy+ZWV1enuro6+2e/3/9NLhUAAFzFgn4nZ926dVq1apVWr16tffv2aeXKlXrxxRe1cuXKYD9Vi82fP19ut9veEhISOnpKAACgjQQ9cmbMmKHc3FxNmDBBAwYM0KRJkzR9+nTNnz9fkhQfHy9JqqmpCXhcTU2NfSw+Pl4nT54MON7Q0KBTp04FjGnuHJc+x5fNnj1bPp/P3o4dO/YNrxYAAFytgh45n3/+ucLDA08bERGhxsZGSVLv3r0VHx+v4uJi+7jf71dZWZmSkpIkSUlJSaqtrVV5ebk9Ztu2bWpsbFRiYqI9pqSkRPX19faYoqIi9enTp9lfVUmS0+mUy+UK2AAAgJmCHjljx47Vc889p4KCAn3yySfasGGDXnrpJf3jP/6jJCksLEzTpk3Ts88+q02bNunAgQOaPHmyPB6P0tLSJEn9+vXTvffeq6lTp2r37t3auXOnsrOzNWHCBHk8HknSxIkT5XA4lJGRocrKSq1du1aLFi1STk5OsC8JAACEoKC/8fjVV1/VU089pUcffVQnT56Ux+PRz372M+Xl5dljZs6cqXPnzikzM1O1tbUaMWKECgsLFRUVZY9ZtWqVsrOzdc899yg8PFzjxo3T4sWL7eNut1tbt25VVlaWBg8erB49eigvLy/gu3QAAMC1K+jfkxNK+J4cAABCT4d9Tw4AAMDVgMgBAABGInIAAICRiBwAAGAkIgcAABiJyAEAAEYicgAAgJGIHAAAYCQiBwAAGInIAQAARiJyAACAkYgcAABgJCIHAAAYicgBAABGInIAAICRiBwAAGAkIgcAABiJyAEAAEYicgAAgJGIHAAAYCQiBwAAGInIAQAARiJyAACAkYgcAABgJCIHAAAYicgBAABGInIAAICRiBwAAGAkIgcAABiJyAEAAEYicgAAgJGIHAAAYCQiBwAAGInIAQAARiJyAACAkYgcAABgJCIHAAAYicgBAABGInIAAICRiBwAAGAkIgcAABiJyAEAAEYicgAAgJGIHAAAYCQiBwAAGInIAQAARiJyAACAkYgcAABgJCIHAAAYicgBAABGapPI+fOf/6yf/OQn6t69u6KjozVgwADt3bvXPm5ZlvLy8tSzZ09FR0crOTlZH330UcA5Tp06pfT0dLlcLsXExCgjI0Nnz54NGPP+++9r5MiRioqKUkJCgvLz89vicgAAQAgKeuScPn1aw4cPV6dOnfSHP/xBBw8e1MKFC9W1a1d7TH5+vhYvXqxly5aprKxMnTt3VkpKis6fP2+PSU9PV2VlpYqKirR582aVlJQoMzPTPu73+zV69Gj16tVL5eXleuGFFzRv3jwtX7482JcEAABCUJhlWVYwT5ibm6udO3fqv/7rv5o9blmWPB6PHn/8cT3xxBOSJJ/Pp7i4OK1YsUITJkzQoUOH1L9/f+3Zs0dDhgyRJBUWFmrMmDE6fvy4PB6Pli5dqjlz5sjr9crhcNjPvXHjRh0+fPiK5ur3++V2u+Xz+eRyuYJw9f/vptyCVj/2kwWpQZwJAABmudLX76Dfydm0aZOGDBmif/qnf1JsbKy++93v6vXXX7ePV1dXy+v1Kjk52d7ndruVmJio0tJSSVJpaaliYmLswJGk5ORkhYeHq6yszB4zatQoO3AkKSUlRVVVVTp9+nSzc6urq5Pf7w/YAACAmYIeOUeOHNHSpUv17W9/W2+//bZ+/vOf61/+5V+0cuVKSZLX65UkxcXFBTwuLi7OPub1ehUbGxtwPDIyUt26dQsY09w5Ln2OL5s/f77cbre9JSQkfMOrBQAAV6ugR05jY6MGDRqk559/Xt/97neVmZmpqVOnatmyZcF+qhabPXu2fD6fvR07dqyjpwQAANpI0COnZ8+e6t+/f8C+fv366ejRo5Kk+Ph4SVJNTU3AmJqaGvtYfHy8Tp48GXC8oaFBp06dChjT3DkufY4vczqdcrlcARsAADBT0CNn+PDhqqqqCtj34YcfqlevXpKk3r17Kz4+XsXFxfZxv9+vsrIyJSUlSZKSkpJUW1ur8vJye8y2bdvU2NioxMREe0xJSYnq6+vtMUVFRerTp0/AJ7kAAMC1KeiRM336dL333nt6/vnn9fHHH2v16tVavny5srKyJElhYWGaNm2ann32WW3atEkHDhzQ5MmT5fF4lJaWJumvd37uvfdeTZ06Vbt379bOnTuVnZ2tCRMmyOPxSJImTpwoh8OhjIwMVVZWau3atVq0aJFycnKCfUkAACAERQb7hN/73ve0YcMGzZ49W08//bR69+6tV155Renp6faYmTNn6ty5c8rMzFRtba1GjBihwsJCRUVF2WNWrVql7Oxs3XPPPQoPD9e4ceO0ePFi+7jb7dbWrVuVlZWlwYMHq0ePHsrLywv4Lh0AAHDtCvr35IQSvicHAIDQ02HfkwMAAHA1IHIAAICRiBwAAGAkIgcAABiJyAEAAEYicgAAgJGIHAAAYCQiBwAAGInIAQAARiJyAACAkYgcAABgJCIHAAAYicgBAABGInIAAICRiBwAAGAkIgcAABiJyAEAAEYicgAAgJGIHAAAYCQiBwAAGInIAQAARiJyAACAkYgcAABgJCIHAAAYicgBAABGInIAAICRiBwAAGAkIgcAABiJyAEAAEYicgAAgJGIHAAAYCQiBwAAGInIAQAARiJyAACAkYgcAABgJCIHAAAYicgBAABGInIAAICRiBwAAGAkIgcAABiJyAEAAEYicgAAgJGIHAAAYCQiBwAAGInIAQAARiJyAACAkYgcAABgJCIHAAAYicgBAABGavPIWbBggcLCwjRt2jR73/nz55WVlaXu3bvr+uuv17hx41RTUxPwuKNHjyo1NVXXXXedYmNjNWPGDDU0NASM2b59uwYNGiSn06lbb71VK1asaOvLAQAAIaJNI2fPnj36t3/7N33nO98J2D99+nT9/ve/1/r167Vjxw6dOHFCP/7xj+3jFy9eVGpqqi5cuKBdu3Zp5cqVWrFihfLy8uwx1dXVSk1N1d13362KigpNmzZNDz/8sN5+++22vCQAABAi2ixyzp49q/T0dL3++uvq2rWrvd/n8+nNN9/USy+9pB/84AcaPHiwfvvb32rXrl167733JElbt27VwYMH9bvf/U4DBw7UD3/4Qz3zzDNasmSJLly4IElatmyZevfurYULF6pfv37Kzs7W/fffr5dffrmtLgkAAISQNoucrKwspaamKjk5OWB/eXm56uvrA/b37dtXN954o0pLSyVJpaWlGjBggOLi4uwxKSkp8vv9qqystMd8+dwpKSn2OZpTV1cnv98fsAEAADNFtsVJ16xZo3379mnPnj2XHfN6vXI4HIqJiQnYHxcXJ6/Xa4+5NHCajjcd+1tj/H6/vvjiC0VHR1/23PPnz9e//uu/tvq6AABA6Aj6nZxjx47pscce06pVqxQVFRXs038js2fPls/ns7djx4519JQAAEAbCXrklJeX6+TJkxo0aJAiIyMVGRmpHTt2aPHixYqMjFRcXJwuXLig2tragMfV1NQoPj5ekhQfH3/Zp62afv66MS6Xq9m7OJLkdDrlcrkCNgAAYKagR84999yjAwcOqKKiwt6GDBmi9PR0+587deqk4uJi+zFVVVU6evSokpKSJElJSUk6cOCATp48aY8pKiqSy+VS//79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LCzUkCFD2mOqIa2l69y3b18dOHBAFRUV9vajH/1Id999tyoqKpSQkNCe0w8prfkzPXz4cH388cd2SErShx9+qJ49exI4X6E16/z5559fFjJNYWnxv3cMmg55LWyztzQbbM2aNZbT6bRWrFhhHTx40MrMzLRiYmIsr9drWZZlTZo0ycrNzbXH79y504qMjLRefPFF69ChQ9bcuXP5CPkVaOk6L1iwwHI4HNZ//Md/WP/zP/9jb2fOnOmoSwgJLV3nL+PTVVeupWt99OhRq0uXLlZ2drZVVVVlbd682YqNjbWeffbZjrqEkNDSdZ47d67VpUsX69///d+tI0eOWFu3brVuueUW64EHHuioSwgJZ86csfbv32/t37/fkmS99NJL1v79+61PP/3UsizLys3NtSZNmmSPb/oI+YwZM6xDhw5ZS5Ys4SPkV6tXX33VuvHGGy2Hw2ENHTrUeu+99+xj3//+960pU6YEjF+3bp112223WQ6Hw7r99tutgoKCdp5xaGrJOvfq1cuSdNk2d+7c9p94iGnpn+dLETkt09K13rVrl5WYmGg5nU7r5ptvtp577jmroaGhnWcdelqyzvX19da8efOsW265xYqKirISEhKsRx991Dp9+nT7TzyEvPPOO83+ndu0tlOmTLG+//3vX/aYgQMHWg6Hw7r55put3/72t206xzDL4l4cAAAwD+/JAQAARiJyAACAkYgcAABgJCIHAAAYicgBAABGInIAAICRiBwAAGAkIgcAABiJyAEAAEYicgAAgJGIHAAAYCQiBwAAGOn/AHIm0l1+E+cYAAAAAElFTkSuQmCC", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Use RBF function to find distribution. Note that lower gamma values means a larger kernel\n", + "# whereas higher values decrease the kernel size (increase slope)\n", + "\n", + "rbf_trans = FunctionTransformer(rbf_kernel, kw_args=dict(Y=[[35]], gamma=.1))\n", + "age_simil_35 = rbf_trans.transform(housing[['housing_median_age']])\n", + "\n", + "print('BEFORE:')\n", + "plt.hist(housing['housing_median_age'])\n", + "plt.show()\n", + "\n", + "print(\"AFTER:\")\n", + "plt.hist(age_simil_35, bins=30)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plot based on distance from san francisco\n", + "sf_coords = 37.7749, -122.41\n", + "sf_transformer = FunctionTransformer(rbf_kernel,\n", + "kw_args=dict(Y=[sf_coords], gamma=.1))\n", + "sf_simil = sf_transformer.transform(housing[[\"latitude\", \"longitude\"]])\n", + "\n", + "plt.hist(sf_simil)\n", + "plt.show()" + ] } ], "metadata": { diff --git a/radialBasisFunction/RadialBasisFunction.ipynb b/radialBasisFunction/RadialBasisFunction.ipynb @@ -0,0 +1,85 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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/eQnP1HXrl01ePBgvf76657tR48eldPp9DpH0dHRGj58uNd5jomJ0dChQz01KSkpCg0N1Y4dOzw1d9xxh2w2m6cmNTVVJSUl+vrrr1v6MNvcyJEjlZeXp48//liS9NFHH+nvf/+77r77bkmc55bSmufV1O8SQo5B//d//6e6ujqvJwFJiouLk9PpbKO98h9ut1vTp0/XrbfeqptuukmS5HQ6ZbPZFBMT41V78Tl1Op0NnvP6bZercblcOn/+fEscjs9ZvXq19uzZo6VLl35nG+fZjH/84x969dVXdcMNN2jTpk167LHH9Mtf/lJvvPGGpH+ep8v9jnA6neratavX9vDwcMXGxjbpZxHIMjMzNX78ePXr10/t2rXT4MGDNX36dE2cOFES57mltOZ5vVRNU897UH8KOXxLRkaGiouL9fe//72tdyXgnDhxQk888YRyc3MVERHR1rsTsNxut4YOHaolS5ZIkgYPHqzi4mKtWLFCkydPbuO9Cxxvv/223nzzTa1atUo33nijioqKNH36dCUkJHCe4YWVHIOuueYahYWFfeeKlNLSUsXHx7fRXvmHadOmaf369frggw/UrVs3z/3x8fGqrq5WeXm5V/3F5zQ+Pr7Bc16/7XI1DodDkZGRpg/H5xQWFurUqVO6+eabFR4ervDwcG3ZskUvvviiwsPDFRcXx3k24Nprr1VSUpLXff3799fx48cl/fM8Xe53RHx8vE6dOuW1vba2VmVlZU36WQSy2bNne1ZzBgwYoEmTJmnGjBmeVUrOc8tozfN6qZqmnndCjkE2m01DhgxRXl6e5z632628vDwlJye34Z75LsuyNG3aNK1du1abN29Wr169vLYPGTJE7dq18zqnJSUlOn78uOecJicna//+/V7/sHJzc+VwODxPOMnJyV496muC5edy1113af/+/SoqKvLchg4dqokTJ3r+m/N89W699dbvvAXCxx9/rB49ekiSevXqpfj4eK9z5HK5tGPHDq/zXF5ersLCQk/N5s2b5Xa7NXz4cE/N1q1bVVNT46nJzc1V37591alTpxY7Pl9x7tw5hYZ6P32FhYXJ7XZL4jy3lNY8r8Z+lzTpZcq4otWrV1t2u91auXKldfDgQevRRx+1YmJivK5IwT899thjVnR0tJWfn299+eWXntu5c+c8NVOnTrW6d+9ubd682dq9e7eVnJxsJScne7bXX9o8evRoq6ioyMrJybG6dOnS4KXNs2fPtg4dOmQtX748qC5tbsjFV1dZFufZhJ07d1rh4eHWr3/9a+uTTz6x3nzzTat9+/bWH//4R09NVlaWFRMTY/3lL3+x9u3bZ917770NXoI7ePBga8eOHdbf//5364YbbvC6BLe8vNyKi4uzJk2aZBUXF1urV6+22rdvH9CXNl9s8uTJ1ve+9z3PJeTvvPOOdc0111hPPvmkp4bz3Dxnzpyx9u7da+3du9eSZP32t7+19u7dax07dsyyrNY7rx9++KEVHh5u/eY3v7EOHTpk/epXv+IScl/x0ksvWd27d7dsNpt1yy23WNu3b2/rXfJZkhq8/eEPf/DUnD9/3vr3f/93q1OnTlb79u2tH//4x9aXX37p1eezzz6z7r77bisyMtK65pprrFmzZlk1NTVeNR988IE1aNAgy2azWb179/Z6jGD07ZDDeTbjvffes2666SbLbrdb/fr1s1577TWv7W6321q4cKEVFxdn2e1266677rJKSkq8ar766itrwoQJVlRUlOVwOKyf//zn1pkzZ7xqPvroI+u2226z7Ha79b3vfc/Kyspq8WPzFS6Xy3riiSes7t27WxEREVbv3r2t+fPne12SzHlung8++KDB38mTJ0+2LKt1z+vbb79t9enTx7LZbNaNN95oZWdnN/l4QizroreIBAAACBC8JgcAAAQkQg4AAAhIhBwAABCQCDkAACAgEXIAAEBAIuQAAICARMgBAAABiZADAAACEiEHAAAEJEIOAAAISIQcAAAQkAg5AAAgIP0/YHVxF9EdFuMAAAAASUVORK5CYII=", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "vals = range(10000, 20000)\n", + "\n", + "plt.scatter(y=vals, x=range(0,10000))\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "<Figure size 640x480 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import math\n", + "\n", + "L = 10\n", + "POS = 15000\n", + "\n", + "newVals = []\n", + "for i in vals:\n", + " # Distance in 1d.\n", + " dist = math.sqrt(abs(POS - i))\n", + " val = (dist*dist) / (2*L*L)\n", + " # Negatvie natural exponent (e to the -val)\n", + " exp = math.exp(-val)\n", + " newVals.append(exp)\n", + "\n", + "plt.scatter(y=newVals, x=range(0,10000))\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "notebook", + "language": "python", + "name": "notebook" + }, + "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.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}