You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
613 lines
45 KiB
Plaintext
613 lines
45 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "cf10ec2f",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
".. _iris_dataset:\n",
|
|
"\n",
|
|
"Iris plants dataset\n",
|
|
"--------------------\n",
|
|
"\n",
|
|
"**Data Set Characteristics:**\n",
|
|
"\n",
|
|
":Number of Instances: 150 (50 in each of three classes)\n",
|
|
":Number of Attributes: 4 numeric, predictive attributes and the class\n",
|
|
":Attribute Information:\n",
|
|
" - sepal length in cm\n",
|
|
" - sepal width in cm\n",
|
|
" - petal length in cm\n",
|
|
" - petal width in cm\n",
|
|
" - class:\n",
|
|
" - Iris-Setosa\n",
|
|
" - Iris-Versicolour\n",
|
|
" - Iris-Virginica\n",
|
|
"\n",
|
|
":Summary Statistics:\n",
|
|
"\n",
|
|
"============== ==== ==== ======= ===== ====================\n",
|
|
" Min Max Mean SD Class Correlation\n",
|
|
"============== ==== ==== ======= ===== ====================\n",
|
|
"sepal length: 4.3 7.9 5.84 0.83 0.7826\n",
|
|
"sepal width: 2.0 4.4 3.05 0.43 -0.4194\n",
|
|
"petal length: 1.0 6.9 3.76 1.76 0.9490 (high!)\n",
|
|
"petal width: 0.1 2.5 1.20 0.76 0.9565 (high!)\n",
|
|
"============== ==== ==== ======= ===== ====================\n",
|
|
"\n",
|
|
":Missing Attribute Values: None\n",
|
|
":Class Distribution: 33.3% for each of 3 classes.\n",
|
|
":Creator: R.A. Fisher\n",
|
|
":Donor: Michael Marshall (MARSHALL%PLU@io.arc.nasa.gov)\n",
|
|
":Date: July, 1988\n",
|
|
"\n",
|
|
"The famous Iris database, first used by Sir R.A. Fisher. The dataset is taken\n",
|
|
"from Fisher's paper. Note that it's the same as in R, but not as in the UCI\n",
|
|
"Machine Learning Repository, which has two wrong data points.\n",
|
|
"\n",
|
|
"This is perhaps the best known database to be found in the\n",
|
|
"pattern recognition literature. Fisher's paper is a classic in the field and\n",
|
|
"is referenced frequently to this day. (See Duda & Hart, for example.) The\n",
|
|
"data set contains 3 classes of 50 instances each, where each class refers to a\n",
|
|
"type of iris plant. One class is linearly separable from the other 2; the\n",
|
|
"latter are NOT linearly separable from each other.\n",
|
|
"\n",
|
|
".. dropdown:: References\n",
|
|
"\n",
|
|
" - Fisher, R.A. \"The use of multiple measurements in taxonomic problems\"\n",
|
|
" Annual Eugenics, 7, Part II, 179-188 (1936); also in \"Contributions to\n",
|
|
" Mathematical Statistics\" (John Wiley, NY, 1950).\n",
|
|
" - Duda, R.O., & Hart, P.E. (1973) Pattern Classification and Scene Analysis.\n",
|
|
" (Q327.D83) John Wiley & Sons. ISBN 0-471-22361-1. See page 218.\n",
|
|
" - Dasarathy, B.V. (1980) \"Nosing Around the Neighborhood: A New System\n",
|
|
" Structure and Classification Rule for Recognition in Partially Exposed\n",
|
|
" Environments\". IEEE Transactions on Pattern Analysis and Machine\n",
|
|
" Intelligence, Vol. PAMI-2, No. 1, 67-71.\n",
|
|
" - Gates, G.W. (1972) \"The Reduced Nearest Neighbor Rule\". IEEE Transactions\n",
|
|
" on Information Theory, May 1972, 431-433.\n",
|
|
" - See also: 1988 MLC Proceedings, 54-64. Cheeseman et al\"s AUTOCLASS II\n",
|
|
" conceptual clustering system finds 3 classes in the data.\n",
|
|
" - Many, many more ...\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"#!pip3 install scikit-learn\n",
|
|
"from sklearn import datasets\n",
|
|
"iris = datasets.load_iris()\n",
|
|
"print(iris.DESCR)\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 37,
|
|
"id": "b27685c7",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"array([[1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [1],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0],\n",
|
|
" [0]])"
|
|
]
|
|
},
|
|
"execution_count": 37,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"import numpy as np \n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"x = iris.data[:,3:4]\n",
|
|
"y = (iris.target == 0).astype(int).reshape(-1,1)\n",
|
|
"y"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"id": "8a2a7b97",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def sigmoid(z):\n",
|
|
" z = np.clip(z, -500, 500)\n",
|
|
" sig = 1.0 / (1.0 + np.exp(-z))\n",
|
|
" return sig"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"id": "9774b339",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def log_loss(y, p, eps=1e-12):\n",
|
|
" p = np.clip(p, eps, 1 - eps)\n",
|
|
" return -np.mean(y*np.log(p) + (1-y)*np.log(1-p))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 27,
|
|
"id": "6ab87f00",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"lr=0.1\n",
|
|
"epochs=2000 \n",
|
|
"l2=0.0,\n",
|
|
"X = np.column_stack([X, np.ones_like(X)])\n",
|
|
"m = X.shape[0]\n",
|
|
"theta = np.zeros((2,1))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 28,
|
|
"id": "2a9d4df3",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"array([[0.2, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.4, 1. ],\n",
|
|
" [0.3, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.1, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.1, 1. ],\n",
|
|
" [0.1, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.4, 1. ],\n",
|
|
" [0.4, 1. ],\n",
|
|
" [0.3, 1. ],\n",
|
|
" [0.3, 1. ],\n",
|
|
" [0.3, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.4, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.5, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.4, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.4, 1. ],\n",
|
|
" [0.1, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.1, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.3, 1. ],\n",
|
|
" [0.3, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.6, 1. ],\n",
|
|
" [0.4, 1. ],\n",
|
|
" [0.3, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [0.2, 1. ],\n",
|
|
" [1.4, 1. ],\n",
|
|
" [1.5, 1. ],\n",
|
|
" [1.5, 1. ],\n",
|
|
" [1.3, 1. ],\n",
|
|
" [1.5, 1. ],\n",
|
|
" [1.3, 1. ],\n",
|
|
" [1.6, 1. ],\n",
|
|
" [1. , 1. ],\n",
|
|
" [1.3, 1. ],\n",
|
|
" [1.4, 1. ],\n",
|
|
" [1. , 1. ],\n",
|
|
" [1.5, 1. ],\n",
|
|
" [1. , 1. ],\n",
|
|
" [1.4, 1. ],\n",
|
|
" [1.3, 1. ],\n",
|
|
" [1.4, 1. ],\n",
|
|
" [1.5, 1. ],\n",
|
|
" [1. , 1. ],\n",
|
|
" [1.5, 1. ],\n",
|
|
" [1.1, 1. ],\n",
|
|
" [1.8, 1. ],\n",
|
|
" [1.3, 1. ],\n",
|
|
" [1.5, 1. ],\n",
|
|
" [1.2, 1. ],\n",
|
|
" [1.3, 1. ],\n",
|
|
" [1.4, 1. ],\n",
|
|
" [1.4, 1. ],\n",
|
|
" [1.7, 1. ],\n",
|
|
" [1.5, 1. ],\n",
|
|
" [1. , 1. ],\n",
|
|
" [1.1, 1. ],\n",
|
|
" [1. , 1. ],\n",
|
|
" [1.2, 1. ],\n",
|
|
" [1.6, 1. ],\n",
|
|
" [1.5, 1. ],\n",
|
|
" [1.6, 1. ],\n",
|
|
" [1.5, 1. ],\n",
|
|
" [1.3, 1. ],\n",
|
|
" [1.3, 1. ],\n",
|
|
" [1.3, 1. ],\n",
|
|
" [1.2, 1. ],\n",
|
|
" [1.4, 1. ],\n",
|
|
" [1.2, 1. ],\n",
|
|
" [1. , 1. ],\n",
|
|
" [1.3, 1. ],\n",
|
|
" [1.2, 1. ],\n",
|
|
" [1.3, 1. ],\n",
|
|
" [1.3, 1. ],\n",
|
|
" [1.1, 1. ],\n",
|
|
" [1.3, 1. ],\n",
|
|
" [2.5, 1. ],\n",
|
|
" [1.9, 1. ],\n",
|
|
" [2.1, 1. ],\n",
|
|
" [1.8, 1. ],\n",
|
|
" [2.2, 1. ],\n",
|
|
" [2.1, 1. ],\n",
|
|
" [1.7, 1. ],\n",
|
|
" [1.8, 1. ],\n",
|
|
" [1.8, 1. ],\n",
|
|
" [2.5, 1. ],\n",
|
|
" [2. , 1. ],\n",
|
|
" [1.9, 1. ],\n",
|
|
" [2.1, 1. ],\n",
|
|
" [2. , 1. ],\n",
|
|
" [2.4, 1. ],\n",
|
|
" [2.3, 1. ],\n",
|
|
" [1.8, 1. ],\n",
|
|
" [2.2, 1. ],\n",
|
|
" [2.3, 1. ],\n",
|
|
" [1.5, 1. ],\n",
|
|
" [2.3, 1. ],\n",
|
|
" [2. , 1. ],\n",
|
|
" [2. , 1. ],\n",
|
|
" [1.8, 1. ],\n",
|
|
" [2.1, 1. ],\n",
|
|
" [1.8, 1. ],\n",
|
|
" [1.8, 1. ],\n",
|
|
" [1.8, 1. ],\n",
|
|
" [2.1, 1. ],\n",
|
|
" [1.6, 1. ],\n",
|
|
" [1.9, 1. ],\n",
|
|
" [2. , 1. ],\n",
|
|
" [2.2, 1. ],\n",
|
|
" [1.5, 1. ],\n",
|
|
" [1.4, 1. ],\n",
|
|
" [2.3, 1. ],\n",
|
|
" [2.4, 1. ],\n",
|
|
" [1.8, 1. ],\n",
|
|
" [1.8, 1. ],\n",
|
|
" [2.1, 1. ],\n",
|
|
" [2.4, 1. ],\n",
|
|
" [2.3, 1. ],\n",
|
|
" [1.9, 1. ],\n",
|
|
" [2.3, 1. ],\n",
|
|
" [2.5, 1. ],\n",
|
|
" [2.3, 1. ],\n",
|
|
" [1.9, 1. ],\n",
|
|
" [2. , 1. ],\n",
|
|
" [2.3, 1. ],\n",
|
|
" [1.8, 1. ]])"
|
|
]
|
|
},
|
|
"execution_count": 28,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"X"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 30,
|
|
"id": "42a2d7ba",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"for i in range(epochs):\n",
|
|
" z = X @ theta # (m,1)\n",
|
|
" h = sigmoid(z) # (m,1)\n",
|
|
" grad = (X.T @ (h - y)) / m # (2,1) <-- from your formula\n",
|
|
" theta -= lr * grad\n",
|
|
"\n",
|
|
" #if (i % 0 == 0 or t == epochs-1):\n",
|
|
" # print(f\"{i:4d} loss={log_loss(y, h):.6f} w={theta[0,0]:.6f} b={theta[1,0]:.6f}\")\n",
|
|
"\n",
|
|
"w, b = theta[0,0], theta[1,0]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 33,
|
|
"id": "5a224528",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"np.float64(-5.989972912185251)"
|
|
]
|
|
},
|
|
"execution_count": 33,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"w"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 34,
|
|
"id": "d3dbe4b2",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def predict_proba(x, w, b):\n",
|
|
" x = np.asarray(x, float).reshape(-1)\n",
|
|
" return sigmoid(w*x + b)\n",
|
|
"\n",
|
|
"def predict(x, w, b, thresh=0.5):\n",
|
|
" return (predict_proba(x, w, b) >= thresh).astype(int)\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "cd88d5ee",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
"Learned: w=-5.990, b=4.280, loss=0.1361\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"rng = np.random.default_rng(0)\n",
|
|
"m = 120\n",
|
|
"xNew = np.linspace(-1, 3, m)\n",
|
|
"p = predict_proba(xNew, w, b)\n",
|
|
"print(f\"\\nLearned: w={w:.3f}, b={b:.3f}, loss={log_loss(p.reshape(-1,1), p.reshape(-1,1)):.4f}\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 64,
|
|
"id": "63707def",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[<matplotlib.lines.Line2D at 0x1154ea850>]"
|
|
]
|
|
},
|
|
"execution_count": 64,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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MEJERESWYjBCRERElmIwQkRERJZiMEJERESWYjBCREREloqJGVj1jPWYVpaIiIhig663B1t5JiaCESysBHqpbyIiIoodqMexRk1ML5SHxY9OnDihVni02WwhjdgQ4FRXV8ftAnzxfo28vtgX79fI64t98X6NTWG8PoQYCERGjBihFjGM6ZYRXEBZWVnYnh9vfjz+A0uka+T1xb54v0ZeX+yL92vMDtP1DdQiojGBlYiIiCzFYISIiIgsldDBSGpqqixbtkzdx6t4v0ZeX+yL92vk9cW+eL/G1Ci4vphIYCUiIqL4ldAtI0RERGQ9BiNERERkKQYjREREZCkGI0RERGSphAtGfvrTn8oll1wiGRkZkpubG9BjkOO7dOlSGT58uKSnp8v8+fPlwIEDEo3OnDkjN910k5q4Btf3zW9+U1paWgZ8zOWXX65mtjXevv3tb0u0WLFihZSXl0taWprMnj1btmzZMuD5f/7zn+Xcc89V559//vmyZs0aiWZmru+55577zGeFx0Wrd955R6677jo1+yLKunr16kEfs2HDBpk+fbrK7B8/fry65mhm9hpxfd6fIW61tbUSjZYvXy4XXXSRmgG7uLhYbrjhBtm3b9+gj4uV38Ngri+Wfg9/85vfyAUXXOCZ0GzOnDny6quvRt1nl3DBSFdXl9x4441y1113BfyYn//85/If//Ef8uSTT8oHH3wgmZmZsmDBAuno6JBog0Bk165dsm7dOnn55ZfVH8o777xz0MfdcccdUlNT47nhmqPBqlWrZPHixWrY2fbt22Xq1Knqva+rq/N5/vvvvy+LFi1SQdhHH32k/rDg9sknn0g0Mnt9gD8oxs/q6NGjEq1aW1vVNSHgCkRlZaVce+21csUVV8iOHTvk7rvvlttvv11ee+01iZdr1FDhGT9HVITR6O2335bvfOc7snnzZvV3pbu7W66++mp13f7E0u9hMNcXS7+HZWVl8tBDD8m2bdtk69at8vnPf16uv/56VU9E1WfnTlC/+93v3Dk5OYOe53K53KWlpe5f/OIXnn0NDQ3u1NRU9x//+Ed3NNm9ezeGabs//PBDz75XX33VbbPZ3MePH/f7uHnz5rm///3vu6PRrFmz3N/5znc8206n0z1ixAj38uXLfZ7/1a9+1X3ttdf22zd79mz3t771LXc8XF+g/26jEf5tvvTSSwOe88Mf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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"yJitter = y +np.random.uniform(-0.1, 0.1, size=y.shape)\n",
|
|
"plt.plot(x, yJitter, 'ok', alpha=0.1)\n",
|
|
"plt.plot(xNew,p)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "8f1ffe41",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": ".venv (3.13.5)",
|
|
"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.13.5"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|