This commit is contained in:
lda committed 2025-05-06 04:22:13 +07:00
1 parent c70a62fd69
commit 3bf9133dfd
4 files changed
+146 -69

No files matched your search

+34 -55
View File
@@ -1,57 +1,21 @@
import numpy as np
# Hypothesis function
def hypothesis(X, theta):
"""
Compute the hypothesis (predictions) for the given input and parameters.
"""
result = np.dot(X, theta).reshape(-1, 1)
# print("Shape of X:", X.shape)
# print("Shape of theta:", theta.shape)
# print("Shape of hypothesis output:", result.shape)
return result
# Cost function (Mean Squared Error)
def compute_cost(X, y, theta):
"""
Compute the cost (Mean Squared Error) for the given input, target, and parameters.
"""
m = len(y)
predictions = hypothesis(X, theta)
errors = predictions - y
cost = (1 / (2 * m)) * np.sum(errors**2)
# # print(f"Max error: {np.max(errors):.4f}, Cost: {cost:.4f}") # Debugging
return cost
# Compute gradients
def compute_gradients(theta, X, y):
"""
Compute gradients for gradient descent.
Parameters:
theta (numpy.ndarray): Model parameters (n,).
X (numpy.ndarray): Feature matrix (m, n).
y (numpy.ndarray): Target values (m, 1).
Returns:
numpy.ndarray: Gradients (n,).
"""
# print("Shape of theta, X, y:", theta.shape, X.shape, y.shape)
m = len(y)
errors = hypothesis(X, theta) - y # Compute prediction errors
# print("Shape of errors:", errors.shape) # Debugging
gradients = (1 / m) * np.dot(X.T, errors) # Compute gradients
# print("Shape of gradients:", gradients.shape) # Debugging
return gradients.flatten()
# from question import hypothesis
from regulations import compute_cost, compute_gradients # type: ignore
# Gradient Descent function (Batch)
def gradient_descent(X, y, theta, learning_rate, iterations, return_cost: bool = False):
def gradient_descent(
X,
y,
theta,
learning_rate=0.01,
iterations=1000,
lambda_=0.1,
return_cost: bool = False,
):
"""
Perform batch gradient descent to optimize theta.
"""
@@ -61,13 +25,13 @@ def gradient_descent(X, y, theta, learning_rate, iterations, return_cost: bool =
# print("Shape of X:", X.shape) # Should be (200, 4)
# print("Shape of y:", y.shape) # Should be (200, 1)
# print("Shape of theta:", theta.shape) # Should be (4,)
gradients = compute_gradients(theta, X, y) # Compute gradients
gradients = compute_gradients(theta, X, y, lambda_) # Compute gradients
# print(f"Iteration {i + 1}:")
# print(f" Shape of theta: {theta.shape}")
# print(f" Shape of gradients: {gradients.shape}")
theta -= learning_rate * gradients # Update theta
if return_cost:
cost = compute_cost(X, y, theta)
cost = compute_cost(X, y, theta, lambda_)
costs.append(cost) # Track cost
# print(f" Cost: {cost:.4f}")
return (theta, costs) if return_cost else theta
@@ -75,7 +39,14 @@ def gradient_descent(X, y, theta, learning_rate, iterations, return_cost: bool =
# Mini-batch Gradient Descent function
def mini_batch_gradient_descent(
X, y, theta, learning_rate, iterations, batch_size, return_cost: bool = False
X,
y,
theta,
learning_rate=0.01,
iterations=1000,
batch_size=32,
lambda_=0.1,
return_cost: bool = False,
):
"""
Perform mini-batch gradient descent to optimize theta.
@@ -91,10 +62,12 @@ def mini_batch_gradient_descent(
for j in range(0, m, batch_size):
X_batch = X_shuffled[j : j + batch_size]
y_batch = y_shuffled[j : j + batch_size]
gradients = compute_gradients(theta, X_batch, y_batch) # Compute gradients
gradients = compute_gradients(
theta, X_batch, y_batch, lambda_
) # Compute gradients
theta -= learning_rate * gradients # Update theta
if return_cost:
cost = compute_cost(X, y, theta)
cost = compute_cost(X, y, theta, lambda_)
costs.append(cost) # Track cost
# print(f"Iteration {i + 1}/{iterations}, Cost: {cost:.4f}") # Debugging
return (theta, costs) if return_cost else theta
@@ -102,7 +75,13 @@ def mini_batch_gradient_descent(
# Stochastic Gradient Descent function
def stochastic_gradient_descent(
X, y, theta, learning_rate, iterations, return_cost: bool = False
X,
y,
theta,
learning_rate=0.01,
iterations=1000,
lambda_=0.1,
return_cost: bool = False,
):
"""
Perform stochastic gradient descent to optimize theta.
@@ -115,11 +94,11 @@ def stochastic_gradient_descent(
X_sample = X[j : j + 1]
y_sample = y[j : j + 1]
gradients = compute_gradients(
theta, X_sample, y_sample
theta, X_sample, y_sample, lambda_
) # Compute gradients
theta -= learning_rate * gradients # Update theta
if return_cost:
cost = compute_cost(X, y, theta)
cost = compute_cost(X, y, theta, lambda_)
costs.append(cost) # Track cost
# print(f"Iteration {i + 1}/{iterations}, Cost: {cost:.4f}") # Debugging
return (theta, costs) if return_cost else theta
+14 -14
View File
@@ -10,7 +10,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 1,
"id": "fa275d88",
"metadata": {},
"outputs": [],
@@ -22,7 +22,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 2,
"id": "0d63f004",
"metadata": {},
"outputs": [
@@ -96,14 +96,14 @@
"# theta = theta.reshape(-1, 1)\n",
"print(\"Shape of theta:\", theta.shape)\n",
"\n",
"learning_rate = 0.001\n",
"learning_rate = 0.01\n",
"iterations = 1000\n",
"batch_size = 32 # For mini-batch gradient descent"
]
},
{
"cell_type": "code",
"execution_count": 8,
"execution_count": 4,
"id": "8d5bf6a6",
"metadata": {},
"outputs": [
@@ -111,9 +111,9 @@
"name": "stdout",
"output_type": "stream",
"text": [
"Theta batch: [ 1.40204919e+01 3.91562216e+00 2.79885945e+00 -1.09326135e-02]\n",
"Theta (mini_batch): [ 1.40204919e+01 3.91562216e+00 2.79885945e+00 -1.09326135e-02]\n",
"Theta (stochastic): [ 1.40204919e+01 3.91562216e+00 2.79885945e+00 -1.09326135e-02]\n"
"Theta batch: [14.0103694 3.51501145 2.60914121 0.19570495]\n",
"Theta (mini_batch): [14.0103694 3.51501145 2.60914121 0.19570495]\n",
"Theta (stochastic): [14.0103694 3.51501145 2.60914121 0.19570495]\n"
]
}
],
@@ -176,7 +176,7 @@
"outputs": [
{
"data": {
"image/png": "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 truncated
"image/png": "iVBORw0KGgoAAAANSUhEUgAAArcAAAIhCAYAAABUopIpAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAXvtJREFUeJzt3Xl8VPW9//H3yWQy2UMIkAUChE2BsCgoCiooWwWtlp+KK6htRREr4opYDd4KSm8pbmi1Vrha1GtVrlqLRAVcUNkVATcMOyEsIfsyyXx/f4SMxCQQwiRnZvJ6PpoHzDln5nxmPqS+8833fI9ljDECAAAAgkCI3QUAAAAAvkK4BQAAQNAg3AIAACBoEG4BAAAQNAi3AAAACBqEWwAAAAQNwi0AAACCBuEWAAAAQYNwCwAAgKBBuAUgSfr66691ww03KC0tTeHh4YqOjtbpp5+uOXPm6NChQ01yzlmzZmnx4sUNPt6yrDq/2rRp0yT1NdTmzZuVkZGhbdu21dp3/fXXq3Pnzs1eUyC5/vrrFR0dXWPb/PnztWDBAnsKakAd27Ztk2VZflEjgJosbr8L4Pnnn9fkyZN1yimnaPLkyerVq5fcbrfWrFmj559/Xv369dNbb73l8/NGR0frsssua3BAsCxLl112me68884a251OpwYMGODz+hrqX//6ly6//HItW7ZMw4YNq7Fv69atys/P12mnnWZPcQHg+uuv17/+9S8VFhZ6t6Wnp6tNmzZavny5fYUdo46ysjKtX79eXbt2Vdu2be0pDkCdQu0uAIC9Pv/8c91yyy0aOXKkFi9eLJfL5d03cuRI3XnnnVqyZImNFdaUmJios846y+4yGqxr1652l+AXSkpKFBERYWsNxhiVlpb6pA6XyxVQ/w6BloRpCUALN2vWLFmWpeeee65GsK0WFhamX//6197HHo9Hc+bM0amnniqXy6V27dppwoQJ2rVrV43nrV+/XhdddJHatWsnl8ullJQUjR071nucZVkqKirSwoULvdMLfjnqeaLqmwKQkZEhy7JqbLMsS1OmTNFLL72knj17KjIyUv369dO7775b6/nffvutrrrqKiUmJsrlcqljx46aMGGCysrKtGDBAl1++eWSpPPPP9/7XqpHo+uqqbS0VNOnT1daWprCwsLUvn173XrrrTp8+HCN4zp37qyLLrpIS5Ys0emnn66IiAideuqp+sc//tGgz+PQoUOaPHmy2rdvr7CwMHXp0kUzZsxQWVmZ95jTTjtN5557bq3nVlZWqn379ho3bpx3W3l5uf70pz95e9+2bVvdcMMN2r9/f511v/nmmzrttNMUHh6umTNnNqjm6udv2rRJK1as8H6eR3+G+fn5uuuuu2p8flOnTlVRUVGN16nu8bPPPquePXvK5XJp4cKFkqSZM2dq0KBBat26tWJjY3X66afrhRde0NG/zDxWHfVNS/j00081fPhwxcTEKDIyUoMHD9a///3vGscsWLBAlmVp2bJluuWWW9SmTRslJCRo3Lhx2rNnT41jP/roIw0bNkwJCQmKiIhQx44d9f/+3/9TcXFxgz9PoKVh5BZowSorK/XRRx9pwIABSk1NbdBzbrnlFj333HOaMmWKLrroIm3btk1//OMftXz5cq1bt05t2rRRUVGRRo4cqbS0ND399NNKTExUdna2li1bpoKCAklVI8YXXHCBzj//fP3xj3+UJMXGxh73/MYYVVRU1NjmcDhqhdeG+Pe//63Vq1fr4YcfVnR0tObMmaPf/OY3+u6779SlSxdJ0ldffaVzzjlHbdq00cMPP6zu3btr7969evvtt1VeXq6xY8dq1qxZuv/++/X000/r9NNPl1T/iK0xRpdeeqk+/PBDTZ8+Xeeee66+/vprPfTQQ/r888/1+eef1/gh46uvvtKdd96p++67T4mJifr73/+u3/72t+rWrZvOO++8et9baWmpzj//fG3dulUzZ85U37599cknn2j27NnasGGDN3DdcMMNuv322/XDDz+oe/fu3ucvXbpUe/bs0Q033CCp6oeaSy65RJ988onuueceDR48WNu3b9dDDz2kYcOGac2aNTVGRNetW6ctW7bogQceUFpamqKiohrcl7feekuXXXaZ4uLiNH/+fEnyfibFxcUaOnSodu3apfvvv199+/bVpk2b9OCDD2rjxo364IMPavxbWLx4sT755BM9+OCDSkpKUrt27SRVhdNJkyapY8eOkqQvvvhCt912m3bv3q0HH3zwuHXUZcWKFRo5cqT69u2rF154QS6XS/Pnz9fFF1+sV155RePHj69x/O9+9zuNHTtWixYt0s6dO3X33Xfr2muv1UcffeStcezYsTr33HP1j3/8Q61atdLu3bu1ZMkSlZeXKzIyssGfKdCiGAAtVnZ2tpFkrrzyygYdv2XLFiPJTJ48ucb2L7/80kgy999/vzHGmDVr1hhJZvHixcd8vaioKDNx4sQG1yupzq/nn3/eGGPMxIkTTadOnWo976GHHjK//L87SSYxMdHk5+d7t2VnZ5uQkBAze/Zs77YLLrjAtGrVyuTk5NRb1+uvv24kmWXLltXa98ualixZYiSZOXPm1DjutddeM5LMc889593WqVMnEx4ebrZv3+7dVlJSYlq3bm0mTZpUbz3GGPPss88aSeZ///d/a2x/7LHHjCSzdOlSY4wxBw4cMGFhYd7eVbviiitMYmKicbvdxhhjXnnlFSPJvPHGGzWOW716tZFk5s+fX6Nuh8Nhvvvuu2PWWG3ixIkmKiqqxrbevXuboUOH1jp29uzZJiQkxKxevbrG9n/9619Gknnvvfe82ySZuLg4c+jQoWOev7Ky0rjdbvPwww+bhIQE4/F4jltHVlaWkWRefPFF77azzjrLtGvXzhQUFHi3VVRUmPT0dNOhQwfv67744ot1fh/NmTPHSDJ79+6t8Z42bNhwzPoB1MS0BAANtmzZMklVv2o/2plnnqmePXvqww8/lCR169ZN8fHxuvfee/Xss89q8+bNPqvhiiuu0OrVq2t8XXrppY16rfPPP18xMTHex4mJiWrXrp22b98uqWqUcMWKFbriiit8dtFQ9ajcLz/Dyy+/XFFRUd7PsFr//v29o4uSFB4erh49enhrPNZ5oqKidNlll9XYXn3e6vMkJCTo4osv1sKFC+XxeCRJubm5+r//+z9NmDBBoaFVv+B799131apVK1188cWqqKjwfvXv319JSUm1Lrjq27evevTocfwP5AS9++67Sk9PV//+/WvUMXr0aFmWVauOCy64QPHx8bVe56OPPtKIESMUFxcnh8Mhp9OpBx98UAcPHlROTs4J11VUVKQvv/xSl112WY2VHxwOh6677jrt2rVL3333XY3nHD3dR6r6zCR5e9u/f3+FhYXppptu0sKFC/XTTz+dcF1AS0S4BVqwNm3aKDIyUllZWQ06/uDBg5Kk5OTkWvtSUlK8++Pi4rRixQr1799f999/v3r37q2UlBQ99NBDcrvdJ1Vz27ZtNXDgwBpfjV0KLCEhodY2l8ulkpISSVUhr7KyUh06dDipmo928OBBhYaG1grLlmUpKSnJ+xk2tMZjnScpKanWdI127dopNDS0xnluvPFG7d69W5mZmZKkV155RWVlZTUC+L59+3T48GGFhYXJ6XTW+MrOztaBAwdqnKeufyO+sG/fPn399de1aoiJiZExpkF1rFq1SqNGjZJUtVLIZ599ptWrV2vGjBmSdNzPti65ubkyxtT7vSHpuL2tnvJQff6uXbvqgw8+ULt27XTrrbeqa9eu6tq1qx5//PETrg9oSZhzC7RgDodDw4cP13/+8x/t2rXruCGu+j/Ge/furXXsnj17aoTMPn366NVXX5UxRl9//bUWLFighx9+WBEREbrvvvt8/2ZUNap59MVS1X4ZeBqqdevWcjgctS6WOxkJCQmqqKjQ/v37awRcY4yys7N1xhln+Ow8X375pYwxNQJuTk6OKioqavRq9OjRSklJ0YsvvqjRo0frxRdf1KBBg9SrVy/vMdUXPdW3csbRI+CSGjUHuiHatGmjiIiIei+q++UPOnXV8eqrr8rpdOrdd99VeHi4d/uJrLn8S/Hx8QoJCdHevXtr7au+SKwxP4Sde+65Ovfcc1VZWak1a9boySef1NSpU5WYmKgrr7yy0fUCwYyRW6CFmz59uowx+v3vf6/y8vJa+91ut9555x1JVb/ilaSXX365xjGrV6/Wli1bNHz48FrPtyxL/fr101//+le1atVK69at8+5ryAjkiejcubNycnK0b98+77by8nK9//77jXq9iIgIDR06VK+//voxA/IvR9yOpfoz+uVn+MYbb6ioqKjOz7Axhg8frsLCwlqB7X/+539q1CH9/Kvz6ouv1qxZoxtvvLHG8y666CIdPHhQlZWVtUbOBw4cqFNOOcUndVer79/GRRddpK1btyohIaHOOhpywwzLshQaGiqHw+HdVlJSopdeeqnBdfxSVFSUBg0apDfffLPG8R6PRy+//LI6dOhwUtM0HA6HBg0apKefflqSanwfAaiJkVughTv77LP1zDPPaPLkyRowYIBuueUW9e7dW263W+vXr9dzzz2n9PR0XXzxxTrllFN000036cknn1RISIguvPBC72oJqampuuOOOyRVzYucP3++Lr30UnXp0kXGGL355ps6fPiwRo4c6T13nz59tHz5cr3zzjtKTk5WTEzMSYWk8ePH68EHH9SVV16pu+++W6WlpXriiSdUWVnZ6NecO3euzjnnHA0aNEj33XefunXrpn379untt9/W3/72N8XExCg9PV2S9NxzzykmJkbh4eFKS0urc0rByJEjNXr0aN17773Kz8/XkCFDvKslnHbaabruuusaXevRJkyYoKeffloTJ07Utm3b1KdPH3366aeaNWuWxowZoxEjRtQ4/sYbb9Rjjz2mq6++WhEREbWu7L/yyiv1z3/+U2PGjNHtt9+Line truncated
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
@@ -186,7 +186,7 @@
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAq8AAAIhCAYAAABg21M1AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAYttJREFUeJzt3Xd4VGXe//HPmclk0hMgJCGQQOi9CeICCkhxAVHWtSuibrFgQV0L6iq4q6jPrg+ujdVV8NFF/a2FVddFogI2pDcBKUqHEGoKaZPM/fsjZCSkkMAkZyZ5v64rF8k9Z+Z8M99EP9zc5z6WMcYIAAAACAIOuwsAAAAAaorwCgAAgKBBeAUAAEDQILwCAAAgaBBeAQAAEDQIrwAAAAgahFcAAAAEDcIrAAAAggbhFQAAAEGD8Ao0AmvXrtUNN9ygtLQ0hYWFKSoqSn379tXTTz+tw4cP18k5n3jiCc2dO7fGx1uWVelHfHx8ndRXUxs2bNDUqVO1ffv2Co9df/31atOmTb3XFEyuv/56RUVFlRt78cUXNXv2bHsKqkEd27dvl2VZAVEjgIosbg8LNGyvvPKKbr31VnXq1Em33nqrunbtKo/Ho+XLl+uVV15Rr1699MEHH/j9vFFRUbr00ktrHAAsy9Kll16qe+65p9y4y+XSWWed5ff6aurdd9/VZZddpgULFmjo0KHlHvvxxx+VnZ2tPn362FNcELj++uv17rvvKjc31zfWvXt3xcfHa+HChfYVVk0dhYWFWrVqldq1a6fmzZvbUxyAKoXYXQCAurN48WLdcsstGjlypObOnSu32+17bOTIkbrnnns0b948GyssLzExUeecc47dZdRYu3bt7C4hIOTn5ys8PNzWGowxKigo8Esdbrc7qH4OgcaGZQNAA/bEE0/Isiy9/PLL5YJrmdDQUF100UW+r71er55++ml17txZbrdbCQkJuu6667R79+5yz1u1apUuvPBCJSQkyO12Kzk5WWPHjvUdZ1mWjh07ptdff933z/8nz1rWVlX/RD916lRZllVuzLIs3XbbbXrjjTfUpUsXRUREqFevXvr4448rPP+HH37QVVddpcTERLndbqWmpuq6665TYWGhZs+ercsuu0ySNGzYMN/3UjabXFlNBQUFmjJlitLS0hQaGqqWLVtq0qRJOnr0aLnj2rRpowsvvFDz5s1T3759FR4ers6dO+u1116r0ftx+PBh3XrrrWrZsqVCQ0PVtm1bPfTQQyosLPQd06dPH5177rkVnltSUqKWLVvqkksu8Y0VFRXpz3/+s6/3zZs31w033KADBw5UWvf777+vPn36KCwsTNOmTatRzWXPX79+vRYtWuR7P098D7Ozs/WHP/yh3Ps3efJkHTt2rNzrlPV45syZ6tKli9xut15//XVJ0rRp0zRgwAA1bdpUMTEx6tu3r1599VWd+A+N1dVR1bKBr7/+WsOHD1d0dLQiIiI0cOBA/ec//yl3zOzZs2VZlhYsWKBbbrlF8fHxatasmS655BLt3bu33LFffPGFhg4dqmbNmik8PFypqan69a9/rby8vBq/n0BjxMwr0ECVlJToiy++0FlnnaWUlJQaPeeWW27Ryy+/rNtuu00XXnihtm/frj/+8Y9auHChVq5cqfj4eB07dkwjR45UWlqaXnjhBSUmJiojI0MLFixQTk6OpNIZ3/PPP1/Dhg3TH//4R0lSTEzMKc9vjFFxcXG5MafTWSGc1sR//vMfLVu2TI899piioqL09NNP61e/+pU2bdqktm3bSpLWrFmjwYMHKz4+Xo899pg6dOigffv26cMPP1RRUZHGjh2rJ554Qg8++KBeeOEF9e3bV1LVM67GGI0fP16ff/65pkyZonPPPVdr167Vo48+qsWLF2vx4sXl/hKxZs0a3XPPPXrggQeUmJiof/zjH/rNb36j9u3b67zzzqvyeysoKNCwYcP0448/atq0aerZs6e++uorTZ8+XatXr/YFqhtuuEF33nmntmzZog4dOvieP3/+fO3du1c33HCDpNK/tFx88cX66quvdN9992ngwIHasWOHHn30UQ0dOlTLly8vN6O5cuVKbdy4UQ8//LDS0tIUGRlZ47588MEHuvTSSxUbG6sXX3xRknzvSV5enoYMGaLdu3frwQcfVM+ePbV+/Xo98sgjWrdunT777LNyPwtz587VV199pUceeURJSUlKSEiQVBo+b7rpJqWmpkqSvvvuO91+++3as2ePHnnkkVPWUZlFixZp5MiR6tmzp1599VW53W69+OKLGjdunN566y1dccUV5Y7/7W9/q7Fjx2rOnDnatWuX7r33Xl177bX64osvfDWOHTtW5557rl577TXFxcVpz549mjdvnoqKihQREVHj9xRodAyABikjI8NIMldeeWWNjt+4caORZG699dZy40uWLDGSzIMPPmiMMWb58uVGkpk7d261rxcZGWkmTpxY43olVfrxyiuvGGOMmThxomndunWF5z366KPm5P+USTKJiYkmOzvbN5aRkWEcDoeZPn26b+z88883cXFxJjMzs8q6/vWvfxlJZsGCBRUeO7mmefPmGUnm6aefLnfcO++8YySZl19+2TfWunVrExYWZnbs2OEby8/PN02bNjU33XRTlfUYY8zMmTONJPP//t//Kzf+1FNPGUlm/vz5xhhjDh48aEJDQ329K3P55ZebxMRE4/F4jDHGvPXWW0aSee+998odt2zZMiPJvPjii+XqdjqdZtOmTdXWWGbixIkmMjKy3Fi3bt3MkCFDKhw7ffp043A4zLJly8qNv/vuu0aS+eSTT3xjkkxsbKw5fPhwtecvKSkxHo/HPPbYY6ZZs2bG6/Weso5t27YZSWbWrFm+sXPOOcckJCSYnJwc31hxcbHp3r27adWqle91Z82aVenv0dNPP20kmX379pX7nlavXl1t/QAqYtkAAEnSggULJJX+U/iJzj77bHXp0kWff/65JKl9+/Zq0qSJ7r//fs2cOVMbNmzwWw2XX365li1bVu5j/Pjxp/Vaw4YNU3R0tO/rxMREJSQkaMeOHZJKZ/kWLVqkyy+/3G8X5ZTNqp38Hl522WWKjIz0vYdlevfu7ZsdlKSwsDB17NjRV2N154mMjNSll15abrzsvGXnadasmcaNG6fXX39dXq9XknTkyBH9+9//1nXXXaeQkNJ/fPv4448VFxencePGqbi42PfRu3dvJSUlVbigqWfPnurYseOp35Ba+vjjj9W9e3f17t27XB0XXHCBLMuqUMf555+vJk2aVHidL774QiNGjFBsbKycTqdcLpceeeQRHTp0SJmZmbWu69ixY1qyZIkuvfTScjsnOJ1OTZgwQbt379amTZvKPefE5ThS6Xsmydfb3r17KzQ0VL///e/1+uuv66effqp1XUBjRXgFGqj4+HhFRERo27ZtNTr+0KFDkqQWLVpUeCw5Odn3eGxsrBYtWqTevXvrwQcfVLdu3ZScnKxHH31UHo/njGpu3ry5+vXrV+7jdLfKatasWYUxt9ut/Px8SaUhrqSkRK1atTqjmk906NAhhYSEVAjDlmUpKSnJ9x7WtMbqzpOUlFRhOUVCQoJCQkLKnefGG2/Unj17lJ6eLkl66623VFhYWC5g79+/X0ePHlVoaKhcLle5j4yMDB08eLDceSr7GfGH/fv3a+3atRVqiI6OljGmRnUsXbpUo0aNklS608Y333yjZcuW6aGHHpKkU763lTly5IiMMVX+bkg6ZW/LliSUnb9du3b67LPPlJCQoEmTJqldu3Zq166dnn322VrXBzQ2rHkFGiin06nhw4frv//9r3bv3n3KkFb2P9t9+/ZVOHbv3r3lQmSPHj309ttvyxijtWvXavbs2XrssccUHh6uBx54wP/fjEpnJU+8GKnMyYGmppo2bSqn01nhYrQz0axZMxUXF+vAgQPlAqwxRhkZGerfv7/fzrNkyRIZY8oF2MzMTBUXF5fr1QUXXKDk5GTNmjVLF1xwgWbNmqUBAwaoa9euvmPKLiqqaueJE2ewJZ3WGuSaiI+PV3h4eJUXrZ38F5nK6nj77bflcrn08ccfKywszDdemz2HT9akSRM5HA7t27evwmNlF2Gdzl+yzj33XJ177rkqKSnR8uXL9dxzz2ny5MlKTEzUlVdeedr1Ag0dM69AAzZlyhQZY/S73/1ORUVFFR73eDz66KOPJJX+E6wkvfnmm+WOWbZsmTZu3Kjhw4dXeL5lWerVq5f+93//V3FxcVq5cqXvsZrMINZGmzZtlJmZqf379/vGioqK9Omnn57W64WHh2vIkCH617/+VW0APnnGrDpl79HJ7+F7772nY8eOVfoeno7hw4crNze3QiD7v//7v3J1SD//03bZxU3Lly/XjTfeWO55F154oQ4dOqSSkpIKM9/9+vVTp06d/FJ3map+Ni688EL9+OOPatasWaV11OSGEJZlKSQkRE6n0zeWn5+vN954o8Z1nCwyMlIDBgzQ+++/X+54r9erN998U61atTqjZRROp1MDBgzQCy+8IEnlfo8AVMTMK9CA/eIXv9BLL72kW2+9VWeddZZuueUWdevWTR6PR6tWrdLLL7+s7t27a9y4cerUqZN+//vf67nnnpPD4dDo0aN9uw2kpKTorrvuklS6LvHFF1/U+PHj1bZtWxlj9P777+vo0aMaOXKk79w9evTQwoUL9dFHH6lFixaKjo4+oxB0xRVX6JFHHtGVV16pe++9VwUFBfrb3/6mkpKS037NZ555RoMHD9aAAQP0wAMPqH379tq/f78+/PBD/f3vf1d0dLS6d+8uSXr55ZcVHR2tsLAwpaWlVfpP/iNHjtQFF1yg+++/X9nZ2Ro0aJBvt4E+ffpowoQJp13ria677jq98MILmjhxorZv364ePXro66+/1hNPPKExY8ZoxIgR5Y6/8cYb9dRTT+nqq69WeHh4hSvjr7zySv3zn//UmDFjdOedd+rss8+Line truncated
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAs4AAAIhCAYAAABe/jx7AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzsnXmcFMX5/z89x57sch+Lci6XgAJeCCqHCoRFf94STTyjUYnGI18NKCoY7yQG4xn9JqL41ZhExUSJgCgIgsgtAirgci33cuy9O0f//pip7urqY3ru6Znn7csXOzN9VHd1V33qqaeeR5JlWQZBEARBEARBEJa40l0AgiAIgiAIgnACJJwJgiAIgiAIwgYknAmCIAiCIAjCBiScCYIgCIIgCMIGJJwJgiAIgiAIwgYknAmCIAiCIAjCBiScCYIgCIIgCMIGJJwJgiAIgiAIwgYknAmCIAiCIAjCBiScCYJIKt988w1uvPFG9OrVCwUFBWjVqhVOPfVUPPPMMzhy5EhSzvnEE09g7ty5treXJMnw/w4dOiSlfHbZvHkzZsyYgR07duh+u+GGG9CzZ8+Ul8lJ3HDDDWjVqpXmu5deegmzZ89OT4FslGPHjh2QJCkjykgQhB6JUm4TBJEsXnvtNUyZMgX9+/fHlClTMHDgQPh8PqxevRqvvfYahgwZgg8++CDh523VqhWuuOIK2+JDkiRcccUV+M1vfqP53uv14rTTTkt4+ezyr3/9C1deeSU+//xzjBkzRvPb9u3bUVNTg2HDhqWncA7ghhtuwL/+9S/U1dUp3w0ePBgdOnTA4sWL01cwi3I0Nzdj3bp1KC8vR8eOHdNTOIIgTPGkuwAEQWQnK1aswO23345x48Zh7ty5yM/PV34bN24cfvOb3+CTTz5JYwm1dO7cGWeddVa6i2Gb8vLydBchI2hsbERhYWFayyDLMpqamhJSjvz8fEc9hwSRa5CrBkEQSeGJJ56AJEl49dVXNaKZkZeXh//3//6f8jkYDOKZZ57BgAEDkJ+fj06dOuG6667Dnj17NPutW7cOF154ITp16oT8/Hx07doVkyZNUraTJAn19fV44403FJcL0VobLWZuETNmzIAkSZrvJEnCHXfcgTlz5uCkk05CUVERhgwZgo8++ki3/3fffYerr74anTt3Rn5+Prp3747rrrsOzc3NmD17Nq688koAwNixY5VrYVZ0ozI1NTVh2rRp6NWrF/Ly8nDCCSfgV7/6FY4dO6bZrmfPnrjwwgvxySef4NRTT0VhYSEGDBiAv/3tb7bux5EjRzBlyhSccMIJyMvLQ+/evfHggw+iublZ2WbYsGE499xzdfsGAgGccMIJuOyyy5TvWlpa8Nhjjyl137FjR9x44404dOiQYbnff/99DBs2DAUFBZg5c6atMrP9N23ahCVLlij3k7+HNTU1+J//+R/N/bv77rtRX1+vOQ6r41deeQUnnXQS8vPz8cYbbwAAZs6cieHDh6Ndu3YoLS3Fqaeeir/+9a/gJ3etymHmqrFs2TKcf/75KCkpQVFREUaOHImPP/5Ys83s2bMhSRI+//xz3H777ejQoQPat2+Pyy67DHv37tVs+9lnn2HMmDFo3749CgsL0b17d1x++eVoaGiwfT8JIhchizNBEAknEAjgs88+w2mnnYZu3brZ2uf222/Hq6++ijvuuAMXXnghduzYgYceegiLFy/G2rVr0aFDB9TX12PcuHHo1asXXnzxRXTu3Bn79+/H559/jtraWgAhS/d5552HsWPH4qGHHgIAlJaWRjy/LMvw+/2a79xut04Y2+Hjjz/GqlWr8Oijj6JVq1Z45plncOmll+L7779H7969AQAbNmzAOeecgw4dOuDRRx9F3759sW/fPvz73/9GS0sLJk2ahCeeeAIPPPAAXnzxRZx66qkAzC3NsizjkksuwaJFizBt2jSce+65+Oabb/DII49gxYoVWLFihWYAs2HDBvzmN7/B1KlT0blzZ/zv//4vfvGLX6BPnz4YNWqU6bU1NTVh7Nix2L59O2bOnIlTTjkFS5cuxZNPPon169crYu7GG2/EXXfdha1bt6Jv377K/gsWLMDevXtx4403AggNmC6++GIsXboU999/P0aOHImdO3fikUcewZgxY7B69WqNJXft2rXYsmULpk+fjl69eqG4uNh2vXzwwQe44oor0Lp1a7z00ksAoNyThoYGjB49Gnv27MEDDzyAU045BZs2bcLDDz+MjRs34tNPP9U8C3PnzsXSpUvx8MMPo0uXLujUqROAkPC99dZb0b17dwDAV199hTvvvBNVVVV4+OGHI5bDiCVLlmDcuHE45ZRT8Ne//hX5+fl46aWXcNFFF+Gdd97B5MmTNdvffPPNmDRpEt5++23s3r0b9913H37+85/js88+U8o4adIknHvuufjb3/6GNm3aoKqqCp988glaWlpQVFRk+54SRM4hEwRBJJj9+/fLAOSf/vSntrbfsmWLDECeMmWK5vuVK1fKAOQHHnhAlmVZXr16tQxAnjt3ruXxiouL5euvv952eQEY/v/aa6/JsizL119/vdyjRw/dfo888ogsNqMA5M6dO8s1NTXKd/v375ddLpf85JNPKt+dd955cps2beSDBw+aluuf//ynDED+/PPPdb+JZfrkk09kAPIzzzyj2e7dd9+VAcivvvqq8l2PHj3kgoICeefOncp3jY2Ncrt27eRbb73VtDyyLMuvvPKKDED+xz/+ofn+6aeflgHICxYskGVZlg8fPizn5eUpdce46qqr5M6dO8s+n0+WZVl+5513ZADye++9p9lu1apVMgD5pZde0pTb7XbL33//vWUZGddff71cXFys+W7QoEHy6NGjdds++eSTssvlkletWqX5/l//+pcMQJ43b57yHQC5devW8pEjRyzPHwgEZJ/PJz/66KNy+/bt5WAwGLEclZWVMgD59ddfV74766yz5E6dOsm1tbXKd36/Xx48eLB84oknKsd9/fXXDd+jZ555RgYg79u3T3NN69evtyw/QRB6yFWDIIi08/nnnwMIuR/wnHnmmTjppJOwaNEiAECfPn3Qtm1b/Pa3v8Urr7yCzZs3J6wMV111FVatWqX5/5JLLonpWGPHjkVJSYnyuXPnzujUqRN27twJIGTdXLJkCa666qqELQBj1kTxHl555ZUoLi5W7iFj6NChilUUAAoKCtCvXz+ljFbnKS4uxhVXXKH5np2Xnad9+/a46KKL8MYbbyAYDAIAjh49ig8//BDXXXcdPJ7QhOdHH32ENm3a4KKLLoLf71f+Hzp0KLp06aJbPHfKKaegX79+kW9IlHz00UcYPHgwhg4dqinHhAkTIEmSrhznnXce2rZtqzvOZ599hgsuuACtW7eG2+2G1+vFww8/jOrqahw8eDDqctXX12PlypW44oorNBFC3G43rr32WuzZswfff/+9Zh/eBQoI3TMASt0OHToUeXl5+OUvf4k33ngDP/74Y9TlIohchYQzQRAJp0OHDigqKkJlZaWt7aurqwEAZWVlut+6du2q/N66dWssWbIEQ4cOxQMPPIBBgwaha9eueOSRR+Dz+eIqc8eOHXH66adr/o81HF379u113+Xn56OxsRFASEAGAgGceOKJcZWZp7q6Gh6PRyfEJUlCly5dlHtot4xW5+nSpYvOhaVTp07weDya89x0002oqqrCwoULAQDvvPMOmpubNeL+wIEDOHbsGPLy8uD1ejX/79+/H4cPH9acx+gZSQQHDhzAN998oytDSUkJZFm2VY6vv/4a48ePBxCKKPPll19i1apVePDBBwEg4r014ujRo5Bl2fTdABCxbpkbCDt/eXk5Pv30U3Tq1Am/+tWvUF5ejvLycjz33HNRl48gcg3ycSYIIuG43W6cf/75+O9//4s9e/ZEFIiso9+3b59u271792oE7Mknn4y///3vkGUZ33zzDWbPno1HH30UhYWFmDp1auIvBiFrLL/wjSGKKbu0a9cObrdbt/AxHtq3bw+/349Dhw5pxLMsy9i/fz/OOOOMhJ1n5cqVkGVZI54PHjwIv9+vqasJEyaga9eueP311zFhwgS8/vrrGD58OAYOHKhswxawmUVY4S33AGLyObdDhw4dUFhYaLpAUhxEGZXj73//O7xeLz766CMUFBQo30cTU1ykbdu2cLlc2Ldvn+43tuAvlgHeueeei3PPPReBQACrV6/G888/j7vvvhudO3fGT3/605jLSxDZDlmcCYJICtOmTYMsy7jlllvQ0tKi+93n8+E///kPgNC0NwC89dZbmm1WrVqFLVu24Pzzz9ftL0kShgwZgj/96U9o06YN1q5dq/xmx3IaDT179sTBgwdx4MAB5buWlhbMnz8/puMVFhZi9OjR+Oc//2kpvkVLoRXsHon38L333kN9fb3hPYyF888/H3V1dTox+Oabb2rKAajuBGwh3erVq3HTTTdp9rvwwgtRXV2NQCCgs/iffvrp6N+/f0LKzTB7Ni688EJs374d7du3NyyHnWQzkiTB4/HA7XYr3zU2NmLOnDm2yyFSXFyM4cOH4/3339dsHwwG8dZbb+HEE0+My3XF7XZj+PDhePHFFwFA8x4RBKGHLM4EQSSFESNG4OWXX8aUKVNw2mmn4fbbb8egQYPg8/mwbt06vPrqqxg8eDAuuugi9O/fH7/85S/x/PPPw+VyYeLEiUpUjW7duuGee+4BEPJDfemll3DJJZegd+/ekGUZ77//Po4dO4Zx48Yp5z755JOxePFi/Oc//0FZWRlKSkriEmCTJ0/Gww8/jJ/+9Ke477770NTUhD//+c8IBAIxH/PZZ5/FOeecg+HDh2Pq1Kno06cPDhw4gH//+9/4y1/+gpKSEgwePBgA8Oqrr6KkpAQFBQXo1auXoZvFuHHjMGHCBPz2t79FTU0Nzj77bCWqxrBhw3DttdfGXFae6667Di+++CKuv/567NixAyeffDKWLVuLine truncated
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
@@ -196,7 +196,7 @@
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAtYAAAIhCAYAAABqh/1nAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAYR1JREFUeJzt3Xl8VNX9//H3ZE8gCXtCNEBYFMIiGARBWRQIAlqsIrg04loQFxZbZFOBFlB+llILSPWL4lKFKoLWL19KEKEoEdlFwA0jKCQgi0nYkknm/P6Ic2VIAiG5ZBju6/l45IG5c+aeM/MZ8J2Tc891GWOMAAAAAFRKkL8HAAAAAFwMCNYAAACADQjWAAAAgA0I1gAAAIANCNYAAACADQjWAAAAgA0I1gAAAIANCNYAAACADQjWAAAAgA0I1gD87vPPP9e9996rpKQkRUREqHr16rryyis1ffp0HT58+Lz0OXXqVC1ZsqTc7V0uV6lfderUOS/jK68dO3Zo4sSJ+v7770s8ds8996hRo0ZVPqZAcs8996h69eo+x+bMmaP58+f7Z0DlGMf3338vl8t1QYwRgC8XtzQH4E8vvfSShg0bpssvv1zDhg1TcnKy3G63NmzYoJdeeklXXHGFFi9ebHu/1atX14ABA8odTlwulwYMGKDHH3/c53hoaKhSUlJsH195vfPOO7rtttv00UcfqXv37j6P7dq1S7m5uWrXrp1/BhcA7rnnHr3zzjs6evSodaxVq1aqU6eOVq1a5b+BnWEc+fn52rx5s5o0aaK6dev6Z3AAShXi7wEAcK6MjAw99NBD6tWrl5YsWaLw8HDrsV69eunxxx/XsmXL/DhCX3Fxcbr66qv9PYxya9Kkib+HcEE4ceKEIiMj/ToGY4xOnjxpyzjCw8MD6nMIOAlLQQD4zdSpU+VyufTiiy/6hGqvsLAw/eY3v7G+93g8mj59upo3b67w8HDVq1dPd999t3788Uef523evFk33nij6tWrp/DwcCUkJKhfv35WO5fLpWPHjunVV1+1lnScPtt7rspadjFx4kS5XC6fYy6XS4888ohef/11tWjRQlFRUbriiiv0wQcflHj+l19+qTvuuENxcXEKDw9XgwYNdPfddys/P1/z58/XbbfdJkm67rrrrNfinYUvbUwnT57U2LFjlZSUpLCwMF1yySV6+OGH9fPPP/u0a9SokW688UYtW7ZMV155pSIjI9W8eXO9/PLL5Xo/Dh8+rGHDhumSSy5RWFiYGjdurPHjxys/P99q065dO3Xp0qXEc4uKinTJJZfolltusY4VFBToz3/+s1X7unXr6t5779VPP/1U6rjfffddtWvXThEREZo0aVK5xux9/vbt27V69Wrr/Tz1PczNzdUf/vAHn/dvxIgROnbsmM95vDWeO3euWrRoofDwcL366quSpEmTJqljx46qVauWYmJidOWVV2revHk69RfIZxpHWUtBPv74Y/Xo0UPR0dGKiopS586d9b//+78+bebPny+Xy6WPPvpIDz30kOrUqaPatWvrlltu0b59+3zarly5Ut27d1ft2rUVGRmpBg0a6NZbb9Xx48fL/X4CTsOMNQC/KCoq0sqVK5WSkqLExMRyPeehhx7Siy++qEceeUQ33nijvv/+ez355JNatWqVNm3apDp16ujYsWPq1auXkpKSNHv2bMXFxSk7O1sfffSR8vLyJBXPlF9//fW67rrr9OSTT0qSYmJiztq/MUaFhYU+x4KDg0sE5/L43//9X61fv16TJ09W9erVNX36dP32t7/VV199pcaNG0uStm7dqmuvvVZ16tTR5MmT1axZM2VlZen9999XQUGB+vXrp6lTp2rcuHGaPXu2rrzySkllz1QbY3TzzTfrww8/1NixY9WlSxd9/vnnevrpp5WRkaGMjAyfH3C2bt2qxx9/XGPGjFFcXJz+53/+R/fff7+aNm2qrl27lvnaTp48qeuuu067du3SpEmT1KZNG61Zs0bTpk3Tli1brLB37733avjw4frmm2/UrFkz6/nLly/Xvn37dO+990oq/oGqf//+WrNmjUaPHq3OnTtr9+7devrpp9W9e3dt2LDBZyZ406ZN2rlzpyZMmKCkpCRVq1at3HVZvHixBgwYoNjYWM2ZM0eSrPfk+PHj6tatm3788UeNGzdObdq00fbt2/XUU09p27ZtWrFihc9nYcmSJVqzZo2eeuopxcfHq169epKKg/GQIUPUoEEDSdKnn36qRx99VHv37tVTTz111nGUZvXq1erVq5fatGmjefPmKTw8XHPmzNFNN92kt956S4MGDfJp/8ADD6hfv35688039cMPP+iPf/yjfve732nlypXWGPv166cuXbro5ZdfVo0aNbR3714tW7ZMBQUFioqKKvd7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 truncated
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAsUAAAIhCAYAAACmHseMAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVPpJREFUeJzt3Xl4FFXe/v+709khCWsC0QAhbELYBAUissg2gIzooyA4gLuAOCAqEgEJfFnUZ2RwA8VHiYAj/BRFx2GQsIqKQIAgAiogGMVAZJGEJQvJ+f2BaWmTQBKqE8p+v66rL6erTled6k9gbk7OqXIYY4wAAAAAL+ZT0R0AAAAAKhqhGAAAAF6PUAwAAACvRygGAACA1yMUAwAAwOsRigEAAOD1CMUAAADweoRiAAAAeD1CMQAAALweoRhAmX311Ve65557FB0drcDAQFWuXFnXXnutnnvuOR0/ftwj55wxY4aWLVtW4vYOh6PIV40aNTzSv5LavXu3EhISdPDgwUL77r77btWrV6/c+2Qnd999typXruy2bc6cOUpMTKyYDpWgHwcPHpTD4bgi+gigMAePeQZQFq+//rpGjhypxo0ba+TIkWratKlyc3OVnJys119/XS1bttQHH3xg+XkrV66s22+/vcTBwuFw6Pbbb9djjz3mtt3Pz09t2rSxvH8l9d577+mOO+7Q2rVr1aVLF7d9+/fvV0ZGhlq3bl0xnbOBu+++W++9955OnTrl2hYbG6saNWpo3bp1Fdexi/QjOztb27dvV0xMjGrWrFkxnQNQLN+K7gAA+9m4caNGjBihHj16aNmyZQoICHDt69Gjhx577DGtWLGiAnvoLiIiQu3bt6/obpRYTExMRXfhinD27FkFBQVVaB+MMcrKyrKkHwEBAbb6OQS8DdMnAJTajBkz5HA4NG/ePLdAXMDf319//etfXe/z8/P13HPPqUmTJgoICFB4eLiGDh2qn376ye1z27dv180336zw8HAFBAQoMjJSffv2dbVzOBw6ffq03nrrLdc0iD+OspZWcVMVEhIS5HA43LY5HA6NGjVKCxcu1DXXXKPg4GC1bNlSH3/8caHPf/PNNxo0aJAiIiIUEBCgOnXqaOjQocrOzlZiYqLuuOMOSVLXrl1d11Iw+l1Un7KyshQfH6/o6Gj5+/vrqquu0sMPP6xff/3VrV29evV08803a8WKFbr22msVFBSkJk2a6M033yzR93H8+HGNHDlSV111lfz9/VW/fn1NmDBB2dnZrjatW7fWjTfeWOizeXl5uuqqq3Tbbbe5tuXk5GjatGmu2tesWVP33HOPfvnllyL7/f7776t169YKDAzUlClTStTngs/v2rVL69evd32fF36HGRkZevzxx92+vzFjxuj06dNuxymo8auvvqprrrlGAQEBeuuttyRJU6ZMUbt27VStWjWFhobq2muv1RtvvKELf+F6sX4UN33is88+U7du3RQSEqLg4GDFxcXpP//5j1ubxMREORwOrV27ViNGjFCNGjVUvXp13Xbbbfr555/d2q5Zs0ZdunRR9erVFRQUpDp16uh//ud/dObMmRJ/n4A3YqQYQKnk5eVpzZo1atOmjaKiokr0mREjRmjevHkaNWqUbr75Zh08eFCTJk3SunXrtG3bNtWoUUOnT59Wjx49FB0drVdeeUURERE6fPiw1q5dq8zMTEnnR6hvuukmde3aVZMmTZIkhYaGXvL8xhidO3fObZvT6SwUekviP//5j7Zs2aKpU6eqcuXKeu6553Trrbfq22+/Vf369SVJO3bsUMeOHVWjRg1NnTpVDRs2VFpamj766CPl5OSob9++mjFjhp566im98soruvbaayUVP0JsjFH//v21evVqxcfH68Ybb9RXX32lyZMna+PGjdq4caPbP0527Nihxx57TOPHj1dERIT+7//+T/fdd58aNGigTp06FXttWVlZ6tq1q/bv368pU6aoRYsW2rBhg2bOnKmUlBRXULvnnns0evRo7d27Vw0bNnR9fuXKlfr55591zz33SDr/j6FbbrlFGzZs0Lhx4xQXF6cffvhBkydPVpcuXZScnOw2Artt2zbt2bNHEydOVHR0tCpVqlTiunzwwQe6/fbbFRYWpjlz5kiS6zs5c+aMOnfurJ9++klPPfWUWrRooV27dunpp5/Wzp07tWrVKrefhWXLlmnDhg16+umnVatWLYWHh0s6H2ofeugh1alTR5L05Zdf6pFHHtGhQ4f09NNPX7IfRVm/fr169OihFi1a6I033lBAQIDmzJmjfv366Z133tHAgQPd2t9///3q27ev/vWvf+nHH3/UE088ob/97W9as2aNq499+/bVjTfeqDfffFNVqlTRoUOHtGLFCuXk5Cg4OLjE3yngdQwAlMLh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 truncated
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
@@ -206,7 +206,7 @@
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAArcAAAIhCAYAAABUopIpAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAiwZJREFUeJzs3XdcleX/x/HX4bA3iIDIUsGtuM2tKW7LLLWs1IZZtszKMhvar7S0zG+ZmVZqw+xbaeXInZoj98yVCxeIAwXZ4/79QZ5vhAMVOBx4Px+P85Bzz88510HfXue6r9tkGIaBiIiIiEgpYGftAkRERERECovCrYiIiIiUGgq3IiIiIlJqKNyKiIiISKmhcCsiIiIipYbCrYiIiIiUGgq3IiIiIlJqKNyKiIiISKmhcCsiIiIipYbCrYjcsJ07d/LQQw9RqVIlnJ2dcXd3p0GDBowbN47z588XyTnHjBnDTz/9VODtTSbTFR9+fn5FUl9B7dmzh1GjRnH06NF86wYOHEh4eHix13RZYmIib7/9No0aNcLT0xMnJyfCw8N5+OGH2bp1q9XqKi4rV67EZDKxcuVKa5ciIrfApNvvisiNmDZtGkOGDKFatWoMGTKEmjVrkpmZyebNm5k2bRpRUVHMnTu30M/r7u7OPffcw4wZMwq0vclk4p577uH555/Ps9zBwYGGDRsWen0F9cMPP9C7d29+++032rZtm2fdoUOHSExMpH79+sVe16FDh+jYsSPx8fE8/vjjtG3bFnd3d44ePcp///tfFi5cyIULF/Dy8ir22opLYmIie/bsoWbNmnh6elq7HBG5SfbWLkBEbMf69et54okniI6O5qeffsLJycmyLjo6mueff55FixZZscK8AgICuO2226xdRoFVqVLFKufNzs7mrrvu4uzZs6xfv57atWtb1rVp04YBAwbw66+/4uDgYJX6ilpmZiYmkwlPT0+b+ryIyJVpWIKIFNiYMWMwmUxMnTo1T7C9zNHRkTvuuMPyPCcnh3HjxlG9enWcnJzw9/enf//+nDhxIs9+27Zto3v37vj7++Pk5ERQUBDdunWzbGcymUhOTmbmzJmW4QX/7vW8UVcbAjBq1ChMJlOeZSaTiaeeeoqvvvqKGjVq4OrqSlRUFPPnz8+3/759+7jvvvsICAjAycmJ0NBQ+vfvT3p6OjNmzKB3794AtGvXzvJaLvdGX6mmtLQ0RowYQaVKlXB0dKRixYo8+eSTXLhwIc924eHhdO/enUWLFtGgQQNcXFyoXr06X3zxxXXfi59++oldu3YxYsSIPMH2n7p06YKrq6vl+Zo1a2jfvj0eHh64urrSvHlzFixYkGefGTNmYDKZWLFiBYMGDaJcuXJ4enrSv39/kpOTiYuLo0+fPnh7e1OhQgVeeOEFMjMzLfsfPXoUk8nEuHHjePvttwkNDcXZ2ZlGjRqxfPnyPOc6ePAgDz30EJGRkbi6ulKxYkV69OjBrl278mx3eejBV199xfPPP0/FihVxcnLi4MGDVxyWcPjwYe69916CgoJwcnIiICCA9u3bs337dss2Bf2ct23bltq1a7Np0yZatWqFq6srlStX5p133iEnJ+e67SQiBaOeWxEpkOzsbFasWEHDhg0JCQkp0D5PPPEEU6dO5amnnqJ79+4cPXqU1157jZUrV7J161b8/PxITk4mOjqaSpUq8fHHHxMQEEBcXBy//fYbSUlJQG6P8e233067du147bXXAAr0tbFhGGRlZeVZZjab84XXgliwYAGbNm3izTffxN3dnXHjxnHXXXexf/9+KleuDMCOHTto2bIlfn5+vPnmm0RGRhIbG8svv/xCRkYG3bp1Y8yYMbzyyit8/PHHNGjQALh6j61hGPTs2ZPly5czYsQIWrVqxc6dO3njjTdYv34969evz/OfjB07dvD888/z8ssvExAQwGeffcYjjzxCREQErVu3vuprW7JkCQA9e/Ys0HuxatUqoqOjqVu3Lp9//jlOTk5MnjyZHj168O2339K3b9882z/66KP06tWL2bNns23bNl555RWysrLYv38/vXr14rHHHmPZsmW8++67BAUFMWzYsDz7T5o0ibCwMCZOnGgJkl26dGHVqlU0a9YMgFOnTlGuXDneeecdypcvz/nz55k5cyZNmzZl27ZtVKtWLc8xR4wYQbNmzZgyZQp2dnb4+/sTFxeX77V27dqV7Oxsxo0bR2hoKGfPnmXdunV5/nNRkM/5ZXFxcdx///08//zzvPHGG8ydO5cRI0YQFBRE//79C/T+i8h1GCIiBRAXF2cAxr333lug7ffu3WsAxpAhQ/Is37BhgwEYr7zyimEYhrF582YDMH766adrHs/Nzc0YMGBAgesFrviYNm2aYRiGMWDAACMsLCzffm+8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 truncated
"image/png": "iVBORw0KGgoAAAANSUhEUgAAArcAAAIhCAYAAABUopIpAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAbq5JREFUeJzt3Xd8VFX+//H3zSSZ9JBQUiAQqpTQm4BShNBRVkWwUHQXC6IiKopYABUUV4yKDdcVfiDiquBXEJWgFBUEpCuIijSBGEpIL5PM/f0RMhpDIMAkM5O8no/Nwtx75t7PzJngOyfnnmuYpmkKAAAAqAS8XF0AAAAA4CyEWwAAAFQahFsAAABUGoRbAAAAVBqEWwAAAFQahFsAAABUGoRbAAAAVBqEWwAAAFQahFsAAABUGoRbABds586duvXWW1W/fn35+fkpKChI7dq106xZs3Tq1KlyOeeMGTP08ccfl7m9YRhn/apRo0a51FdWu3fv1tSpU3XgwIES+8aMGaPY2NgKr6lIWlqannnmGXXo0EEhISGyWq2KjY3Vbbfdpq1bt7qsroqyZs0aGYahNWvWuLoUAJfA4Pa7AC7EW2+9pXHjxumyyy7TuHHj1Lx5c9lsNn3//fd666231Lp1ay1dutTp5w0KCtL111+vefPmlam9YRi6/vrr9cADDxTb7uPjo/bt2zu9vrL68MMPNWzYMK1evVo9e/Ystm/fvn1KS0tT27ZtK7yuffv2qW/fvkpOTtadd96pnj17KigoSAcOHND//vc/rVixQqdPn1ZoaGiF11ZR0tLStHv3bjVv3lwhISGuLgfARfJ2dQEAPMeGDRt01113KT4+Xh9//LGsVqtjX3x8vB544AF9/vnnLqywuIiICF1++eWuLqPMGjZs6JLzFhQU6B//+IdOnDihDRs2KC4uzrGvR48eGj16tD777DP5+Pi4pL7yZrPZZBiGQkJCPOrzAuDsmJYAoMxmzJghwzA0d+7cYsG2iK+vr66++mrHY7vdrlmzZqlp06ayWq2qVauWRo0apd9//73Y87Zt26bBgwerVq1aslqtio6O1qBBgxztDMNQZmam5s+f75he8PdRzwtV2hSAqVOnyjCMYtsMw9D48eO1YMECNWvWTAEBAWrdurWWL19e4vk//fSTbrzxRkVERMhqtapu3boaNWqUcnNzNW/ePA0bNkyS1KtXL8drKRqNPltNOTk5mjx5surXry9fX1/Vrl1bd999t06fPl2sXWxsrAYPHqzPP/9c7dq1k7+/v5o2bar//ve/530vPv74Y+3atUuTJ08uFmz/asCAAQoICHA8/uabb9S7d28FBwcrICBAXbt21aefflrsOfPmzZNhGPrqq680duxYVa9eXSEhIRo1apQyMzOVlJSkG264QdWqVVNUVJQefPBB2Ww2x/MPHDggwzA0a9YsPfPMM6pbt678/PzUoUMHffnll8XO9euvv+rWW29V48aNFRAQoNq1a2vIkCHatWtXsXZFUw8WLFigBx54QLVr15bVatWvv/561mkJv/32m0aMGKHo6GhZrVZFRESod+/e2r59u6NNWT/nPXv2VFxcnDZv3qwrr7xSAQEBatCggZ599lnZ7fbz9hOAsmHkFkCZFBQU6KuvvlL79u0VExNTpufcddddmjt3rsaPH6/BgwfrwIEDevzxx7VmzRpt3bpVNWrUUGZmpuLj41W/fn29+uqrioiIUFJSklavXq309HRJhSPGV111lXr16qXHH39cksr0a2PTNJWfn19sm8ViKRFey+LTTz/V5s2bNX36dAUFBWnWrFn6xz/+ob1796pBgwaSpB07duiKK65QjRo1NH36dDVu3FjHjh3TJ598ory8PA0aNEgzZszQo48+qldffVXt2rWTVPqIrWmaGjp0qL788ktNnjxZV155pXbu3Kknn3xSGzZs0IYNG4r9kLFjxw498MADeuSRRxQREaH//Oc/+uc//6lGjRqpe/fupb62lStXSpKGDh1apvdi7dq1io+PV6tWrfT222/LarXqtdde05AhQ/Tee+9p+PDhxdr/61//0rXXXqvFixdr27ZtevTRR5Wfn6+9e/fq2muv1e23365Vq1bpueeeU3R0tCZOnFjs+XPmzFG9evWUkJDgCJIDBgzQ2rVr1aVLF0nS0aNHVb16dT377LOqWbOmTp06pfnz56tz587atm2bLrvssmLHnDx5srp06aI33nhDXl5eqlWrlpKSkkq81oEDB6qgoECzZs1S3bp1deLECa1fv77YDxdl+ZwXSUpK0s0336wHHnhATz75pJYuXarJkycrOjpao0aNKtP7D+A8TAAog6SkJFOSOWLEiDK137NnjynJHDduXLHtGzduNCWZjz76qGmapvn999+bksyPP/74nMcLDAw0R48eXeZ6JZ3166233jJN0zRHjx5t1qtXr8TznnzySfPv/zRKMiMiIsy0tDTHtqSkJNPLy8ucOXOmY9tVV11lVqtWzUxOTi61rg8++MCUZK5evbrEvr/X9Pnnn5uSzFmzZhVr9/7775uSzLlz5zq21atXz/Tz8zMPHjzo2JadnW2Gh4ebd9xxR6n1mKZp9u/f35Rk5uTknLNdkcsvv9ysVauWmZ6e7tiWn59vxsXFmXXq1DHtdrtpmqb5zjvvmJLMe+65p9jzhw4dakoyZ8+eXWx7mzZtzHbt2jke79+/35RkRkdHm9nZ2Y7taWlpZnh4uNmnT59Sa8zPzzfz8vLMxo0bm/fff79j++rVq01JZvfu3Us8p2hfUd+cOHHClGQmJCSUep6yfs5N0zR79OhhSjI3btxYrG3z5s3Nfv36lXoOABeGaQkAysXq1aslFf6q/a86deqkZs2aOX6t3KhRI4WFhenhhx/WG2+8od27dzuthhtuuEGbN28u9lXW0cm/69Wrl4KDgx2PIyIiVKtWLR08eFCSlJWVpbVr1+qGG25QzZo1nVG+vvrqK0kl38Nhw4YpMDCwxK/m27Rpo7p16zoe+/n5qUmTJo4anSEzM1MbN27U9ddfr6CgIMd2i8WikSNH6vfff9fevXuLPWfw4MHFHjdr1kySNGjQoBLbz1brtddeKz8/P8fj4OBgDRkyROvWrVNBQYEkKT8/XzNmzFDz5s3l6+srb29v+fr66pdfftGePXtKHPO6664772sNDw9Xw4YN9fzzz2v27Nnatm1biekDZf2cF4mMjFSnTp2KbWvVqpVT+wio6gi3AMqkRo0aCggI0P79+8vU/uTJk5KkqKioEvuio6Md+0NDQ7V27Vq1adNGjz76qFq0aKHo6Gg9+eSTxeZfXoyaNWuqQ4cOxb4udimw6tWrl9hmtVqVnZ0tSUpJSVFBQYHq1KlzSTX/1cmTJ+Xt7V0iLBuGocjISMd7WNYaS1MUiMvStykpKTJNs9R+Lar7r8LDw4s99vX1LXV7Tk5OieNGRkaedVteXp4yMjIkSRMnTtTjjz+uoUOHatmyZdq4caM2b96s1q1bn/X1n63+vzMMQ19++aX69eunWbNmqV27dqpZs6buvfdex5SZsn7Oi1xsHwEoO8ItgDKxWCzq3bu3tmzZUuJCmbMp+o/4sWPHSuw7evRosZDZsmVLLV68WCdPntT27ds1fPhwTZ8+XS+88ILzXsDf+Pn5KTc3t8T2EydOXNTxwsPDZbFYyvTelFX16tWVn5+v48ePF9tumqaSkpKctmZvv379JKlM6wiHhYXJy8ur1H6V5PS1hM82FzYpKUm+vr6O0eOFCxdq1KhRmjFjhvr166dOnTqpQ4cOpfZnWedd16tXT2+//baSkpK0d+9e3X///Xrttdf00EMPSbqwzzmAikG4BVBmkydPlmmaGjt2rPLy8krst9lsWrZsmSTpqquuklQYOv5q8+bN2rNnj3r37l3i+YZhqHXr1nrxxRdVrVq1YjcOcPboVmxsrJKTk/XHH384tuXl5emLL764qOP5+/urR48e+uCDD84ZkIsuACvLayl6j/7+Hn700UfKzMw863t4Ma655hq1bNlSM2fO1A8//HDWNl988YWysrIUGBiozp07a8mSJcVeg91u18KFC1WnTh01adLEKXUVWbJkSbER3fT0dC1btkxXXnmlLBaLpMLPzt9X8Pj000915MgRp9XRpEkTPfbYY2rZsqXjs3kxn3MA5YvVEgCUWZcuXfT6669r3Lhxat++ve666y61aNFCNptN27Zt09y5cxUXF6chQ4bosssu0+23365XXnlFXl5eGjBggOMq8piYGN1///2SpOXLl+u1117T0KFD1aBBA5mmqSVLluj06dOKj493nLtly5Zas2aNli1bpqioKAUHB5e4Av5CDB8+XE888YRGjBihhx56SDk5OXr55ZcdczgvxuzZs3XFFVeoc+fOeuSRR9SoUSP98ccf+uSTT/Tmm28qODjYsdTW3LlzFRwcLD8/P9WvX/+sv66Oj49Xv3799PDDDystLU3dunVzrJbQtm1bjRw58qJr/SuLxaKlS5eqb9++6tKli+666y716tVLgYGBOnjwoD788EMtW7ZMKSkpkqSZM2cqPj5evXr10oMPPihfX1+99tpr+uGHH/Tee+9d1GoU56svPj5eEydOlN1u13PPPae0tDRNmzbN0Wbw4MGaN2+emjZtqlatWmnLli16/vnnL2mayM6dOzV+/HgNGzZMjRs3lq+vr7766ivt3LlTjzzyiCSV+XMOoAK59no2AJ5o+/bt5ujRo826deuavr6+ZmBgoNm2bVvziSeeKLZSQEFBgfncc8+ZTZo0MX18fMwaNWqYt9xyi3n48GFHm59++sm88cYbzYYNG5r+/v5maGio2alTJ3PevHklztmtWzczICDAlGT26NHjnDVKMu++++5ztlmxYoXZpk0b09/f32zQoIE5Z86cUldLONux6tWrV2IFh927d5vDhg0zq1evbvr6+pp169Y1x4wZU2wlgoSEBLN+/fqmxWIxJZnLine truncated
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
@@ -216,7 +216,7 @@
},
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
@@ -226,7 +226,7 @@
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAq8AAAIhCAYAAABg21M1AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAokNJREFUeJzs3Xd4FGXXx/HvJoQUSEBqgIReBEUQG51EioBiNCAlgDQFO0VEfRABX7ALxI5KUwFBCHYpAhEQVKqgILZQJdIJNWV33j/WjSm7yWyyIdnk93kurouZnZ25d4c8ntxz7nMshmEYiIiIiIh4AZ/CHoCIiIiIiFkKXkVERETEayh4FRERERGvoeBVRERERLyGglcRERER8RoKXkVERETEayh4FRERERGvoeBVRERERLyGglcRERER8RoKXkVKiLlz52KxWNL/lCpVirCwMIYMGcLhw4cvyxhq167N4MGD07fj4+OxWCzEx8e7dZ6NGzcyadIkTp8+ne21iIgIIiIi8jXO4mDMmDFYLBZuu+22PJ9j9+7dTJo0iX379nluYDnI+u8jq59++gmLxcITTzzh8pjff/8di8XCI488Yvq6kyZNwmKxuDNUESlECl5FSpg5c+awadMmVq1axb333svChQtp164d58+fv+xjadGiBZs2baJFixZuvW/jxo1MnjzZafD65ptv8uabb3pohN4pNTWVDz/8EIDly5fn+ZeT3bt3M3ny5MsWvOamWbNmXHfddbz//vtYrVanx8yZMweAYcOGXc6hichlpOBVpIS5+uqradmyJZGRkUycOJFx48aRkJDAJ5984vI9Fy5cKJCxhISE0LJlS0JCQjx2ziZNmtCkSROPnc8bffrppxw7doxbb70Vq9XKvHnzCntIHjNs2DCOHDnC119/ne01q9XK+++/z3XXXUezZs0KYXQicjkoeBUp4Vq2bAnA/v37ARg8eDBly5Zl165ddOnSheDgYDp27AhASkoKU6ZM4corr8Tf35/KlSszZMgQjh07lumcqampjBs3jtDQUIKCgmjbti0//vhjtmu7Shv44Ycf6NGjBxUrViQgIIB69eoxatQowP6I97HHHgOgTp066WkQjnM4Sxs4efIkDzzwADVq1KB06dLUrVuX8ePHk5ycnOk4i8XCQw89xAcffEDjxo0JCgqiWbNmfPHFF5mOO3bsGMOHDyc8PDz9e2jTpg3ffPONy+/5k08+wWKxsHr16myvvfXWW1gsFnbu3AnAX3/9Rd++falevTr+/v5UrVqVjh07smPHDpfnz2jWrFmULl2aOXPmEB4ezpw5czAMI9txv/76K/369aNq1ar4+/tTs2ZN7r77bpKTk5k7dy533XUXAJGRkenf89y5cwHXj/izfv+XLl3i0UcfpXnz5pQrV44KFSrQqlUrPv30U1OfJauYmBgCAwPTZ1gzWrlyJYcPH2bo0KEALFq0iC5dulCtWjUCAwNp3LgxTzzxhKmnDBaLhUmTJmXb7+xzJyYmMmLECMLCwihdujR16tRh8uTJpKWlZTrurbfeolmzZpQtW5bg4GCuvPJK/ve//5n/8CICQKnCHoCIFK4//vgDgMqVK6fvS0lJ4fbbb2fEiBE88cQTpKWlYbPZiIqKYv369YwbN47WrVuzf/9+Jk6cSEREBFu2bCEwMBCAe++9l/fff5+xY8fSuXNnfv75Z6Kjozl79myu41mxYgU9evSgcePGTJs2jZo1a7Jv3z5WrlwJwD333MPJkyd57bXXiIuLo1q1agAuZ1svXbpEZGQkf/75J5MnT+aaa65h/fr1PPfcc+zYsYMvv/wy0/Fffvklmzdv5plnnqFs2bK8+OKL3Hnnnezdu5e6desCMHDgQLZt28bUqVNp2LAhp0+fZtu2bZw4ccLl57rtttuoUqUKc+bMSf9lwGHu3Lm0aNGCa665BoDu3btjtVp58cUXqVmzJsePH2fjxo1O0ySyOnToECtXrqRnz55UrlyZQYMGMWXKFNatW0eHDh3Sj/vpp59o27YtlSpV4plnnqFBgwYcOXKEzz77jJSUFG699VaeffZZ/ve///HGG2+kp3bUq1cv1zFklJyczMmTJxk7diw1atQgJSWFb775hujoaObMmcPdd9/t1vnKlStHz549WbRoEceOHcv073bOnDkEBAQQExMD2PNfu3fvzqhRoyhTpgy//vorL7zwAj/++CNr1qxx67quJCYmcuONN+Lj48PTTz9NvXr12LRpE1OmTGHfvn3pQfZHH33EAw88wMMPP8zLL7+Mj48Pf/zxB7t37/bIOERKFENESoQ5c+YYgPH9998bqampxtmzZ40vvvjCqFy5shEcHGwkJiYahmEYgwYNMgBj9uzZmd6/cOFCAzCWLl2aaf/mzZsNwHjzzTcNwzCMPXv2GIAxevToTMfNnz/fAIxBgwal71u7dq0BGGvXrk3fV69ePaNevXrGxYsXXX6Wl156yQCMhISEbK916NDB6NChQ/r222+/bQDG4sWLMx33wgsvGICxcuXK9H2AUbVqVSMpKSl9X2JiouHj42M899xz6fvKli1rjBo1yuX4XBkzZowRGBhonD59On3f7t27DcB47bXXDMMwjOPHjxuAMWPGDLfPbxiG8cwzzxiAsXz5csMwDOOvv/4yLBaLMXDgwEzH3XzzzUb58uWNo0ePujzXxx9/nO3+ONSqVSvTvXTI+v1nlZaWZqSmphrDhg0zrr32WlPnzMrx72batGnp+06cOGH4+/sb/fv3d/oem81mpKamGt9++60BGD/99FP6axMnTjSy/ucQMCZOnJjtPFnHOGLECKNs2bLG/v37Mx338ssvG4Dxyy+/GIZhGA899JBRvnz5XD+biOROaQMiJUzLli3x8/MjODiY2267jdDQUL7++muqVq2a6biePXtm2v7iiy8oX748PXr0IC0tLf1P8+bNCQ0NTX9sv3btWgD69++f6f29e/emVKmcH/b89ttv/PnnnwwbNoyAgIB8flK7NWvWUKZMGXr16pVpv+PRb9bH+JGRkQQHB6dvV61alSpVqqSnVQDceOONzJ07lylTpvD999+TmppqaixDhw7l4sWLLFq0KH3fnDlz8Pf3T58trFChAvXq1eOll15i2rRpbN++HZvNZur8hmGkpwp07twZsKdWREREsHTpUpKSkgB7DvO3335L7969M81cFpSPP/6YNm3aULZsWUqVKoWfnx+zZs1iz549eTpfhw4dqFevXqbUgfnz55OcnJyeMgD29IuYmBhCQ0Px9fXFz88vffY5r9fO6osvviAyMpLq1atn+rno1q0bAN9++y1g/zdz+vRp+vXrx6effsrx48c9cn2RkkjBq0gJ8/7777N582a2b9/O33//zc6dO2nTpk2mY4KCgrItovrnn384ffo0pUuXxs/PL9OfxMTE9P8YOx6dh4aGZnp/qVKlqFixYo5jc+TOhoWF5eszZnTixAlCQ0OzlUKqUqUKpUqVyvao39kY/f39uXjxYvr2okWLGDRoEO+99x6tWrWiQoUK3H333SQmJuY4lquuuoobbrghPeiyWq18+OGHREVFUaFCBYD0vNhbbrmFF198kRYtWlC5cmUeeeSRXNMu1qxZQ0JCAnfddRdJSUmcPn2a06dP07t3by5cuMDChQsBOHXqFFar1aPfsytxcXH07t2bGjVq8OGHH7Jp0yY2b97M0KFDuXTpUp7OabFYGDp0KLt27WLLli2A/ZeAOnXqEBkZCcC5c+do164dP/zwA1OmTCE+Pp7NmzcTFxcHkOl+5sc///zD559/nu1n4qqrrgJI/7kYOHAgs2fPZv/+/fTs2ZMqVapw0003sWrVKo+MQ6QkUc6rSAnTuHFjrr/++hyPcVbzslKlSlSsWJHly5c7fY9jttIR/CUmJlKjRo3019PS0nLMCYX/8m4PHTqU43HuqFixIj/88AOGYWT6XEePHiUtLY1KlSq5fc5KlSoxY8YMZsyYwYEDB/jss8944oknOHr0qMvvx2HIkCE88MAD7Nmzh7/++osjR44wZMiQTMfUqlWLWbNmAfbZ6MWLFzNp0iRSUlJ4++23XZ7b8Z5p06Yxbdo0p6+PGDGCChUq4Ovrm6/vOSAgINuCN7AHaxm/0w8//JA6deqwaNGiTN+/s/e6Y/DgwTz99NPMnj0bPz8/tm/fzv/93/+lX2PNmjX8/fffxMfHZ8r1NZM3DPZfWJyNMeu/4UqVKnHNNdcwdepUp+epXr16+t+HDBnCkCFDOH/+POvWrWPixIncdttt/Pbbb9SqVcvUuEREwauImHTbbbfx0UcfYbVauemmm1we51hpPn/+fK677rr0/YsXL862+jqrhg0bUq9ePWbPns2YMWPw9/d3epxjv5nZs44dO7J48WI++eQT7rzzzvT977//fvrr+VGzZk0eeughVq9ezXfffZfr8f369WPMmDHMnTuXv/76ixo1atClSxeXxzds2JCnnnqKpUuXsm3bNpfHnTp1imXLltGmTRumTJmS7fX33nuP+fPn8/PPP3P11VfToUMHPv74Y6ZOneoygM/pe65du3Z6dQSH3377jb1792Y6n8VioXTp0pkC18TExDxXG3CoXr06Xbt2ZeHChaSlpeHj48OgQYMyXTfjZ3CYOXOmqfM7+3xr1qzh3LlzmfbddtttfPXVV9SrV48rrrjC1LnLlClDt27dSElJ4Y477uCXX35R8CriBgWvImJK3759mT9/Pt27d2fkyJHceOON+Pn5cejQIdauXUtUVBR33nknjRs3ZsCAAcyYMQM/Pz86derEzz//zMsvv2yqnusbb7xBjx49aNmyJaNHj6ZmzZocOHCAFStWMH/+fACaNm0KQGxsLIMGDcLPz49GjRplylV1uPvuu3njjTcYNGgQ+/bto2nTpmzYsIFnn32W7t2706lTJ7e+hzNnzhAZGUlMTAxXXnklwcHBbN68meXLlxMdHZ3r+8uXL8+Line truncated
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAq8AAAIhCAYAAABg21M1AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAogpJREFUeJzs3Xd4FFXbx/HvJoQUSEBqQhKKNLGB2CgiQRFBxWgIHaRY8EGliVgQCT6gYgFiwUqVLkSxIEUhAgIKAsIriKAUwUSaElraZt4/9tmQTXaT3c0m2SS/j1eui5k9M3N2J8i9Z+5zH5NhGAYiIiIiIqWAT0l3QERERETEWQpeRURERKTUUPAqIiIiIqWGglcRERERKTUUvIqIiIhIqaHgVURERERKDQWvIiIiIlJqKHgVERERkVJDwauIiIiIlBoKXkXKidmzZ2MymbJ/KlSoQEREBIMGDeLYsWPF0of69eszcODA7O3ExERMJhOJiYkunWfTpk3ExcXx77//5nktKiqKqKioQvWzLBg1ahQmk4l77rnH7XPs2bOHuLg4Dh065LmO5SP370duP//8MyaTiWeeecZhm/3792MymRg2bJjT142Li8NkMrnSVREpQQpeRcqZWbNmsXnzZtasWcPDDz/MwoULadeuHefPny/2vrRs2ZLNmzfTsmVLl47btGkTEyZMsBu8Tp8+nenTp3uoh6VTRkYG8+bNA2DlypVufznZs2cPEyZMKLbgtSDNmzfn+uuvZ+7cuZjNZrttZs2aBcCDDz5YnF0TkWKk4FWknLn66qtp1aoVHTp0YPz48YwZM4aDBw/y2WefOTzmwoULRdKXkJAQWrVqRUhIiMfOeeWVV3LllVd67Hyl0fLlyzlx4gR33303ZrOZOXPmlHSXPObBBx8kKSmJr7/+Os9rZrOZuXPncv3119O8efMS6J2IFAcFryLlXKtWrQA4fPgwAAMHDqRy5crs3r2bTp06ERwczO233w5Aeno6EydO5IorrsDf35+aNWsyaNAgTpw4YXPOjIwMxowZQ2hoKEFBQdxyyy38+OOPea7tKG3ghx9+oGvXrlSvXp2AgAAaNmzIiBEjAMsj3qeeegqABg0aZKdBWM9hL23g9OnTDB06lPDwcCpWrMjll1/O2LFjSUtLs2lnMpl4/PHH+fjjj2nWrBlBQUE0b96cL7/80qbdiRMneOSRR4iMjMz+HNq2bcs333zj8HP+7LPPMJlMfPvtt3lee/fddzGZTOzatQuAP/74g169elGnTh38/f2pXbs2t99+Ozt37nR4/pxmzJhBxYoVmTVrFpGRkcyaNQvDMPK0+/XXX+nduze1a9fG39+funXr8sADD5CWlsbs2bPp3r07AB06dMj+nGfPng04fsSf+/NPTU3lySefpEWLFlSpUoVq1arRunVrli9f7tR7ya1Pnz4EBgZmj7DmtHr1ao4dO8bgwYMBWLx4MZ06dSIsLIzAwECaNWvGM88849RTBpPJRFxcXJ799t53cnIyQ4YMISIigooVK9KgQQMmTJhAZmamTbt3332X5s2bU7lyZYKDg7niiit47rnnnH/zIgJAhZLugIiUrAMHDgBQs2bN7H3p6ence++9DBkyhGeeeYbMzEyysrKIjo5mw4YNjBkzhjZt2nD48GHGjx9PVFQU27ZtIzAwEICHH36YuXPnMnr0aO644w7+7//+j5iYGM6ePVtgf1atWkXXrl1p1qwZU6ZMoW7duhw6dIjVq1cD8NBDD3H69GneeustEhISCAsLA3A42pqamkqHDh34/fffmTBhAtdeey0bNmzg5ZdfZufOnXz11Vc27b/66iu2bt3Kiy++SOXKlXn11Ve5//772bdvH5dffjkA/fv3Z/v27UyaNIkmTZrw77//sn37dk6dOuXwfd1zzz3UqlWLWbNmZX8ZsJo9ezYtW7bk2muvBeCuu+7CbDbz6quvUrduXU6ePMmmTZvspknkdvToUVavXk23bt2oWbMmAwYMYOLEiaxfv5727dtnt/v555+55ZZbqFGjBi+++CKNGzcmKSmJzz//nPT0dO6++25eeuklnnvuOd55553s1I6GDRsW2Iec0tLSOH36NKNHjyY8PJz09HS++eYbYmJimDVrFg888IBL56tSpQrdunVj8eLFnDhxwub3dtasWQQEBNCnTx/Akv961113MWLECCpVqsSvv/7K5MmT+fHHH1m7dq1L13UkOTmZm266CR8fH1544QUaNmzI5s2bmThxIocOHcoOshctWsTQoUN54okneP311/Hx8eHAgQPs2bPHI/0QKVcMESkXZs2aZQDGli1bjIyMDOPs2bPGl19+adSsWdMIDg42kpOTDcMwjAEDBhiAMXPmTJvjFy5caADGsmXLbPZv3brVAIzp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 truncated
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
@@ -236,7 +236,7 @@
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAArEAAAIhCAYAAABZvOJuAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAehNJREFUeJzt3Xt4E2X6N/Bv0paeA5RCW2hLi0AtUFDABUROylkRrAiC+oIiux5QEM+iS0HERVFBd0F+qIAHWLpQFQQLRaiigAgCopSqQGw5ydGm9ESbzPtHSWjSJJ0kk8xM8v1cF5c2eTJ5MpmZ3HPPPc+jEQRBABERERGRimjl7gARERERkasYxBIRERGR6jCIJSIiIiLVYRBLRERERKrDIJaIiIiIVIdBLBERERGpDoNYIiIiIlIdBrFEREREpDoMYomIiIhIdRjEElFAWb58OTQajeVfcHAwEhIScPfdd+O3337z2vtmZWVBo9GIapuSkoKJEyd6rS+u9MfczvyvUaNGSE1NxdSpU/HXX39Z2pnXq16vd7kvGzduRFZWlsuvI6LAxiCWiALSsmXLsHPnTmzZsgVTpkzBunXrcNNNN+HixYteeb8HH3wQO3fu9MqyfSE3Nxc7d+7Ehg0bMGrUKLzzzjsYNmwYpJi5fOPGjZg1a5YEvSSiQBIsdweIiOTQqVMndO/eHQDQv39/GI1GzJw5E5999hnuv/9+yd8vMTERiYmJki/XV7p164bY2FgAwKBBg3D+/Hl89NFH2LFjB3r37i1z74goEDETS0QEWALaP//80+rxPXv24Pbbb0dMTAzCwsJw/fXXIzs726pNeXk5nnrqKaSmpiIsLAwxMTHo3r07Vq1aZWlj7/J9dXU1nnnmGcTHxyMiIgI33XQTdu/eXa9vji7927uEv3r1agwePBgJCQkIDw9Heno6nnvuOZSVlbm8Tpzp2bMnAOCPP/5w2u6DDz5Aly5dLOvljjvuQEFBgeX5iRMn4j//+Q8AWJUtuFOWQESBhZlYIiIAx44dAwC0b9/e8ti2bdswdOhQ9OjRA++++y4aN26M//73vxg7dizKy8stdavTp0/HRx99hDlz5uD6669HWVkZfv75Z5w/f97pe06ePBkffvghnnrqKQwaNAg///wzMjMzUVpa6vbn+O233zB8+HBMmzYNkZGROHz4MObNm4fdu3dj69atbi/X1u+//w4AaN68ucM2r776Kl544QWMGzcOr776Ks6fP4+srCz06tULP/zwA9q1a4eXXnoJZWVlWLNmjVW5RUJCgmR9JSL/xCCWiAKS0WhETU0NKisr8d1332HOnDno27cvbr/9dkubRx55BB07dsTWrVsRHFx7uBwyZAjOnTuHF154Af/v//0/aLVafPfddxg8eDCeeOIJy2tvvfVWp+9/+PBhrFixAk888QRee+01ALWX6ePi4nDPPfe4/blefPFFy/8LgoDevXsjPT0d/fr1w08//YTOnTu7tVzz+rp06RI2bNiAd999F0lJSejTp4/d9n/99RdefvllDB8+HCtXrrQ83r9/f7Rr1w5ZWVn45JNPcM011yAuLg7A1ewuEZEYLCcgooDUs2dPhISEIDo6GkOHDkXTpk3x+eefW4LV33//HYcPH7YElDU1NZZ/w4cPx6lTp1BYWAgA+Nvf/oYvv/wSzz33HPLz81FRUdHg+2/btg0A6gWsY8aMsfTBHUePHsX48eMRHx+PoKAghISEoF+/fgBgdRnfVfHx8QgJCUHTpk1x7733omvXrsjNzUVYWJjd9jt37kRFRUW9URaSkpJw880346uvvnK7L0READOxRBSgPvzwQ6Snp6O0tBSrV6/GkiVLMG7cOHz55ZcArtbGPvXUU3jqqafsLuPcuXMAgLfffhuJiYlYvXo15s2bh7CwMAwZMgSvv/462rVrZ/e15lKD+Ph4q8eDg4PRrFkztz7TpUuX0KdPH4SFhWHOnDlo3749IiIiUFxcjMzMTFHBtSNbtmxB48aNERISgsTExAb7aP589soCWrZsiby8PLf7QkQEMIglogCVnp5uuZlrwIABMBqNeO+997BmzRqMHj3acif+888/j8zMTLvLSEtLAwBERkZi1qxZmDVrFv78809LVnbEiBE4fPiw3deag8DTp0+jVatWlsdramrq1dKas51VVVUIDQ21PG4Oos22bt2KkydPIj8/35J9BWA1nqu7unTpYlknYpg/36lTp+o9d/LkSZeWRURkD8sJiIgAvPbaa2jatCn++c9/wmQyIS0tDe3atcOBAwfQvXt3u/+io6PrLScuLg4TJ07EuHHjUFhYiPLycrvv179/fwDAJ598YvV4dnY2ampqrB5LSUkBAPz0009Wj69fv97qb/MIBnUDXQBYsmSJ8w/vBb169UJ4eDg+/vhjq8ePHz+OrVu34pZbbrE8Zu6vJ5liIgo8zMQSEQFo2rQpnn/+eTzzzDNYuXIl7r33XixZsgTDhg3DkCFDMHHiRLRq1QoXLlxAQUEBfvzxR/zvf/8DAPTo0QO33XYbOnfujKZNm6KgoAAfffQRevXqhYiICLvvl56ejnvvvRcLFixASEgIBg4ciJ9//hnz58+HTqezajt8+HDExMRg0qRJmD17NoKDg7F8+XIUFxdbtbvxxhvRtGlTPPTQQ5g5cyZCQkLwySef4MCBA95ZaU40adIEL730kuUGuHHjxuH8+fOYNWsWwsLCMHPmTEvbjIwMAMC8efMwbNgwBAUFoXPnzmjUqJHP+01E6sFMLBHRFY899hiSk5Mxe/ZsGI1GDBgwALt370aTJk0wbdo0DBw4EA8//DC2bNmCgQMHWl538803Y926dbj//vsxePBgvPbaa/h//+//1cuU2nr//fcxffp0LF++HLfffjuys7Oxdu1aNG3a1KqdTqdDbm4uoqOjce+99+Khhx5Cp06dMGPGDKt2zZo1w4YNGxAREYF7770XDzzwAKKiorB69WrpVpILnn/+ebz33ns4cOAARo0ahSlTpqBjx47YsWOHVa3w+PHj8eCDD2LRokXo1asXbrjhBpw8eVKWPhORemgEKeYMJCIiIiLyIWZiiYiIiEh1GMQSERERkeowiCUiIiIi1WEQS0RERESqwyCWiIiIiFSHQSwRERERqU5ATXZgMplw8uRJREdHW2a2ISIiIiLlEAQBpaWlaNmyJbRax/nWgApiT548iaSkJLm7QUREREQNKC4uRmJiosPnAyqINc9zXlxcXG9ax0BSXV2NzZs3Y/DgwQgJCZG7O6QA3CaoLm4PZIvbBNny5jZhMBiQlJRkidscCagg1lxCoNPpAj6IjYiIgE6n48GIAHCbIGvcHsgWtwmy5YttoqHST97YRURERESqwyCWiIiIiFSHQSwRERERqQ6DWCIiIiJSHQaxRERERKQ6DGKJiIiISHUYxBIRERGR6jCIJSIiIiLVYRBLRERERKrDIJaIiIiIVIdBLBERERGpDoNYIiIiIlIdBrFEREREpDrBcneAyJbJaELR9iKUnipFdEI0kvskQxvE8y0iIiK6ikGsSvlroFeQU4DcqbkwHDdYHtMl6jB04VCkZ6bL2DMiIiJSEgaxKuSvgV5BTgGyR2cDgvXjhhMGZI/Oxpg1Y1T9+YiIiEg66k/dBRhzoFc3gAWuBnoFOQUy9cwzJqMJuVNz6wWwACyP5U7Lhclo8mm/iIiISJkYxKqIPwd6RduL6gXmVgTAUGxA0fYi33WKiIiIFItBrIr4c6BXeqpU0nZERETk3xjEqog/B3rRCdGStiMiIiL/xiBWRfw50Evukwxdog7QOGigAXRJOiT3SfZpv4iIiEiZGMSqiD8HetogLYYuHFr7h+3nu/L30AVD/WIYMSIiIvIcIwIV8fdALz0zHWPWjIGulc7qcV2ijsNrERERkRWOE6sy5kDP7jixC9Q9TixQ+/nSRqb55UQOREREJB0GsSrk74GeNkiLlP4pcneDiIiIFIxBrEox0CMiIqJA5h+pOyIiIiIKKMzEEhEREV1hMpr8tlzP3zCIVSnuZERERNIqyCmwf+P0QvXfOO2PGMSqEHcyIiIKRN5M4BTkFCB7dDYgWD9uOGFA9uhsDvWoQAxiVUZJOxmzwURE5CveTOCYjCbkTs2t99sKoPYxDZA7LRdpI9P4O6cgDGJVREk7GbPBRETkK95O4BRtL7L6PatHAAzFBhRtL+LIQArC0wkVcWUn8ybzwcS2L+aDSUFOgVffn4iIAkeDCRzUJnBMRpPb71F6qlTSduQbDGJVRAk7mS8OJkRERGa+SOBEJ0RL2o58g0GsivhqJzMZTdDn63Fw1UHo8/VWAalSssFERBQYfJHASe6TDF2iDtA4aKABdEk6JPdJdvs9SHqsiVUR805mOGGwnwnV1NalerKTNVTr6qtsMG8aIyIiwDcJHG2QFkMXDq2tu9XA+jf2SmA7dMFQ/g4pDINYFfH2TiamcN4XBxPeNEZERGa+SOAAQHpmOsasGWP/92dB4P7+KDmpxCBWZby1k4kd+eCx3x/z6sFESUOIERGR/HyZJU3PTEfayDTFBm2+5iyp1HZEWxl7VotBrAp5YycTW+t6fMdxrx1MlDSEGBERKYcvs6TaIC2H0ULDSaU719wJBMnTNzMGsSol9U7mSq1rxrgMrxxMOE4fERE54o9ZUqVeqheTVNry3Bakvp7q665ZYRBLAFwvnPfGweTw54dFteM4fUREgcmfsqRKvv9DTFKp9Lj8v8UMYgmAe4XzUh5MTEYTDn5yUFRbjtNHRERqpvT7P9SSLJI/Z02KYC6cB1B/nDwfDC9StL0I5WfLG2wX0TyC4/QREZFq+XLSIGfjvjujlmQRM7FkIefwImLP+jrf01kR9UJERETuEHv/hz5fjza3tHH7fTwpVxBzdTY6Uf5AVzXRwKuvvoobbrgB0dHRaNGiBUaNGoXCwkK5u+V30jPTMVU/FRO2TUDmykxM2DYBU49N9fpLine truncated
"image/png": "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 truncated
"text/plain": [
"<Figure size 800x600 with 1 Axes>"
]
+50
View File
@@ -0,0 +1,50 @@
import numpy as np
# Hypothesis function
def hypothesis(X, theta):
"""
Compute the hypothesis (predictions) for the given input and parameters.
"""
result = np.dot(X, theta).reshape(-1, 1)
# print("Shape of X:", X.shape)
# print("Shape of theta:", theta.shape)
# print("Shape of hypothesis output:", result.shape)
return result
# Cost function (Mean Squared Error)
def compute_cost(X, y, theta, _lambda=0):
"""
Compute the cost (Mean Squared Error) for the given input, target, and parameters.
"""
m = len(y)
predictions = hypothesis(X, theta)
errors = predictions - y
cost = (1 / (2 * m)) * np.sum(errors**2)
# # print(f"Max error: {np.max(errors):.4f}, Cost: {cost:.4f}") # Debugging
return cost
# Compute gradients
def compute_gradients(theta, X, y, _lambda=0):
"""
Compute gradients for gradient descent.
Parameters:
theta (numpy.ndarray): Model parameters (n,).
X (numpy.ndarray): Feature matrix (m, n).
y (numpy.ndarray): Target values (m, 1).
Returns:
numpy.ndarray: Gradients (n,).
"""
# print("Shape of theta, X, y:", theta.shape, X.shape, y.shape)
m = len(y)
errors = hypothesis(X, theta) - y # Compute prediction errors
# print("Shape of errors:", errors.shape) # Debugging
gradients = (1 / m) * np.dot(X.T, errors) # Compute gradients
# print("Shape of gradients:", gradients.shape) # Debugging
return gradients.flatten()
+48
View File
@@ -27,3 +27,51 @@ def standardize(X):
mean = np.mean(X, axis=0)
std = np.std(X, axis=0)
return (X - mean) / std
from question import hypothesis
# Cost function (Mean Squared Error)
def compute_cost(X, y, theta, lambda_):
"""
Compute the cost (Mean Squared Error) with L2 regularization.
Parameters:
X (numpy.ndarray): Feature matrix (m, n).
y (numpy.ndarray): Target values (m, 1).
theta (numpy.ndarray): Model parameters (n,).
lambda_ (float): Regularization parameter.
Returns:
float: Regularized cost.
"""
m = len(y)
predictions = hypothesis(X, theta)
errors = predictions - y
reg_comp = (lambda_ / (2 * m)) * np.sum(theta[1:]**2) # Exclude theta[0]
cost = (1 / (2 * m)) * np.sum(errors**2) + reg_comp
return cost
# Compute gradients
def compute_gradients(theta, X, y, lambda_):
"""
Compute gradients for gradient descent with L2 regularization.
Parameters:
theta (numpy.ndarray): Model parameters (n,).
X (numpy.ndarray): Feature matrix (m, n).
y (numpy.ndarray): Target values (m, 1).
lambda_ (float): Regularization parameter.
Returns:
numpy.ndarray: Gradients (n,).
"""
m = len(y)
errors = hypothesis(X, theta) - y # Compute prediction errors
gradients = (1 / m) * np.dot(X.T, errors) # Compute gradients
reg_term = (lambda_ / m) * theta # Regularization term
reg_term = reg_term.reshape(-1, 1)
reg_term[0] = 0 # Do not regularize the bias term (theta[0])
gradients += reg_term # Add regularization term to gradients
return gradients.flatten()