diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 99db5f3..0000000 Binary files a/.DS_Store and /dev/null differ diff --git a/_build/html/.buildinfo b/.buildinfo similarity index 82% rename from _build/html/.buildinfo rename to .buildinfo index b54c63c..30dea2c 100644 --- a/_build/html/.buildinfo +++ b/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: df0afcea9a71fa8ec92e486751cfea16 +config: eed45ad414033e2ae1f25edbf69b93db tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml deleted file mode 100644 index a27df3a..0000000 --- a/.github/workflows/gh-pages.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: GitHub Pages - -on: - push: - branches: - - main - -jobs: - deploy: - runs-on: ubuntu-latest - - steps: - - name: Set up Git - uses: actions/checkout@v2 - with: - node-version: 16 - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install jupyter-book - - - name: Build Jupyter Book - run: | - jupyter-book build . - - - name: Deploy to GitHub Pages - uses: peaceiris/actions-gh-pages@v3 - with: - publish_dir: ./_build/html \ No newline at end of file diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 68bc17f..0000000 --- a/.gitignore +++ /dev/null @@ -1,160 +0,0 @@ -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] -*$py.class - -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -share/python-wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.nox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -*.py,cover -.hypothesis/ -.pytest_cache/ -cover/ - -# Translations -*.mo -*.pot - -# Django stuff: -*.log -local_settings.py -db.sqlite3 -db.sqlite3-journal - -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -.pybuilder/ -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# IPython -profile_default/ -ipython_config.py - -# pyenv -# For a library or package, you might want to ignore these files since the code is -# intended to run in multiple environments; otherwise, check them in: -# .python-version - -# pipenv -# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. -# However, in case of collaboration, if having platform-specific dependencies or dependencies -# having no cross-platform support, pipenv may install dependencies that don't work, or not -# install all needed dependencies. -#Pipfile.lock - -# poetry -# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. -# This is especially recommended for binary packages to ensure reproducibility, and is more -# commonly ignored for libraries. -# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control -#poetry.lock - -# pdm -# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. -#pdm.lock -# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it -# in version control. -# https://pdm.fming.dev/#use-with-ide -.pdm.toml - -# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm -__pypackages__/ - -# Celery stuff -celerybeat-schedule -celerybeat.pid - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ -.dmypy.json -dmypy.json - -# Pyre type checker -.pyre/ - -# pytype static type analyzer -.pytype/ - -# Cython debug symbols -cython_debug/ - -# PyCharm -# JetBrains specific template is maintained in a separate JetBrains.gitignore that can -# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore -# and can be added to the global gitignore or merged into this file. For a more nuclear -# option (not recommended) you can uncomment the following to ignore the entire idea folder. -#.idea/ diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/LICENSE b/LICENSE deleted file mode 100644 index ca6fb9d..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2023 大刀四十米 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/_build/html/README.html b/README.html similarity index 100% rename from _build/html/README.html rename to README.html diff --git a/_build/.doctrees/README.doctree b/_build/.doctrees/README.doctree deleted file mode 100644 index 1fc3a73..0000000 Binary files a/_build/.doctrees/README.doctree and /dev/null differ diff --git "a/_build/.doctrees/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.doctree" "b/_build/.doctrees/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.doctree" deleted file mode 100644 index 51c48e1..0000000 Binary files "a/_build/.doctrees/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.doctree" and /dev/null differ diff --git "a/_build/.doctrees/docs/\346\234\272\345\231\250\345\255\246\344\271\240\344\273\273\345\212\241.doctree" "b/_build/.doctrees/docs/\346\234\272\345\231\250\345\255\246\344\271\240\344\273\273\345\212\241.doctree" deleted file mode 100644 index 37b050e..0000000 Binary files "a/_build/.doctrees/docs/\346\234\272\345\231\250\345\255\246\344\271\240\344\273\273\345\212\241.doctree" and /dev/null differ diff --git a/_build/.doctrees/environment.pickle b/_build/.doctrees/environment.pickle deleted file mode 100644 index ec41f2b..0000000 Binary files a/_build/.doctrees/environment.pickle and /dev/null differ diff --git a/_build/html/_sources/README.md b/_build/html/_sources/README.md deleted file mode 100644 index 936acfb..0000000 --- a/_build/html/_sources/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# introduction-to-machine-learning -机器学习入门 diff --git a/_build/jupyter_execute/d6218a782e7e9562e15dd0432ee769a8e83fef667e4a8a51093c860abe49badb.png b/_build/jupyter_execute/d6218a782e7e9562e15dd0432ee769a8e83fef667e4a8a51093c860abe49badb.png deleted file mode 100644 index e9910d0..0000000 Binary files a/_build/jupyter_execute/d6218a782e7e9562e15dd0432ee769a8e83fef667e4a8a51093c860abe49badb.png and /dev/null differ diff --git "a/_build/jupyter_execute/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.ipynb" "b/_build/jupyter_execute/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.ipynb" deleted file mode 100644 index fdc304f..0000000 --- "a/_build/jupyter_execute/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.ipynb" +++ /dev/null @@ -1,290 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "ffe6cf12-648d-4b05-8ca6-9587941643ef", - "metadata": { - "tags": [] - }, - "source": [ - "## 最小二乘法\n", - "\n", - "普通最小二乘法(ordinary least squares)[1][2]是一种数学优化方法,又称最小平方法。\n", - "\n", - "### 逸闻趣事\n", - "\n", - "1801年,意大利天文学家朱赛普·皮亚齐发现了第一颗小行星谷神星。经过40天的跟踪观测后,由于谷神星运行至太阳背后,使得皮亚齐失去了谷神星的位置。随后全世界的科学家利用皮亚齐的观测数据开始寻找谷神星,但是根据大多数人计算的结果来寻找谷神星都没有结果。只有时年24岁的高斯(1777-1855)所计算的谷神星的轨道,被奥地利天文学家海因里希·奥尔伯斯的观测所证实,使天文界从此可以预测到谷神星的精确位置。同样的方法也产生了哈雷彗星等很多天文学成果。高斯使用的方法就是最小二乘法,该方法发表于1809年他的著作《天体运动论》中。其实早在1805,法国数学家勒让德(Legendre,Adrien-Marie)就在其著作《计算慧星轨道的新方法》中提出了“最小二乘法”。\n", - "\n", - "勒让德(1752~1833)常被人戏称为“过渡性科学家”[3]。因为他的成就很快被别人推翻或者被更有天赋的人超越[4]。比如,最早由欧拉和勒让德提出的二次互反律,勒让德在1798年整理的《数论讲义》中给出了证明,但很快就被高斯找到了漏洞并否定了,之后又累计给出了至少7种不同证法。这让勒让德很受伤,而且自己也无力反驳。更致命的是,随着高斯经典巨著《算术探究》在1801年的出版,勒让德的《数论讲义》被取代,甚至其他的数论著作也被遗忘了。“最小二乘法”最早由勒让德发表于1805年的论文中,但是这次小高斯又出来让勒让德“受伤了”。高斯发文说他早在1795年就发现了这个方法,并在1801年结合此方法计算出了谷神星的运动轨迹。勒让德这一次真有些生气了,怎么什么都是你先发现的?还有完没完了。两人为了优先权争论了好几年。后来高斯将最小二乘法与概率论相结合提出了正态分布,由于这个概念的提出,高斯又走在了勒让德前面。\n", - "\n", - "18世纪后半叶到20世纪初是数学史上的超英雄时代,此时的欧洲以法国为代表出现了大批的顶级数学家。我们来看看这些熟悉的名字:柯西(Cauchy,1789-1857),拉格朗日(Lagrange,1736~1813),拉普拉斯(Laplace,1749-1827)),蒙日( Monge,1746~1818),泊松( Poisson ,1781~1840)),傅里叶(Fourier,1768-1830),这些数学家都为法国的政治和科学做了巨大贡献,很多人甚至于是师徒或朋友的关系。勒让德在这个群星璀璨的时代,他的光芒被掩盖了,如果早生50年或者晚生50年都将是当时数学界最耀眼的明星。但实变函数之父勒让德在数学、物理、天文等多方面的成就必定是名垂青史的。\n", - "\n", - "\n", - "![image.png](../images/people/勒让德-高斯.png)\n", - "\n", - "\n", - "### 最小二乘法\n", - "从小学二年测量数学课本边长开始,数学老师就告诉我们要多次测量取平均值,具体操作就是将几次测量结果加起来除以测量次数[2]。\n", - "\n", - "![image.png](../images/多次测量取平均.png)\n", - "\n", - "$$\\bar{y} = \\frac{y_1 + y_2 + \\cdots + y_6}{6} = \\frac{\\sum_{i=1}^{6}y_i}{6} = y$$\n", - "\n", - "这么做基于如下重要事实与假设:\n", - "\n", - "* 真实值是无法得到的;\n", - "\n", - "* 单次的测量误差是随机的; \n", - "\n", - "为什么不用其他统计值(几何平均、调和平均)代表平均效果?\n", - "1. 既然测量的误差是随机的,那么误差应该围绕真实值上下随机波动。\n", - "2. 通常会假设观测误差符合正态分布,所以算术平均值代表平均效果。\n", - "\n", - "为什么不用绝对误差而要用平方误差?即:$|y - y_i| \\rightarrow (y - y_i)^2$\n", - "1. 强调大误差:平方误差的平均值对较大的误差更敏感。\n", - "2. 解析性质:使用平方误差可以更方便地进行分析和求导,从而找到函数值最小的极值点。\n", - "\n", - "假设某次测量有n个观测(测量)值,那么测量值与真值之间的误差平方和$R_n$为: \n", - "\n", - "$$R_n = \\sum_{i=1}^{n}(y - y_i)^2$$\n", - "\n", - "注意此时只有真值y是不知道的。我们知道yi围绕y值随机地上下波动,问题就变成了如何根据已有数据确定y的值。" - ] - }, - { - "cell_type": "markdown", - "id": "084acf28-b372-4f1d-a698-201411507c6b", - "metadata": {}, - "source": [ - "### 最小二乘法优化演示\n", - "\n", - "举例说明[2]:如下图所示,黄色数据为观测值,其算数平均值为5;红色横线为真值,因为真值不确定,所以让真值在数据间波动以寻找规律,发现当真值等于算数平均值时,误差平方和最小,以此作为真值。这是自洽的,也蛮符合直觉。因为如果误差是随机的,误差应该围绕着真值,真值应该使得误差平方和最小。" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "14a997e2-36cc-4d29-bfa5-3dcb175398df", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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l770pfT+EAAAACBHaa4DhBR8+MMfPv79WWedNerr9+/fr7a2NjU2Nqq3t/f44+eee+4J2+rq6tLq1aslSRdccIHjHgMAAADxIABKWVdXl0455RTt37//eMCya9cuXX311XrmmWd0zz336Nlnn6373gsuuEAf+tCHTnjszjvvHPPvDiHohhtu0Nlnn61LLrlEf/u3f3vCtgdu6/Of/7wk6V3vepd+5Vd+Zcy/AwAAACgSAqCUtbS06O1vf7u+973v6dprr5UkfexjH9Mf//Efa9q0aVq3bp2++c1v1n3vVVddNSQAOu200yRJl112mT7zmc+otbV12N9955136tvf/ra++93vjhg4hRCOB0Af+chHkvx5AAAAQKEQAGWgtbX1eAD0yCOPaPfu3fra174mqX8uzlhMmzZNixYt0jnnnKNHH31U3/jGN/Qbv/Eb2r17t84888whr9+1a5c+/vGP61Of+pRmz5494rY3btyoH/7whzrzzDP127/920n/PAAAAKAwCIAy0Nraqn/6p3+SJK1cuVL/5b/8F02ePFmS9IUvfGFMKXDr16+XmUmSjhw5ogsvvFDPPfecHn74Yf3O7/zOkPd+9atf1ZEjR/TNb35T3/rWt/Tkk08e386UKVP06U9/+vhrj40OtbW1Hd8vAAAAoIwIgDLQ2tqqP/uzP9NXv/pVHTp06ISAZSwpcN3d3Tp48KDOPvvsIa9paGiQJP34xz9Wd3e3zjjjDJ122mkKISiEoH/4h3844fU/+tGP9Oijjx7/+amnntI3vvENNTc365ZbbvH4cwEAAIBoUQY7A5deeql++tOf6qMf/ag+85nPaNKk//9j37x58/FgZfDXsfS4AwcO6C1veYve97736ZZbblFra6uee+45nXHGGXrPe94jSVqxYoVmzZqle+65R5L0iU984oRt3XDDDZL6q8gNTLs7NvqzfPlynX766el/GAAAAECOCIAy0NTUpEsuuUTnn3++3ve+9yV+/xve8AatWLHieNW4n/3sZ1q6dKn++Z//WTNmzBj3fr300ku6//77Jen4+kAAAABAmVkIIe99SGTu3Llh+/btee9GIkeOHNEFF1ygL3/5y7r88svz3h0AAACg1MxsRwhhbr3nGAHKwCc/+UldeeWVBD8AAABAzgiAUvS9731Pp5xyih555JHj6+wAAAAAyA9V4FJ02WWX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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from IPython.display import clear_output, display\n", - "import time\n", - "\n", - "np.random.seed(0)\n", - "n = 40\n", - "y_real = 5\n", - "frame = 50\n", - "\n", - "x = np.arange(1, n+1)\n", - "# 随机偏移\n", - "bias = 1 - 2 * np.random.rand(n)\n", - "# 数据点\n", - "y_test = y_real + bias\n", - "\n", - "# 创建图像和坐标轴对象\n", - "fig, ax = plt.subplots(figsize=(14, 8))\n", - "ax.set_facecolor('w')\n", - "\n", - "# 拟合的曲线\n", - "y_appr = y_real - 1\n", - "for i in range(frame):\n", - " ax.clear()\n", - " \n", - " # 绘制虚线\n", - " for j in range(n):\n", - " ax.plot([x[j], x[j]], [y_test[j], y_appr], linestyle='--', linewidth=0.5, color='gray')\n", - " \n", - " # 绘制散点图\n", - " scatter = ax.scatter(x, y_test, color='b', facecolors='yellow', s=200)\n", - " \n", - " # 绘制回归线\n", - " ax.axhline(y=y_appr, color='r')\n", - "\n", - " # 计算误差\n", - " Rn = np.sum((y_appr - y_test)**2)\n", - " \n", - " # 设置坐标轴范围和标签\n", - " ax.set_xlim(0, n+1)\n", - " ax.set_ylim(y_real-2, y_real+1.5)\n", - " ax.set_xlabel('x')\n", - " ax.set_ylabel('y')\n", - " \n", - " # 设置标题\n", - " ax.set_title('orinary least squares'.format(Rn, y_appr))\n", - " ax.text(0.05, 0.1, '$R_n$={:.2f} \\n $y$={:.2f}'.format(Rn, y_appr), transform=ax.transAxes,\n", - " fontsize=12, fontweight='bold', color='black')\n", - " \n", - " # 清除上一帧的图像\n", - " clear_output(wait=True)\n", - " \n", - " # 显示当前帧的图像\n", - " display(fig)\n", - " \n", - " # 暂停一段时间\n", - " time.sleep(0.1)\n", - " \n", - " # 更新预测值\n", - " y_appr += 1.5/frame\n", - "\n", - "plt.close()" - ] - }, - { - "cell_type": "markdown", - "id": "0a7856da-d03d-4b0b-ad8b-482d639ca36f", - "metadata": {}, - "source": [ - "### 论证:最小二乘法有极小值\n", - "对于$R_n$求:\n", - "\n", - "* 一阶导数\n", - "$$\\frac{{dR_n}}{{dy}} = \\frac{{d}}{{dy}} \\sum_{i=1}^{n}(y - y_i)^2$$\n", - "\n", - "使用链式法则,我们可以将求和符号中的每一项分别求导,然后将它们加起来:\n", - "\n", - "$$\\frac{{dR_n}}{{dy}} = 2 \\sum_{i=1}^{n}(y - y_i)$$\n", - "\n", - "* 二阶导数\n", - "\n", - "$$\\frac{{d^2R_n}}{{dy^2}} = \\frac{{d}}{{dy}} \\left(2 \\sum_{i=1}^{n}(y - y_i) \\right)$$\n", - "\n", - "再次应用链式法则,我们可以得到:\n", - "\n", - "$$\\frac{{d^2R_n}}{{dy^2}} = 2 \\sum_{i=1}^{n} 1 = 2n$$\n", - "\n", - "1. 通过一阶导数为0的点来寻找Rn的极小值点(斜率为0,无变化)。\n", - "2. 而通过二阶导数的正负性来确认极小值点的性质,即判断曲线在该点处是否向上弯曲(正-斜率变大,上弯曲;负-斜率变小,下弯曲)。\n", - "\n", - "### 论证:极小值可以求得真实值y,且就是样本数据的算术平均值\n", - "我们来解一阶导数为0的方程,以找到使得Rn取得极小值的y的值。\n", - "\n", - "首先,我们设置一阶导数为0:\n", - "\n", - "$$\\frac{{dR_n}}{{dy}} = 2 \\sum_{i=1}^{n}(y - y_i) = 0$$\n", - "\n", - "将等式两边除以2:\n", - "\n", - "$$\\sum_{i=1}^{n}(y - y_i) = 0$$\n", - "\n", - "展开求和符号:\n", - "\n", - "$$ny - \\sum_{i=1}^{n}y_i = 0$$\n", - "\n", - "将等式重新排列:\n", - "\n", - "$$ny = \\sum_{i=1}^{n}y_i$$\n", - "\n", - "最后,通过除以n,我们可以得到y的值:\n", - "\n", - "$$y = \\frac{1}{n}\\sum_{i=1}^{n}y_i$$\n", - "\n", - "这个方程表示了使得Rn取得极小值的y的值。具体来说,y的值等于y_i的平均值。\n", - "\n", - "\n", - "也就是说算术平均数可以让误差(欧几里得范数意义下)最小。\n", - "\n", - "算数平均值只是最小二乘法应用的特例,可以看作是一组数据的0阶拟合,多项式拟合以及函数逼近就是更广泛一点的应用了。" - ] - }, - { - "cell_type": "markdown", - "id": "88e3eb55-07ad-456e-85c8-67ea775c245c", - "metadata": {}, - "source": [ - "### 扩展:概率解释[5][6]\n", - "\n", - "* 极大似然估计[7]\n", - "\n", - "根据极大似然估计的思想,我们是基于观测到的样本数据信息,寻找最有可能产生这些观测数据的参数值。具体而言,我们希望找到使得样本数据出现的概率最大的参数值。也就是说,通过调整参数值来使得该概率分布与观测数据最匹配。\n", - "\n", - "为了实现这一目标,我们构建了一个关于参数的似然函数(likelihood function),它表示在给定参数值下观测数据出现的概率。然后,我们通过最大化似然函数来求解最有可能的参数值。以一开始的书本边长测量为例[2],设测量误差为随机变量$\\epsilon_i = |y_i - y|$,服从未知的概率分布$p(\\epsilon)$,进而得到似然函数:\n", - "\n", - "$$L(y) = p(\\epsilon_1) p(\\epsilon_2) \\cdots p(\\epsilon_n) = p(y_1 - y) p(y_2 - y) \\cdots p(y_n - y) = \\prod_{i=1}^{n} p(\\epsilon_i)$$。 \n", - "\n", - "求解过程中可以通过找到驻值点来得到极值。驻值点(stationary point)是函数在某个点上的导数为零或不存在的点。也就是说,在驻值点处,函数的导数等于零或者函数在该点的导数不存在。驻值点包括极小值点、极大值点和拐点。在极小值点和极大值点,函数在该点的导数为零。而在拐点,函数在该点的导数不存在,即函数的曲线在该点处发生弯曲。\n", - "\n", - "$$ \\frac{d}{dy} L(y) = 0$$\n", - "\n", - "如果最小二乘是对的,那么:\n", - "\n", - "$$\\frac{d}{dy} L(y) |_{y=\\bar{y}} = 0$$\n", - "\n", - "* 推断的过程\n", - "\n", - "通过极大似然估计的思想来确定未知的概率分布$p(\\epsilon)$,这是一种统计推断问题。\n", - "\n", - "在进行推断时,我们通常需要假设概率分布的形式或者给定某些假设条件。对于未知的概率分布$p(\\epsilon)$,我们可以尝试假设它属于某个参数化的分布族,例如正态分布、指数分布等。\n", - "\n", - "一种常见的方法是使用最大似然估计来估计参数化分布中的参数值,从而确定未知的概率分布$p(\\epsilon)$。具体步骤如下:\n", - "\n", - "1. 假设概率分布$p(\\epsilon)$属于一个已知的参数化分布族,并假设参数为$\\theta$。\n", - "2. 构建似然函数$L(\\theta)$,它表示观测数据出现的概率关于参数$\\theta$的函数。在这里,观测数据是样本误差$\\epsilon_i$。\n", - "3. 对似然函数$L(\\theta)$取对数并求负,得到负对数似然函数$-\\log L(\\theta)$。\n", - "4. 最大化负对数似然函数$-\\log L(\\theta)$,即通过对参数$\\theta$进行优化来找到使得观测数据出现概率最大化的参数值。\n", - "\n", - "设$\\epsilon$为测量误差,由于$\\epsilon_i$是独立同分布的,那么根据中心极限定理,误差的分布就应该是正态分布,我们假设$\\epsilon$服从正态分布$N(\\mu, \\sigma^2)$,其中$\\mu$是均值,$\\sigma$是标准差。根据极大似然估计的思想,我们希望找到使得观测数据出现的概率最大化的$\\mu$和$\\sigma$。我们可以将似然函数写成:\n", - "\n", - "$$L(\\mu, \\sigma) = \\prod_{i=1}^{n} p(\\epsilon_i) = \\prod_{i=1}^{n} \\frac{1}{\\sqrt{2\\pi}\\sigma}e^{-\\frac{(\\epsilon_i - \\mu)^2}{2\\sigma^2}}$$\n", - "\n", - "为了最大化似然函数,我们可以取对数并将问题转化为最小化负对数似然函数。即求解以下方程:\n", - "\n", - "$$-\\log L(\\mu, \\sigma) = -\\sum_{i=1}^{n}\\left(\\log(\\frac{1}{\\sqrt{2\\pi}\\sigma}) + \\frac{(\\epsilon_i - \\mu)^2}{2\\sigma^2}\\right)$$\n", - "\n", - "我们可以通过对$\\mu$和$\\sigma$分别求偏导数并令导数等于零,来求解最大似然估计的参数。对于正态分布,最大似然估计将给出均值$\\mu$和标准差$\\sigma$的估计值。\n", - "\n", - "最大似然估计会等价于最小化残差平方和,因为最大化观测数据的联合概率就等价于最小化负对数似然函数,而负对数似然函数与残差平方和成正比。" - ] - }, - { - "cell_type": "markdown", - "id": "3594eaab-9ea4-406b-b043-d4c313bc375a", - "metadata": {}, - "source": [ - "## 参考文献\n", - "\n", - "* [1] 最小二乘法百度百科 https://baike.baidu.com/item/%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E6%B3%95/2522346?fr=ge_ala\n", - "* [2] 多方位理解最小二乘法|从均值到正态分布 https://www.bilibili.com/read/cv11596191/\n", - "* [3] 勒让德:一个生在英雄时代,又被年轻高斯气得发狂的数学家 https://zhuanlan.zhihu.com/p/147641642\n", - "* [4] 勒让德简介 https://baike.baidu.com/item/%E9%98%BF%E5%BE%B7%E5%88%A9%E6%98%82%C2%B7%E7%8E%9B%E5%88%A9%C2%B7%E5%9F%83%C2%B7%E5%8B%92%E8%AE%A9%E5%BE%B7/8791520\n", - "* [5] 最小二乘法的概率解释 https://blog.51cto.com/u_16146153/6387070\n", - "* [6] 最小二乘法的概率解释-最大似然方法 https://www.cnblogs.com/shibalang/p/4974583.html\n", - "* [7] 一文了解最大似然估计(Maximum Likelihood Estimation) https://mp.weixin.qq.com/s?__biz=MzI1MjQ2OTQ3Ng==&mid=2247604343&idx=1&sn=8659045f8c4279710a205da9303af5e8&chksm=e9e051fcde97d8ea1dc8cc716325c4e7c8ce7da52af653e8462039f51caa7ad7703805d18626&scene=27" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git "a/_build/jupyter_execute/docs/\346\234\272\345\231\250\345\255\246\344\271\240\344\273\273\345\212\241.ipynb" "b/_build/jupyter_execute/docs/\346\234\272\345\231\250\345\255\246\344\271\240\344\273\273\345\212\241.ipynb" deleted file mode 100644 index 61e8140..0000000 --- "a/_build/jupyter_execute/docs/\346\234\272\345\231\250\345\255\246\344\271\240\344\273\273\345\212\241.ipynb" +++ /dev/null @@ -1,97 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "458055cd-d396-49da-9069-4d64ed4638e8", - "metadata": {}, - "source": [ - "机器学习的任务分为一下几种类别\n", - "\n", - "## 分类\n", - "\n", - "确定对象所属的类别。\n", - "\n", - "* 应用:垃圾邮件检测,图像识别。\n", - "* 算法:梯度提升、最近邻、随机森林、逻辑回归等等。\n", - "\n", - "![分类](../images/ml-task/sphx_glr_plot_classifier_comparison_001_carousel.png)\n", - "\n", - "\n", - "## 回归\n", - "\n", - "预测与对象相关的连续值的属性。\n", - "\n", - "* 应用:药物反应、股票价格。\n", - "* 算法:梯度提升、最近邻、随机森林、岭回归等等。\n", - "\n", - "![分类](../images/ml-task/sphx_glr_plot_adaboost_regression_thumb.png)\n", - "\n", - "\n", - "## 聚类\n", - "\n", - "将相似对象自动分组到集合中。\n", - "\n", - "* 应用:用户划分、实验输出分组。\n", - "* 算法:k-means、DBSCAN、层次聚类等等。\n", - "\n", - "![分类](../images/ml-task/sphx_glr_plot_kmeans_digits_thumb.png)\n", - "\n", - "\n", - "\n", - "## 降维\n", - "\n", - "减少要考虑的随机变量的数量。\n", - "\n", - "* 应用:可视化、提高效率。\n", - "* 算法:PCA、特征选择、非负矩阵分解等等。\n", - "\n", - "\n", - "![分类](../images/ml-task/sphx_glr_plot_pca_iris_thumb.png)\n", - "\n", - "\n", - "\n", - "## 模型选择\n", - "\n", - "比较、验证和选择参数以及模型。\n", - "\n", - "* 应用:垃圾邮件检测,图像识别。\n", - "* 算法:网格搜索、交叉检验等等。\n", - "\n", - "![分类](../images/ml-task/sphx_glr_plot_multi_metric_evaluation_thumb.png)\n", - "\n", - "\n", - "\n", - "## 预处理\n", - "\n", - "确定对象所属的类别。\n", - "\n", - "* 应用:转换输入数据如文本,便于机器学习算法使用。\n", - "* 算法:预处理、特征提取等等。\n", - "\n", - "![分类](../images/ml-task/sphx_glr_plot_discretization_strategies_thumb.png)\n", - "\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file diff --git a/_config.yml b/_config.yml deleted file mode 100644 index 5d71473..0000000 --- a/_config.yml +++ /dev/null @@ -1,32 +0,0 @@ -# Book settings -# Learn more at https://jupyterbook.org/customize/config.html - -title: 机器学习入门 -author: tianxuzhang -logo: logo.png - -# Force re-execution of notebooks on each build. -# See https://jupyterbook.org/content/execute.html -execute: - execute_notebooks: force - -# Define the name of the latex output file for PDF builds -latex: - latex_documents: - targetname: book.tex - -# Add a bibtex file so that we can create citations -bibtex_bibfiles: - - references.bib - -# Information about where the book exists on the web -repository: - url: https://github.com/tianxuzhang/introduction-to-machine-learning # Online location of your book - path_to_book: docs # Optional path to your book, relative to the repository root - branch: main # Which branch of the repository should be used when creating links (optional) - -# Add GitHub buttons to your book -# See https://jupyterbook.org/customize/config.html#add-a-link-to-your-repository -html: - use_issues_button: true - use_repository_button: true diff --git a/_build/html/_images/d6218a782e7e9562e15dd0432ee769a8e83fef667e4a8a51093c860abe49badb.png b/_images/d6218a782e7e9562e15dd0432ee769a8e83fef667e4a8a51093c860abe49badb.png similarity index 100% rename from _build/html/_images/d6218a782e7e9562e15dd0432ee769a8e83fef667e4a8a51093c860abe49badb.png rename to _images/d6218a782e7e9562e15dd0432ee769a8e83fef667e4a8a51093c860abe49badb.png diff --git a/_build/html/_images/sphx_glr_plot_adaboost_regression_thumb.png b/_images/sphx_glr_plot_adaboost_regression_thumb.png similarity index 100% rename from _build/html/_images/sphx_glr_plot_adaboost_regression_thumb.png rename to _images/sphx_glr_plot_adaboost_regression_thumb.png diff --git a/_build/html/_images/sphx_glr_plot_classifier_comparison_001_carousel.png b/_images/sphx_glr_plot_classifier_comparison_001_carousel.png similarity index 100% rename from _build/html/_images/sphx_glr_plot_classifier_comparison_001_carousel.png rename to _images/sphx_glr_plot_classifier_comparison_001_carousel.png diff --git a/_build/html/_images/sphx_glr_plot_discretization_strategies_thumb.png b/_images/sphx_glr_plot_discretization_strategies_thumb.png similarity index 100% rename from _build/html/_images/sphx_glr_plot_discretization_strategies_thumb.png rename to _images/sphx_glr_plot_discretization_strategies_thumb.png diff --git a/_build/html/_images/sphx_glr_plot_kmeans_digits_thumb.png b/_images/sphx_glr_plot_kmeans_digits_thumb.png similarity index 100% rename from _build/html/_images/sphx_glr_plot_kmeans_digits_thumb.png rename to _images/sphx_glr_plot_kmeans_digits_thumb.png diff --git a/_build/html/_images/sphx_glr_plot_multi_metric_evaluation_thumb.png b/_images/sphx_glr_plot_multi_metric_evaluation_thumb.png similarity index 100% rename from _build/html/_images/sphx_glr_plot_multi_metric_evaluation_thumb.png rename to _images/sphx_glr_plot_multi_metric_evaluation_thumb.png diff --git a/_build/html/_images/sphx_glr_plot_pca_iris_thumb.png b/_images/sphx_glr_plot_pca_iris_thumb.png similarity index 100% rename from _build/html/_images/sphx_glr_plot_pca_iris_thumb.png rename to _images/sphx_glr_plot_pca_iris_thumb.png diff --git a/README.md b/_sources/README.md similarity index 100% rename from README.md rename to _sources/README.md diff --git "a/_build/html/_sources/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.ipynb" "b/_sources/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.ipynb" similarity index 100% rename from "_build/html/_sources/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.ipynb" rename to "_sources/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.ipynb" diff --git "a/_build/html/_sources/docs/\346\234\272\345\231\250\345\255\246\344\271\240\344\273\273\345\212\241.ipynb" "b/_sources/docs/\346\234\272\345\231\250\345\255\246\344\271\240\344\273\273\345\212\241.ipynb" similarity index 100% rename from "_build/html/_sources/docs/\346\234\272\345\231\250\345\255\246\344\271\240\344\273\273\345\212\241.ipynb" rename to "_sources/docs/\346\234\272\345\231\250\345\255\246\344\271\240\344\273\273\345\212\241.ipynb" diff --git a/_build/html/_sphinx_design_static/design-style.4045f2051d55cab465a707391d5b2007.min.css b/_sphinx_design_static/design-style.4045f2051d55cab465a707391d5b2007.min.css similarity index 100% rename from _build/html/_sphinx_design_static/design-style.4045f2051d55cab465a707391d5b2007.min.css rename to _sphinx_design_static/design-style.4045f2051d55cab465a707391d5b2007.min.css diff --git a/_build/html/_sphinx_design_static/design-tabs.js b/_sphinx_design_static/design-tabs.js similarity index 100% rename from _build/html/_sphinx_design_static/design-tabs.js rename to _sphinx_design_static/design-tabs.js diff --git a/_build/html/_static/_sphinx_javascript_frameworks_compat.js b/_static/_sphinx_javascript_frameworks_compat.js similarity index 100% rename from _build/html/_static/_sphinx_javascript_frameworks_compat.js rename to _static/_sphinx_javascript_frameworks_compat.js diff --git a/_build/html/_static/basic.css b/_static/basic.css similarity index 100% rename from _build/html/_static/basic.css rename to _static/basic.css diff --git a/_build/html/_static/check-solid.svg b/_static/check-solid.svg similarity index 100% rename from _build/html/_static/check-solid.svg rename to _static/check-solid.svg diff --git a/_build/html/_static/clipboard.min.js b/_static/clipboard.min.js similarity index 100% rename from _build/html/_static/clipboard.min.js rename to _static/clipboard.min.js diff --git a/_build/html/_static/copy-button.svg b/_static/copy-button.svg similarity index 100% rename from _build/html/_static/copy-button.svg rename to _static/copy-button.svg diff --git a/_build/html/_static/copybutton.css b/_static/copybutton.css similarity index 100% rename from _build/html/_static/copybutton.css rename to _static/copybutton.css diff --git a/_build/html/_static/copybutton.js b/_static/copybutton.js similarity index 100% rename from _build/html/_static/copybutton.js rename to _static/copybutton.js diff --git a/_build/html/_static/copybutton_funcs.js b/_static/copybutton_funcs.js similarity index 100% rename from _build/html/_static/copybutton_funcs.js rename to _static/copybutton_funcs.js diff --git a/_build/html/_static/design-style.4045f2051d55cab465a707391d5b2007.min.css b/_static/design-style.4045f2051d55cab465a707391d5b2007.min.css similarity index 100% rename from _build/html/_static/design-style.4045f2051d55cab465a707391d5b2007.min.css rename to _static/design-style.4045f2051d55cab465a707391d5b2007.min.css diff --git a/_build/html/_static/design-tabs.js b/_static/design-tabs.js similarity index 100% rename from _build/html/_static/design-tabs.js rename to _static/design-tabs.js diff --git a/_build/html/_static/doctools.js b/_static/doctools.js similarity index 100% rename from _build/html/_static/doctools.js rename to _static/doctools.js diff --git a/_build/html/_static/documentation_options.js b/_static/documentation_options.js similarity index 100% rename from _build/html/_static/documentation_options.js rename to _static/documentation_options.js diff --git a/_build/html/_static/file.png b/_static/file.png similarity index 100% rename from _build/html/_static/file.png rename to _static/file.png diff --git a/_build/html/_static/images/logo_binder.svg b/_static/images/logo_binder.svg similarity index 100% rename from _build/html/_static/images/logo_binder.svg rename to _static/images/logo_binder.svg diff --git a/_build/html/_static/images/logo_colab.png b/_static/images/logo_colab.png similarity index 100% rename from _build/html/_static/images/logo_colab.png rename to _static/images/logo_colab.png diff --git a/_build/html/_static/images/logo_deepnote.svg b/_static/images/logo_deepnote.svg similarity index 100% rename from _build/html/_static/images/logo_deepnote.svg rename to _static/images/logo_deepnote.svg diff --git a/_build/html/_static/images/logo_jupyterhub.svg b/_static/images/logo_jupyterhub.svg similarity index 100% rename from _build/html/_static/images/logo_jupyterhub.svg rename to _static/images/logo_jupyterhub.svg diff --git a/_build/html/_static/jquery-3.6.0.js b/_static/jquery-3.6.0.js similarity index 100% rename from _build/html/_static/jquery-3.6.0.js rename to _static/jquery-3.6.0.js diff --git a/_build/html/_static/jquery.js b/_static/jquery.js similarity index 100% rename from _build/html/_static/jquery.js rename to _static/jquery.js diff --git a/_build/html/_static/language_data.js b/_static/language_data.js similarity index 100% rename from _build/html/_static/language_data.js rename to _static/language_data.js diff --git a/_static/locales/ar/LC_MESSAGES/booktheme.mo b/_static/locales/ar/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..15541a6 Binary files /dev/null and b/_static/locales/ar/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/ar/LC_MESSAGES/booktheme.po b/_static/locales/ar/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/ar/LC_MESSAGES/booktheme.po rename to _static/locales/ar/LC_MESSAGES/booktheme.po diff --git a/_static/locales/bg/LC_MESSAGES/booktheme.mo b/_static/locales/bg/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..da95120 Binary files /dev/null and b/_static/locales/bg/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/bg/LC_MESSAGES/booktheme.po b/_static/locales/bg/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/bg/LC_MESSAGES/booktheme.po rename to _static/locales/bg/LC_MESSAGES/booktheme.po diff --git a/_static/locales/bn/LC_MESSAGES/booktheme.mo b/_static/locales/bn/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..6b96639 Binary files /dev/null and b/_static/locales/bn/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/bn/LC_MESSAGES/booktheme.po b/_static/locales/bn/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/bn/LC_MESSAGES/booktheme.po rename to _static/locales/bn/LC_MESSAGES/booktheme.po diff --git a/_static/locales/ca/LC_MESSAGES/booktheme.mo b/_static/locales/ca/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..a4dd30e Binary files /dev/null and b/_static/locales/ca/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/ca/LC_MESSAGES/booktheme.po b/_static/locales/ca/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/ca/LC_MESSAGES/booktheme.po rename to _static/locales/ca/LC_MESSAGES/booktheme.po diff --git a/_static/locales/cs/LC_MESSAGES/booktheme.mo b/_static/locales/cs/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..c39e01a Binary files /dev/null and b/_static/locales/cs/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/cs/LC_MESSAGES/booktheme.po b/_static/locales/cs/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/cs/LC_MESSAGES/booktheme.po rename to _static/locales/cs/LC_MESSAGES/booktheme.po diff --git a/_static/locales/da/LC_MESSAGES/booktheme.mo b/_static/locales/da/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..f43157d Binary files /dev/null and b/_static/locales/da/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/da/LC_MESSAGES/booktheme.po b/_static/locales/da/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/da/LC_MESSAGES/booktheme.po rename to _static/locales/da/LC_MESSAGES/booktheme.po diff --git a/_static/locales/de/LC_MESSAGES/booktheme.mo b/_static/locales/de/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..648b565 Binary files /dev/null and b/_static/locales/de/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/de/LC_MESSAGES/booktheme.po b/_static/locales/de/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/de/LC_MESSAGES/booktheme.po rename to _static/locales/de/LC_MESSAGES/booktheme.po diff --git a/_static/locales/el/LC_MESSAGES/booktheme.mo b/_static/locales/el/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..fca6e93 Binary files /dev/null and b/_static/locales/el/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/el/LC_MESSAGES/booktheme.po b/_static/locales/el/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/el/LC_MESSAGES/booktheme.po rename to _static/locales/el/LC_MESSAGES/booktheme.po diff --git a/_static/locales/eo/LC_MESSAGES/booktheme.mo b/_static/locales/eo/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..d1072bb Binary files /dev/null and b/_static/locales/eo/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/eo/LC_MESSAGES/booktheme.po b/_static/locales/eo/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/eo/LC_MESSAGES/booktheme.po rename to _static/locales/eo/LC_MESSAGES/booktheme.po diff --git a/_static/locales/es/LC_MESSAGES/booktheme.mo b/_static/locales/es/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..ba2ee4d Binary files /dev/null and b/_static/locales/es/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/es/LC_MESSAGES/booktheme.po b/_static/locales/es/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/es/LC_MESSAGES/booktheme.po rename to _static/locales/es/LC_MESSAGES/booktheme.po diff --git a/_static/locales/et/LC_MESSAGES/booktheme.mo b/_static/locales/et/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..983b823 Binary files /dev/null and b/_static/locales/et/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/et/LC_MESSAGES/booktheme.po b/_static/locales/et/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/et/LC_MESSAGES/booktheme.po rename to _static/locales/et/LC_MESSAGES/booktheme.po diff --git a/_static/locales/fi/LC_MESSAGES/booktheme.mo b/_static/locales/fi/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..d8ac054 Binary files /dev/null and b/_static/locales/fi/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/fi/LC_MESSAGES/booktheme.po b/_static/locales/fi/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/fi/LC_MESSAGES/booktheme.po rename to _static/locales/fi/LC_MESSAGES/booktheme.po diff --git a/_static/locales/fr/LC_MESSAGES/booktheme.mo b/_static/locales/fr/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..f663d39 Binary files /dev/null and b/_static/locales/fr/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/fr/LC_MESSAGES/booktheme.po b/_static/locales/fr/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/fr/LC_MESSAGES/booktheme.po rename to _static/locales/fr/LC_MESSAGES/booktheme.po diff --git a/_static/locales/hr/LC_MESSAGES/booktheme.mo b/_static/locales/hr/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..eca4a1a Binary files /dev/null and b/_static/locales/hr/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/hr/LC_MESSAGES/booktheme.po b/_static/locales/hr/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/hr/LC_MESSAGES/booktheme.po rename to _static/locales/hr/LC_MESSAGES/booktheme.po diff --git a/_static/locales/id/LC_MESSAGES/booktheme.mo b/_static/locales/id/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..d07a06a Binary files /dev/null and b/_static/locales/id/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/id/LC_MESSAGES/booktheme.po b/_static/locales/id/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/id/LC_MESSAGES/booktheme.po rename to _static/locales/id/LC_MESSAGES/booktheme.po diff --git a/_static/locales/it/LC_MESSAGES/booktheme.mo b/_static/locales/it/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..53ba476 Binary files /dev/null and b/_static/locales/it/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/it/LC_MESSAGES/booktheme.po b/_static/locales/it/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/it/LC_MESSAGES/booktheme.po rename to _static/locales/it/LC_MESSAGES/booktheme.po diff --git a/_static/locales/iw/LC_MESSAGES/booktheme.mo b/_static/locales/iw/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..a45c657 Binary files /dev/null and b/_static/locales/iw/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/iw/LC_MESSAGES/booktheme.po b/_static/locales/iw/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/iw/LC_MESSAGES/booktheme.po rename to _static/locales/iw/LC_MESSAGES/booktheme.po diff --git a/_static/locales/ja/LC_MESSAGES/booktheme.mo b/_static/locales/ja/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..1cefd29 Binary files /dev/null and b/_static/locales/ja/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/ja/LC_MESSAGES/booktheme.po b/_static/locales/ja/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/ja/LC_MESSAGES/booktheme.po rename to _static/locales/ja/LC_MESSAGES/booktheme.po diff --git a/_static/locales/ko/LC_MESSAGES/booktheme.mo b/_static/locales/ko/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..06c7ec9 Binary files /dev/null and b/_static/locales/ko/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/ko/LC_MESSAGES/booktheme.po b/_static/locales/ko/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/ko/LC_MESSAGES/booktheme.po rename to _static/locales/ko/LC_MESSAGES/booktheme.po diff --git a/_static/locales/lt/LC_MESSAGES/booktheme.mo b/_static/locales/lt/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..4468ba0 Binary files /dev/null and b/_static/locales/lt/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/lt/LC_MESSAGES/booktheme.po b/_static/locales/lt/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/lt/LC_MESSAGES/booktheme.po rename to _static/locales/lt/LC_MESSAGES/booktheme.po diff --git a/_static/locales/lv/LC_MESSAGES/booktheme.mo b/_static/locales/lv/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..74aa4d8 Binary files /dev/null and b/_static/locales/lv/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/lv/LC_MESSAGES/booktheme.po b/_static/locales/lv/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/lv/LC_MESSAGES/booktheme.po rename to _static/locales/lv/LC_MESSAGES/booktheme.po diff --git a/_static/locales/ml/LC_MESSAGES/booktheme.mo b/_static/locales/ml/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..2736e8f Binary files /dev/null and b/_static/locales/ml/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/ml/LC_MESSAGES/booktheme.po b/_static/locales/ml/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/ml/LC_MESSAGES/booktheme.po rename to _static/locales/ml/LC_MESSAGES/booktheme.po diff --git a/_static/locales/mr/LC_MESSAGES/booktheme.mo b/_static/locales/mr/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..fe53010 Binary files /dev/null and b/_static/locales/mr/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/mr/LC_MESSAGES/booktheme.po b/_static/locales/mr/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/mr/LC_MESSAGES/booktheme.po rename to _static/locales/mr/LC_MESSAGES/booktheme.po diff --git a/_static/locales/ms/LC_MESSAGES/booktheme.mo b/_static/locales/ms/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..f02603f Binary files /dev/null and b/_static/locales/ms/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/ms/LC_MESSAGES/booktheme.po b/_static/locales/ms/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/ms/LC_MESSAGES/booktheme.po rename to _static/locales/ms/LC_MESSAGES/booktheme.po diff --git a/_static/locales/nl/LC_MESSAGES/booktheme.mo b/_static/locales/nl/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..e59e7ec Binary files /dev/null and b/_static/locales/nl/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/nl/LC_MESSAGES/booktheme.po b/_static/locales/nl/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/nl/LC_MESSAGES/booktheme.po rename to _static/locales/nl/LC_MESSAGES/booktheme.po diff --git a/_static/locales/no/LC_MESSAGES/booktheme.mo b/_static/locales/no/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..6cd15c8 Binary files /dev/null and b/_static/locales/no/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/no/LC_MESSAGES/booktheme.po b/_static/locales/no/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/no/LC_MESSAGES/booktheme.po rename to _static/locales/no/LC_MESSAGES/booktheme.po diff --git a/_static/locales/pl/LC_MESSAGES/booktheme.mo b/_static/locales/pl/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..9ebb584 Binary files /dev/null and b/_static/locales/pl/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/pl/LC_MESSAGES/booktheme.po b/_static/locales/pl/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/pl/LC_MESSAGES/booktheme.po rename to _static/locales/pl/LC_MESSAGES/booktheme.po diff --git a/_static/locales/pt/LC_MESSAGES/booktheme.mo b/_static/locales/pt/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..d0ddb87 Binary files /dev/null and b/_static/locales/pt/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/pt/LC_MESSAGES/booktheme.po b/_static/locales/pt/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/pt/LC_MESSAGES/booktheme.po rename to _static/locales/pt/LC_MESSAGES/booktheme.po diff --git a/_static/locales/ro/LC_MESSAGES/booktheme.mo b/_static/locales/ro/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..3c36ab1 Binary files /dev/null and b/_static/locales/ro/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/ro/LC_MESSAGES/booktheme.po b/_static/locales/ro/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/ro/LC_MESSAGES/booktheme.po rename to _static/locales/ro/LC_MESSAGES/booktheme.po diff --git a/_static/locales/ru/LC_MESSAGES/booktheme.mo b/_static/locales/ru/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..6b8ca41 Binary files /dev/null and b/_static/locales/ru/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/ru/LC_MESSAGES/booktheme.po b/_static/locales/ru/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/ru/LC_MESSAGES/booktheme.po rename to _static/locales/ru/LC_MESSAGES/booktheme.po diff --git a/_static/locales/sk/LC_MESSAGES/booktheme.mo b/_static/locales/sk/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..59bd0dd Binary files /dev/null and b/_static/locales/sk/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/sk/LC_MESSAGES/booktheme.po b/_static/locales/sk/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/sk/LC_MESSAGES/booktheme.po rename to _static/locales/sk/LC_MESSAGES/booktheme.po diff --git a/_static/locales/sl/LC_MESSAGES/booktheme.mo b/_static/locales/sl/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..87bf26d Binary files /dev/null and b/_static/locales/sl/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/sl/LC_MESSAGES/booktheme.po b/_static/locales/sl/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/sl/LC_MESSAGES/booktheme.po rename to _static/locales/sl/LC_MESSAGES/booktheme.po diff --git a/_static/locales/sr/LC_MESSAGES/booktheme.mo b/_static/locales/sr/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..ec740f4 Binary files /dev/null and b/_static/locales/sr/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/sr/LC_MESSAGES/booktheme.po b/_static/locales/sr/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/sr/LC_MESSAGES/booktheme.po rename to _static/locales/sr/LC_MESSAGES/booktheme.po diff --git a/_static/locales/sv/LC_MESSAGES/booktheme.mo b/_static/locales/sv/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..be951be Binary files /dev/null and b/_static/locales/sv/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/sv/LC_MESSAGES/booktheme.po b/_static/locales/sv/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/sv/LC_MESSAGES/booktheme.po rename to _static/locales/sv/LC_MESSAGES/booktheme.po diff --git a/_static/locales/ta/LC_MESSAGES/booktheme.mo b/_static/locales/ta/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..29f52e1 Binary files /dev/null and b/_static/locales/ta/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/ta/LC_MESSAGES/booktheme.po b/_static/locales/ta/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/ta/LC_MESSAGES/booktheme.po rename to _static/locales/ta/LC_MESSAGES/booktheme.po diff --git a/_static/locales/te/LC_MESSAGES/booktheme.mo b/_static/locales/te/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..0a5f4b4 Binary files /dev/null and b/_static/locales/te/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/te/LC_MESSAGES/booktheme.po b/_static/locales/te/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/te/LC_MESSAGES/booktheme.po rename to _static/locales/te/LC_MESSAGES/booktheme.po diff --git a/_static/locales/tg/LC_MESSAGES/booktheme.mo b/_static/locales/tg/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..b21c6c6 Binary files /dev/null and b/_static/locales/tg/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/tg/LC_MESSAGES/booktheme.po b/_static/locales/tg/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/tg/LC_MESSAGES/booktheme.po rename to _static/locales/tg/LC_MESSAGES/booktheme.po diff --git a/_static/locales/th/LC_MESSAGES/booktheme.mo b/_static/locales/th/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..abede98 Binary files /dev/null and b/_static/locales/th/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/th/LC_MESSAGES/booktheme.po b/_static/locales/th/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/th/LC_MESSAGES/booktheme.po rename to _static/locales/th/LC_MESSAGES/booktheme.po diff --git a/_static/locales/tl/LC_MESSAGES/booktheme.mo b/_static/locales/tl/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..8df1b73 Binary files /dev/null and b/_static/locales/tl/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/tl/LC_MESSAGES/booktheme.po b/_static/locales/tl/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/tl/LC_MESSAGES/booktheme.po rename to _static/locales/tl/LC_MESSAGES/booktheme.po diff --git a/_static/locales/tr/LC_MESSAGES/booktheme.mo b/_static/locales/tr/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..029ae18 Binary files /dev/null and b/_static/locales/tr/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/tr/LC_MESSAGES/booktheme.po b/_static/locales/tr/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/tr/LC_MESSAGES/booktheme.po rename to _static/locales/tr/LC_MESSAGES/booktheme.po diff --git a/_static/locales/uk/LC_MESSAGES/booktheme.mo b/_static/locales/uk/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..16ab789 Binary files /dev/null and b/_static/locales/uk/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/uk/LC_MESSAGES/booktheme.po b/_static/locales/uk/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/uk/LC_MESSAGES/booktheme.po rename to _static/locales/uk/LC_MESSAGES/booktheme.po diff --git a/_static/locales/ur/LC_MESSAGES/booktheme.mo b/_static/locales/ur/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..de8c84b Binary files /dev/null and b/_static/locales/ur/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/ur/LC_MESSAGES/booktheme.po b/_static/locales/ur/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/ur/LC_MESSAGES/booktheme.po rename to _static/locales/ur/LC_MESSAGES/booktheme.po diff --git a/_static/locales/vi/LC_MESSAGES/booktheme.mo b/_static/locales/vi/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..2bb3255 Binary files /dev/null and b/_static/locales/vi/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/vi/LC_MESSAGES/booktheme.po b/_static/locales/vi/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/vi/LC_MESSAGES/booktheme.po rename to _static/locales/vi/LC_MESSAGES/booktheme.po diff --git a/_static/locales/zh_CN/LC_MESSAGES/booktheme.mo b/_static/locales/zh_CN/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..0e3235d Binary files /dev/null and b/_static/locales/zh_CN/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/zh_CN/LC_MESSAGES/booktheme.po b/_static/locales/zh_CN/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/zh_CN/LC_MESSAGES/booktheme.po rename to _static/locales/zh_CN/LC_MESSAGES/booktheme.po diff --git a/_static/locales/zh_TW/LC_MESSAGES/booktheme.mo b/_static/locales/zh_TW/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000..9116fa9 Binary files /dev/null and b/_static/locales/zh_TW/LC_MESSAGES/booktheme.mo differ diff --git a/_build/html/_static/locales/zh_TW/LC_MESSAGES/booktheme.po b/_static/locales/zh_TW/LC_MESSAGES/booktheme.po similarity index 100% rename from _build/html/_static/locales/zh_TW/LC_MESSAGES/booktheme.po rename to _static/locales/zh_TW/LC_MESSAGES/booktheme.po diff --git a/_build/html/_static/logo.png b/_static/logo.png similarity index 100% rename from _build/html/_static/logo.png rename to _static/logo.png diff --git a/_build/html/_static/minus.png b/_static/minus.png similarity index 100% rename from _build/html/_static/minus.png rename to _static/minus.png diff --git a/_build/html/_static/mystnb.4510f1fc1dee50b3e5859aac5469c37c29e427902b24a333a5f9fcb2f0b3ac41.css b/_static/mystnb.4510f1fc1dee50b3e5859aac5469c37c29e427902b24a333a5f9fcb2f0b3ac41.css similarity index 100% rename from _build/html/_static/mystnb.4510f1fc1dee50b3e5859aac5469c37c29e427902b24a333a5f9fcb2f0b3ac41.css rename to _static/mystnb.4510f1fc1dee50b3e5859aac5469c37c29e427902b24a333a5f9fcb2f0b3ac41.css diff --git a/_build/html/_static/plus.png b/_static/plus.png similarity index 100% rename from _build/html/_static/plus.png rename to _static/plus.png diff --git a/_build/html/_static/pygments.css b/_static/pygments.css similarity index 98% rename from _build/html/_static/pygments.css rename to _static/pygments.css index 997797f..530456b 100644 --- a/_build/html/_static/pygments.css +++ b/_static/pygments.css @@ -47,7 +47,6 @@ html[data-theme="light"] .highlight .py { color: #007faa } /* Name.Property */ html[data-theme="light"] .highlight .nt { color: #007faa } /* Name.Tag */ html[data-theme="light"] .highlight .nv { color: #d91e18 } /* Name.Variable */ html[data-theme="light"] .highlight .ow { color: #7928a1 } /* Operator.Word */ -html[data-theme="light"] .highlight .pm { color: #545454 } /* Punctuation.Marker */ html[data-theme="light"] .highlight .w { color: #545454 } /* Text.Whitespace */ html[data-theme="light"] .highlight .mb { color: #797129 } /* Literal.Number.Bin */ html[data-theme="light"] .highlight .mf { color: #797129 } /* Literal.Number.Float */ @@ -123,7 +122,6 @@ html[data-theme="dark"] .highlight .py { color: #00e0e0 } /* Name.Property */ html[data-theme="dark"] .highlight .nt { color: #00e0e0 } /* Name.Tag */ html[data-theme="dark"] .highlight .nv { color: #ffa07a } /* Name.Variable */ html[data-theme="dark"] .highlight .ow { color: #dcc6e0 } /* Operator.Word */ -html[data-theme="dark"] .highlight .pm { color: #f8f8f2 } /* Punctuation.Marker */ html[data-theme="dark"] .highlight .w { color: #f8f8f2 } /* Text.Whitespace */ html[data-theme="dark"] .highlight .mb { color: #ffd900 } /* Literal.Number.Bin */ html[data-theme="dark"] .highlight .mf { color: #ffd900 } /* Literal.Number.Float */ diff --git a/_build/html/_static/sbt-webpack-macros.html b/_static/sbt-webpack-macros.html similarity index 100% rename from _build/html/_static/sbt-webpack-macros.html rename to _static/sbt-webpack-macros.html diff --git a/_build/html/_static/scripts/bootstrap.js b/_static/scripts/bootstrap.js similarity index 100% rename from _build/html/_static/scripts/bootstrap.js rename to _static/scripts/bootstrap.js diff --git a/_build/html/_static/scripts/bootstrap.js.LICENSE.txt b/_static/scripts/bootstrap.js.LICENSE.txt similarity index 100% rename from _build/html/_static/scripts/bootstrap.js.LICENSE.txt rename to _static/scripts/bootstrap.js.LICENSE.txt diff --git a/_build/html/_static/scripts/bootstrap.js.map b/_static/scripts/bootstrap.js.map similarity index 100% rename from _build/html/_static/scripts/bootstrap.js.map rename to _static/scripts/bootstrap.js.map diff --git a/_build/html/_static/scripts/pydata-sphinx-theme.js b/_static/scripts/pydata-sphinx-theme.js similarity index 100% rename from _build/html/_static/scripts/pydata-sphinx-theme.js rename to _static/scripts/pydata-sphinx-theme.js diff --git a/_build/html/_static/scripts/pydata-sphinx-theme.js.map b/_static/scripts/pydata-sphinx-theme.js.map similarity index 100% rename from _build/html/_static/scripts/pydata-sphinx-theme.js.map rename to _static/scripts/pydata-sphinx-theme.js.map diff --git a/_build/html/_static/scripts/sphinx-book-theme.js b/_static/scripts/sphinx-book-theme.js similarity index 100% rename from _build/html/_static/scripts/sphinx-book-theme.js rename to _static/scripts/sphinx-book-theme.js diff --git a/_build/html/_static/scripts/sphinx-book-theme.js.map b/_static/scripts/sphinx-book-theme.js.map similarity index 100% rename from _build/html/_static/scripts/sphinx-book-theme.js.map rename to _static/scripts/sphinx-book-theme.js.map diff --git a/_build/html/_static/searchtools.js b/_static/searchtools.js similarity index 100% rename from _build/html/_static/searchtools.js rename to _static/searchtools.js diff --git a/_build/html/_static/sphinx-thebe.css b/_static/sphinx-thebe.css similarity index 100% rename from _build/html/_static/sphinx-thebe.css rename to _static/sphinx-thebe.css diff --git a/_build/html/_static/sphinx-thebe.js b/_static/sphinx-thebe.js similarity index 100% rename from _build/html/_static/sphinx-thebe.js rename to _static/sphinx-thebe.js diff --git a/_build/html/_static/styles/bootstrap.css b/_static/styles/bootstrap.css similarity index 100% rename from _build/html/_static/styles/bootstrap.css rename to _static/styles/bootstrap.css diff --git a/_build/html/_static/styles/bootstrap.css.map b/_static/styles/bootstrap.css.map similarity index 100% rename from _build/html/_static/styles/bootstrap.css.map rename to _static/styles/bootstrap.css.map diff --git a/_build/html/_static/styles/pydata-sphinx-theme.css b/_static/styles/pydata-sphinx-theme.css similarity index 100% rename from _build/html/_static/styles/pydata-sphinx-theme.css rename to _static/styles/pydata-sphinx-theme.css diff --git a/_build/html/_static/styles/pydata-sphinx-theme.css.map b/_static/styles/pydata-sphinx-theme.css.map similarity index 100% rename from _build/html/_static/styles/pydata-sphinx-theme.css.map rename to _static/styles/pydata-sphinx-theme.css.map diff --git a/_build/html/_static/styles/sphinx-book-theme.css b/_static/styles/sphinx-book-theme.css similarity index 100% rename from _build/html/_static/styles/sphinx-book-theme.css rename to _static/styles/sphinx-book-theme.css diff --git a/_build/html/_static/styles/theme.css b/_static/styles/theme.css similarity index 100% rename from _build/html/_static/styles/theme.css rename to _static/styles/theme.css diff --git a/_build/html/_static/togglebutton.css b/_static/togglebutton.css similarity index 100% rename from _build/html/_static/togglebutton.css rename to _static/togglebutton.css diff --git a/_build/html/_static/togglebutton.js b/_static/togglebutton.js similarity index 100% rename from _build/html/_static/togglebutton.js rename to _static/togglebutton.js diff --git a/_build/html/_static/underscore-1.13.1.js b/_static/underscore-1.13.1.js similarity index 100% rename from _build/html/_static/underscore-1.13.1.js rename to _static/underscore-1.13.1.js diff --git a/_build/html/_static/underscore.js b/_static/underscore.js similarity index 100% rename from _build/html/_static/underscore.js rename to _static/underscore.js diff --git a/_build/html/_static/vendor/fontawesome/6.1.2/LICENSE.txt b/_static/vendor/fontawesome/6.1.2/LICENSE.txt similarity index 100% rename from _build/html/_static/vendor/fontawesome/6.1.2/LICENSE.txt rename to _static/vendor/fontawesome/6.1.2/LICENSE.txt diff --git a/_build/html/_static/vendor/fontawesome/6.1.2/css/all.min.css b/_static/vendor/fontawesome/6.1.2/css/all.min.css similarity index 100% rename from _build/html/_static/vendor/fontawesome/6.1.2/css/all.min.css rename to _static/vendor/fontawesome/6.1.2/css/all.min.css diff --git a/_build/html/_static/vendor/fontawesome/6.1.2/js/all.min.js b/_static/vendor/fontawesome/6.1.2/js/all.min.js similarity index 100% rename from _build/html/_static/vendor/fontawesome/6.1.2/js/all.min.js rename to _static/vendor/fontawesome/6.1.2/js/all.min.js diff --git a/_build/html/_static/vendor/fontawesome/6.1.2/js/all.min.js.LICENSE.txt b/_static/vendor/fontawesome/6.1.2/js/all.min.js.LICENSE.txt similarity index 100% rename from _build/html/_static/vendor/fontawesome/6.1.2/js/all.min.js.LICENSE.txt rename to _static/vendor/fontawesome/6.1.2/js/all.min.js.LICENSE.txt diff --git a/_build/html/_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.ttf b/_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.ttf similarity index 100% rename from _build/html/_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.ttf rename to _static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.ttf diff --git a/_build/html/_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2 b/_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2 similarity index 100% rename from _build/html/_static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2 rename to _static/vendor/fontawesome/6.1.2/webfonts/fa-brands-400.woff2 diff --git a/_build/html/_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.ttf b/_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.ttf similarity index 100% rename from _build/html/_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.ttf rename to _static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.ttf diff --git a/_build/html/_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2 b/_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2 similarity index 100% rename from _build/html/_static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2 rename to _static/vendor/fontawesome/6.1.2/webfonts/fa-regular-400.woff2 diff --git a/_build/html/_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.ttf b/_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.ttf similarity index 100% rename from _build/html/_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.ttf rename to _static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.ttf diff --git a/_build/html/_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2 b/_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2 similarity index 100% rename from _build/html/_static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2 rename to _static/vendor/fontawesome/6.1.2/webfonts/fa-solid-900.woff2 diff --git a/_build/html/_static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.ttf b/_static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.ttf similarity index 100% rename from _build/html/_static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.ttf rename to _static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.ttf diff --git a/_build/html/_static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.woff2 b/_static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.woff2 similarity index 100% rename from _build/html/_static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.woff2 rename to _static/vendor/fontawesome/6.1.2/webfonts/fa-v4compatibility.woff2 diff --git a/_build/html/_static/webpack-macros.html b/_static/webpack-macros.html similarity index 100% rename from _build/html/_static/webpack-macros.html rename to _static/webpack-macros.html diff --git a/_toc.yml b/_toc.yml deleted file mode 100644 index 8de8f3f..0000000 --- a/_toc.yml +++ /dev/null @@ -1,7 +0,0 @@ -# Table of contents -# Learn more at https://jupyterbook.org/customize/toc.html - -format: jb-book -root: docs/机器学习任务 -chapters: -- file: docs/最小二乘法 diff --git a/docs/.DS_Store b/docs/.DS_Store deleted file mode 100644 index b387696..0000000 Binary files a/docs/.DS_Store and /dev/null differ diff --git "a/_build/html/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.html" "b/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.html" similarity index 97% rename from "_build/html/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.html" rename to "docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.html" index 8b4af52..a4e8411 100644 --- "a/_build/html/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.html" +++ "b/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.html" @@ -493,7 +493,16 @@

最小二乘法优化演示 -../_images/d6218a782e7e9562e15dd0432ee769a8e83fef667e4a8a51093c860abe49badb.png +
---------------------------------------------------------------------------
+ModuleNotFoundError                       Traceback (most recent call last)
+Cell In[1], line 1
+----> 1 import numpy as np
+      2 import matplotlib.pyplot as plt
+      3 from IPython.display import clear_output, display
+
+ModuleNotFoundError: No module named 'numpy'
+
+
diff --git "a/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.ipynb" "b/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.ipynb" deleted file mode 100644 index 0ca9ad3..0000000 --- "a/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.ipynb" +++ /dev/null @@ -1,290 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "ffe6cf12-648d-4b05-8ca6-9587941643ef", - "metadata": { - "tags": [] - }, - "source": [ - "## 最小二乘法\n", - "\n", - "普通最小二乘法(ordinary least squares)[1][2]是一种数学优化方法,又称最小平方法。\n", - "\n", - "### 逸闻趣事\n", - "\n", - "1801年,意大利天文学家朱赛普·皮亚齐发现了第一颗小行星谷神星。经过40天的跟踪观测后,由于谷神星运行至太阳背后,使得皮亚齐失去了谷神星的位置。随后全世界的科学家利用皮亚齐的观测数据开始寻找谷神星,但是根据大多数人计算的结果来寻找谷神星都没有结果。只有时年24岁的高斯(1777-1855)所计算的谷神星的轨道,被奥地利天文学家海因里希·奥尔伯斯的观测所证实,使天文界从此可以预测到谷神星的精确位置。同样的方法也产生了哈雷彗星等很多天文学成果。高斯使用的方法就是最小二乘法,该方法发表于1809年他的著作《天体运动论》中。其实早在1805,法国数学家勒让德(Legendre,Adrien-Marie)就在其著作《计算慧星轨道的新方法》中提出了“最小二乘法”。\n", - "\n", - "勒让德(1752~1833)常被人戏称为“过渡性科学家”[3]。因为他的成就很快被别人推翻或者被更有天赋的人超越[4]。比如,最早由欧拉和勒让德提出的二次互反律,勒让德在1798年整理的《数论讲义》中给出了证明,但很快就被高斯找到了漏洞并否定了,之后又累计给出了至少7种不同证法。这让勒让德很受伤,而且自己也无力反驳。更致命的是,随着高斯经典巨著《算术探究》在1801年的出版,勒让德的《数论讲义》被取代,甚至其他的数论著作也被遗忘了。“最小二乘法”最早由勒让德发表于1805年的论文中,但是这次小高斯又出来让勒让德“受伤了”。高斯发文说他早在1795年就发现了这个方法,并在1801年结合此方法计算出了谷神星的运动轨迹。勒让德这一次真有些生气了,怎么什么都是你先发现的?还有完没完了。两人为了优先权争论了好几年。后来高斯将最小二乘法与概率论相结合提出了正态分布,由于这个概念的提出,高斯又走在了勒让德前面。\n", - "\n", - "18世纪后半叶到20世纪初是数学史上的超英雄时代,此时的欧洲以法国为代表出现了大批的顶级数学家。我们来看看这些熟悉的名字:柯西(Cauchy,1789-1857),拉格朗日(Lagrange,1736~1813),拉普拉斯(Laplace,1749-1827)),蒙日( Monge,1746~1818),泊松( Poisson ,1781~1840)),傅里叶(Fourier,1768-1830),这些数学家都为法国的政治和科学做了巨大贡献,很多人甚至于是师徒或朋友的关系。勒让德在这个群星璀璨的时代,他的光芒被掩盖了,如果早生50年或者晚生50年都将是当时数学界最耀眼的明星。但实变函数之父勒让德在数学、物理、天文等多方面的成就必定是名垂青史的。\n", - "\n", - "\n", - "![image.png](../images/people/勒让德-高斯.png)\n", - "\n", - "\n", - "### 最小二乘法\n", - "从小学二年测量数学课本边长开始,数学老师就告诉我们要多次测量取平均值,具体操作就是将几次测量结果加起来除以测量次数[2]。\n", - "\n", - "![image.png](../images/多次测量取平均.png)\n", - "\n", - "$$\\bar{y} = \\frac{y_1 + y_2 + \\cdots + y_6}{6} = \\frac{\\sum_{i=1}^{6}y_i}{6} = y$$\n", - "\n", - "这么做基于如下重要事实与假设:\n", - "\n", - "* 真实值是无法得到的;\n", - "\n", - "* 单次的测量误差是随机的; \n", - "\n", - "为什么不用其他统计值(几何平均、调和平均)代表平均效果?\n", - "1. 既然测量的误差是随机的,那么误差应该围绕真实值上下随机波动。\n", - "2. 通常会假设观测误差符合正态分布,所以算术平均值代表平均效果。\n", - "\n", - "为什么不用绝对误差而要用平方误差?即:$|y - y_i| \\rightarrow (y - y_i)^2$\n", - "1. 强调大误差:平方误差的平均值对较大的误差更敏感。\n", - "2. 解析性质:使用平方误差可以更方便地进行分析和求导,从而找到函数值最小的极值点。\n", - "\n", - "假设某次测量有n个观测(测量)值,那么测量值与真值之间的误差平方和$R_n$为: \n", - "\n", - "$$R_n = \\sum_{i=1}^{n}(y - y_i)^2$$\n", - "\n", - "注意此时只有真值y是不知道的。我们知道yi围绕y值随机地上下波动,问题就变成了如何根据已有数据确定y的值。" - ] - }, - { - "cell_type": "markdown", - "id": "084acf28-b372-4f1d-a698-201411507c6b", - "metadata": {}, - "source": [ - "### 最小二乘法优化演示\n", - "\n", - "举例说明[2]:如下图所示,黄色数据为观测值,其算数平均值为5;红色横线为真值,因为真值不确定,所以让真值在数据间波动以寻找规律,发现当真值等于算数平均值时,误差平方和最小,以此作为真值。这是自洽的,也蛮符合直觉。因为如果误差是随机的,误差应该围绕着真值,真值应该使得误差平方和最小。" - ] - }, - { - "cell_type": "code", - "execution_count": 67, - "id": "14a997e2-36cc-4d29-bfa5-3dcb175398df", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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l770pfT+EAAAACBHaa4DhBR8+MMfPv79WWedNerr9+/fr7a2NjU2Nqq3t/f44+eee+4J2+rq6tLq1aslSRdccIHjHgMAAADxIABKWVdXl0455RTt37//eMCya9cuXX311XrmmWd0zz336Nlnn6373gsuuEAf+tCHTnjszjvvHPPvDiHohhtu0Nlnn61LLrlEf/u3f3vCtgdu6/Of/7wk6V3vepd+5Vd+Zcy/AwAAACgSAqCUtbS06O1vf7u+973v6dprr5UkfexjH9Mf//Efa9q0aVq3bp2++c1v1n3vVVddNSQAOu200yRJl112mT7zmc+otbV12N9955136tvf/ra++93vjhg4hRCOB0Af+chHkvx5AAAAQKEQAGWgtbX1eAD0yCOPaPfu3fra174mqX8uzlhMmzZNixYt0jnnnKNHH31U3/jGN/Qbv/Eb2r17t84888whr9+1a5c+/vGP61Of+pRmz5494rY3btyoH/7whzrzzDP127/920n/PAAAAKAwCIAy0Nraqn/6p3+SJK1cuVL/5b/8F02ePFmS9IUvfGFMKXDr16+XmUmSjhw5ogsvvFDPPfecHn74Yf3O7/zOkPd+9atf1ZEjR/TNb35T3/rWt/Tkk08e386UKVP06U9/+vhrj40OtbW1Hd8vAAAAoIwIgDLQ2tqqP/uzP9NXv/pVHTp06ISAZSwpcN3d3Tp48KDOPvvsIa9paGiQJP34xz9Wd3e3zjjjDJ122mkKISiEoH/4h3844fU/+tGP9Oijjx7/+amnntI3vvENNTc365ZbbvH4cwEAAIBoUQY7A5deeql++tOf6qMf/ag+85nPaNKk//9j37x58/FgZfDXsfS4AwcO6C1veYve97736ZZbblFra6uee+45nXHGGXrPe94jSVqxYoVmzZqle+65R5L0iU984oRt3XDDDZL6q8gNTLs7NvqzfPlynX766el/GAAAAECOCIAy0NTUpEsuuUTnn3++3ve+9yV+/xve8AatWLHieNW4n/3sZ1q6dKn++Z//WTNmzBj3fr300ku6//77Jen4+kAAAABAmVkIIe99SGTu3Llh+/btee9GIkeOHNEFF1ygL3/5y7r88svz3h0AAACg1MxsRwhhbr3nGAHKwCc/+UldeeWVBD8AAABAzgiAUvS9731Pp5xyih555JHj6+wAAAAAyA9V4FJ02WWX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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "from IPython.display import clear_output, display\n", - "import time\n", - "\n", - "np.random.seed(0)\n", - "n = 40\n", - "y_real = 5\n", - "frame = 50\n", - "\n", - "x = np.arange(1, n+1)\n", - "# 随机偏移\n", - "bias = 1 - 2 * np.random.rand(n)\n", - "# 数据点\n", - "y_test = y_real + bias\n", - "\n", - "# 创建图像和坐标轴对象\n", - "fig, ax = plt.subplots(figsize=(14, 8))\n", - "ax.set_facecolor('w')\n", - "\n", - "# 拟合的曲线\n", - "y_appr = y_real - 1\n", - "for i in range(frame):\n", - " ax.clear()\n", - " \n", - " # 绘制虚线\n", - " for j in range(n):\n", - " ax.plot([x[j], x[j]], [y_test[j], y_appr], linestyle='--', linewidth=0.5, color='gray')\n", - " \n", - " # 绘制散点图\n", - " scatter = ax.scatter(x, y_test, color='b', facecolors='yellow', s=200)\n", - " \n", - " # 绘制回归线\n", - " ax.axhline(y=y_appr, color='r')\n", - "\n", - " # 计算误差\n", - " Rn = np.sum((y_appr - y_test)**2)\n", - " \n", - " # 设置坐标轴范围和标签\n", - " ax.set_xlim(0, n+1)\n", - " ax.set_ylim(y_real-2, y_real+1.5)\n", - " ax.set_xlabel('x')\n", - " ax.set_ylabel('y')\n", - " \n", - " # 设置标题\n", - " ax.set_title('orinary least squares'.format(Rn, y_appr))\n", - " ax.text(0.05, 0.1, '$R_n$={:.2f} \\n $y$={:.2f}'.format(Rn, y_appr), transform=ax.transAxes,\n", - " fontsize=12, fontweight='bold', color='black')\n", - " \n", - " # 清除上一帧的图像\n", - " clear_output(wait=True)\n", - " \n", - " # 显示当前帧的图像\n", - " display(fig)\n", - " \n", - " # 暂停一段时间\n", - " time.sleep(0.1)\n", - " \n", - " # 更新预测值\n", - " y_appr += 1.5/frame\n", - "\n", - "plt.close()" - ] - }, - { - "cell_type": "markdown", - "id": "0a7856da-d03d-4b0b-ad8b-482d639ca36f", - "metadata": {}, - "source": [ - "### 论证:最小二乘法有极小值\n", - "对于$R_n$求:\n", - "\n", - "* 一阶导数\n", - "$$\\frac{{dR_n}}{{dy}} = \\frac{{d}}{{dy}} \\sum_{i=1}^{n}(y - y_i)^2$$\n", - "\n", - "使用链式法则,我们可以将求和符号中的每一项分别求导,然后将它们加起来:\n", - "\n", - "$$\\frac{{dR_n}}{{dy}} = 2 \\sum_{i=1}^{n}(y - y_i)$$\n", - "\n", - "* 二阶导数\n", - "\n", - "$$\\frac{{d^2R_n}}{{dy^2}} = \\frac{{d}}{{dy}} \\left(2 \\sum_{i=1}^{n}(y - y_i) \\right)$$\n", - "\n", - "再次应用链式法则,我们可以得到:\n", - "\n", - "$$\\frac{{d^2R_n}}{{dy^2}} = 2 \\sum_{i=1}^{n} 1 = 2n$$\n", - "\n", - "1. 通过一阶导数为0的点来寻找Rn的极小值点(斜率为0,无变化)。\n", - "2. 而通过二阶导数的正负性来确认极小值点的性质,即判断曲线在该点处是否向上弯曲(正-斜率变大,上弯曲;负-斜率变小,下弯曲)。\n", - "\n", - "### 论证:极小值可以求得真实值y,且就是样本数据的算术平均值\n", - "我们来解一阶导数为0的方程,以找到使得Rn取得极小值的y的值。\n", - "\n", - "首先,我们设置一阶导数为0:\n", - "\n", - "$$\\frac{{dR_n}}{{dy}} = 2 \\sum_{i=1}^{n}(y - y_i) = 0$$\n", - "\n", - "将等式两边除以2:\n", - "\n", - "$$\\sum_{i=1}^{n}(y - y_i) = 0$$\n", - "\n", - "展开求和符号:\n", - "\n", - "$$ny - \\sum_{i=1}^{n}y_i = 0$$\n", - "\n", - "将等式重新排列:\n", - "\n", - "$$ny = \\sum_{i=1}^{n}y_i$$\n", - "\n", - "最后,通过除以n,我们可以得到y的值:\n", - "\n", - "$$y = \\frac{1}{n}\\sum_{i=1}^{n}y_i$$\n", - "\n", - "这个方程表示了使得Rn取得极小值的y的值。具体来说,y的值等于y_i的平均值。\n", - "\n", - "\n", - "也就是说算术平均数可以让误差(欧几里得范数意义下)最小。\n", - "\n", - "算数平均值只是最小二乘法应用的特例,可以看作是一组数据的0阶拟合,多项式拟合以及函数逼近就是更广泛一点的应用了。" - ] - }, - { - "cell_type": "markdown", - "id": "88e3eb55-07ad-456e-85c8-67ea775c245c", - "metadata": {}, - "source": [ - "### 扩展:概率解释[5][6]\n", - "\n", - "* 极大似然估计[7]\n", - "\n", - "根据极大似然估计的思想,我们是基于观测到的样本数据信息,寻找最有可能产生这些观测数据的参数值。具体而言,我们希望找到使得样本数据出现的概率最大的参数值。也就是说,通过调整参数值来使得该概率分布与观测数据最匹配。\n", - "\n", - "为了实现这一目标,我们构建了一个关于参数的似然函数(likelihood function),它表示在给定参数值下观测数据出现的概率。然后,我们通过最大化似然函数来求解最有可能的参数值。以一开始的书本边长测量为例[2],设测量误差为随机变量$\\epsilon_i = |y_i - y|$,服从未知的概率分布$p(\\epsilon)$,进而得到似然函数:\n", - "\n", - "$$L(y) = p(\\epsilon_1) p(\\epsilon_2) \\cdots p(\\epsilon_n) = p(y_1 - y) p(y_2 - y) \\cdots p(y_n - y) = \\prod_{i=1}^{n} p(\\epsilon_i)$$。 \n", - "\n", - "求解过程中可以通过找到驻值点来得到极值。驻值点(stationary point)是函数在某个点上的导数为零或不存在的点。也就是说,在驻值点处,函数的导数等于零或者函数在该点的导数不存在。驻值点包括极小值点、极大值点和拐点。在极小值点和极大值点,函数在该点的导数为零。而在拐点,函数在该点的导数不存在,即函数的曲线在该点处发生弯曲。\n", - "\n", - "$$ \\frac{d}{dy} L(y) = 0$$\n", - "\n", - "如果最小二乘是对的,那么:\n", - "\n", - "$$\\frac{d}{dy} L(y) |_{y=\\bar{y}} = 0$$\n", - "\n", - "* 推断的过程\n", - "\n", - "通过极大似然估计的思想来确定未知的概率分布$p(\\epsilon)$,这是一种统计推断问题。\n", - "\n", - "在进行推断时,我们通常需要假设概率分布的形式或者给定某些假设条件。对于未知的概率分布$p(\\epsilon)$,我们可以尝试假设它属于某个参数化的分布族,例如正态分布、指数分布等。\n", - "\n", - "一种常见的方法是使用最大似然估计来估计参数化分布中的参数值,从而确定未知的概率分布$p(\\epsilon)$。具体步骤如下:\n", - "\n", - "1. 假设概率分布$p(\\epsilon)$属于一个已知的参数化分布族,并假设参数为$\\theta$。\n", - "2. 构建似然函数$L(\\theta)$,它表示观测数据出现的概率关于参数$\\theta$的函数。在这里,观测数据是样本误差$\\epsilon_i$。\n", - "3. 对似然函数$L(\\theta)$取对数并求负,得到负对数似然函数$-\\log L(\\theta)$。\n", - "4. 最大化负对数似然函数$-\\log L(\\theta)$,即通过对参数$\\theta$进行优化来找到使得观测数据出现概率最大化的参数值。\n", - "\n", - "设$\\epsilon$为测量误差,由于$\\epsilon_i$是独立同分布的,那么根据中心极限定理,误差的分布就应该是正态分布,我们假设$\\epsilon$服从正态分布$N(\\mu, \\sigma^2)$,其中$\\mu$是均值,$\\sigma$是标准差。根据极大似然估计的思想,我们希望找到使得观测数据出现的概率最大化的$\\mu$和$\\sigma$。我们可以将似然函数写成:\n", - "\n", - "$$L(\\mu, \\sigma) = \\prod_{i=1}^{n} p(\\epsilon_i) = \\prod_{i=1}^{n} \\frac{1}{\\sqrt{2\\pi}\\sigma}e^{-\\frac{(\\epsilon_i - \\mu)^2}{2\\sigma^2}}$$\n", - "\n", - "为了最大化似然函数,我们可以取对数并将问题转化为最小化负对数似然函数。即求解以下方程:\n", - "\n", - "$$-\\log L(\\mu, \\sigma) = -\\sum_{i=1}^{n}\\left(\\log(\\frac{1}{\\sqrt{2\\pi}\\sigma}) + \\frac{(\\epsilon_i - \\mu)^2}{2\\sigma^2}\\right)$$\n", - "\n", - "我们可以通过对$\\mu$和$\\sigma$分别求偏导数并令导数等于零,来求解最大似然估计的参数。对于正态分布,最大似然估计将给出均值$\\mu$和标准差$\\sigma$的估计值。\n", - "\n", - "最大似然估计会等价于最小化残差平方和,因为最大化观测数据的联合概率就等价于最小化负对数似然函数,而负对数似然函数与残差平方和成正比。" - ] - }, - { - "cell_type": "markdown", - "id": "3594eaab-9ea4-406b-b043-d4c313bc375a", - "metadata": {}, - "source": [ - "## 参考文献\n", - "\n", - "* [1] 最小二乘法百度百科 https://baike.baidu.com/item/%E6%9C%80%E5%B0%8F%E4%BA%8C%E4%B9%98%E6%B3%95/2522346?fr=ge_ala\n", - "* [2] 多方位理解最小二乘法|从均值到正态分布 https://www.bilibili.com/read/cv11596191/\n", - "* [3] 勒让德:一个生在英雄时代,又被年轻高斯气得发狂的数学家 https://zhuanlan.zhihu.com/p/147641642\n", - "* [4] 勒让德简介 https://baike.baidu.com/item/%E9%98%BF%E5%BE%B7%E5%88%A9%E6%98%82%C2%B7%E7%8E%9B%E5%88%A9%C2%B7%E5%9F%83%C2%B7%E5%8B%92%E8%AE%A9%E5%BE%B7/8791520\n", - "* [5] 最小二乘法的概率解释 https://blog.51cto.com/u_16146153/6387070\n", - "* [6] 最小二乘法的概率解释-最大似然方法 https://www.cnblogs.com/shibalang/p/4974583.html\n", - "* [7] 一文了解最大似然估计(Maximum Likelihood Estimation) https://mp.weixin.qq.com/s?__biz=MzI1MjQ2OTQ3Ng==&mid=2247604343&idx=1&sn=8659045f8c4279710a205da9303af5e8&chksm=e9e051fcde97d8ea1dc8cc716325c4e7c8ce7da52af653e8462039f51caa7ad7703805d18626&scene=27" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git "a/_build/html/docs/\346\234\272\345\231\250\345\255\246\344\271\240\344\273\273\345\212\241.html" "b/docs/\346\234\272\345\231\250\345\255\246\344\271\240\344\273\273\345\212\241.html" similarity index 100% rename from "_build/html/docs/\346\234\272\345\231\250\345\255\246\344\271\240\344\273\273\345\212\241.html" rename to "docs/\346\234\272\345\231\250\345\255\246\344\271\240\344\273\273\345\212\241.html" diff --git "a/docs/\346\234\272\345\231\250\345\255\246\344\271\240\344\273\273\345\212\241.ipynb" "b/docs/\346\234\272\345\231\250\345\255\246\344\271\240\344\273\273\345\212\241.ipynb" deleted file mode 100644 index e026a0a..0000000 --- "a/docs/\346\234\272\345\231\250\345\255\246\344\271\240\344\273\273\345\212\241.ipynb" +++ /dev/null @@ -1,97 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "458055cd-d396-49da-9069-4d64ed4638e8", - "metadata": {}, - "source": [ - "机器学习的任务分为一下几种类别\n", - "\n", - "## 分类\n", - "\n", - "确定对象所属的类别。\n", - "\n", - "* 应用:垃圾邮件检测,图像识别。\n", - "* 算法:梯度提升、最近邻、随机森林、逻辑回归等等。\n", - "\n", - "![分类](../images/ml-task/sphx_glr_plot_classifier_comparison_001_carousel.png)\n", - "\n", - "\n", - "## 回归\n", - "\n", - "预测与对象相关的连续值的属性。\n", - "\n", - "* 应用:药物反应、股票价格。\n", - "* 算法:梯度提升、最近邻、随机森林、岭回归等等。\n", - "\n", - "![分类](../images/ml-task/sphx_glr_plot_adaboost_regression_thumb.png)\n", - "\n", - "\n", - "## 聚类\n", - "\n", - "将相似对象自动分组到集合中。\n", - "\n", - "* 应用:用户划分、实验输出分组。\n", - "* 算法:k-means、DBSCAN、层次聚类等等。\n", - "\n", - "![分类](../images/ml-task/sphx_glr_plot_kmeans_digits_thumb.png)\n", - "\n", - "\n", - "\n", - "## 降维\n", - "\n", - "减少要考虑的随机变量的数量。\n", - "\n", - "* 应用:可视化、提高效率。\n", - "* 算法:PCA、特征选择、非负矩阵分解等等。\n", - "\n", - "\n", - "![分类](../images/ml-task/sphx_glr_plot_pca_iris_thumb.png)\n", - "\n", - "\n", - "\n", - "## 模型选择\n", - "\n", - "比较、验证和选择参数以及模型。\n", - "\n", - "* 应用:垃圾邮件检测,图像识别。\n", - "* 算法:网格搜索、交叉检验等等。\n", - "\n", - "![分类](../images/ml-task/sphx_glr_plot_multi_metric_evaluation_thumb.png)\n", - "\n", - "\n", - "\n", - "## 预处理\n", - "\n", - "确定对象所属的类别。\n", - "\n", - "* 应用:转换输入数据如文本,便于机器学习算法使用。\n", - "* 算法:预处理、特征提取等等。\n", - "\n", - "![分类](../images/ml-task/sphx_glr_plot_discretization_strategies_thumb.png)\n", - "\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "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.9.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/_build/html/genindex.html b/genindex.html similarity index 100% rename from _build/html/genindex.html rename to genindex.html diff --git a/images/.DS_Store b/images/.DS_Store deleted file mode 100644 index 3406cec..0000000 Binary files a/images/.DS_Store and /dev/null differ diff --git a/images/ml-task/sphx_glr_plot_adaboost_regression_thumb.png b/images/ml-task/sphx_glr_plot_adaboost_regression_thumb.png deleted file mode 100644 index 46a91f7..0000000 Binary files a/images/ml-task/sphx_glr_plot_adaboost_regression_thumb.png and /dev/null differ diff --git a/images/ml-task/sphx_glr_plot_classifier_comparison_001_carousel.png b/images/ml-task/sphx_glr_plot_classifier_comparison_001_carousel.png deleted file mode 100644 index 197a831..0000000 Binary files a/images/ml-task/sphx_glr_plot_classifier_comparison_001_carousel.png and /dev/null differ diff --git a/images/ml-task/sphx_glr_plot_discretization_strategies_thumb.png b/images/ml-task/sphx_glr_plot_discretization_strategies_thumb.png deleted file mode 100644 index 7490c86..0000000 Binary files a/images/ml-task/sphx_glr_plot_discretization_strategies_thumb.png and /dev/null differ diff --git a/images/ml-task/sphx_glr_plot_kmeans_digits_thumb.png b/images/ml-task/sphx_glr_plot_kmeans_digits_thumb.png deleted file mode 100644 index 6e8e714..0000000 Binary files a/images/ml-task/sphx_glr_plot_kmeans_digits_thumb.png and /dev/null differ diff --git a/images/ml-task/sphx_glr_plot_multi_metric_evaluation_thumb.png b/images/ml-task/sphx_glr_plot_multi_metric_evaluation_thumb.png deleted file mode 100644 index 4114f8f..0000000 Binary files a/images/ml-task/sphx_glr_plot_multi_metric_evaluation_thumb.png and /dev/null differ diff --git a/images/ml-task/sphx_glr_plot_pca_iris_thumb.png b/images/ml-task/sphx_glr_plot_pca_iris_thumb.png deleted file mode 100644 index d316f06..0000000 Binary files a/images/ml-task/sphx_glr_plot_pca_iris_thumb.png and /dev/null differ diff --git a/images/people/.DS_Store b/images/people/.DS_Store deleted file mode 100644 index 09bffb5..0000000 Binary files a/images/people/.DS_Store and /dev/null differ diff --git "a/images/people/\345\213\222\350\256\251\345\276\267-\351\253\230\346\226\257.png" "b/images/people/\345\213\222\350\256\251\345\276\267-\351\253\230\346\226\257.png" deleted file mode 100644 index 60d9dfc..0000000 Binary files "a/images/people/\345\213\222\350\256\251\345\276\267-\351\253\230\346\226\257.png" and /dev/null differ diff --git "a/images/\345\244\232\346\254\241\346\265\213\351\207\217\345\217\226\345\271\263\345\235\207.png" "b/images/\345\244\232\346\254\241\346\265\213\351\207\217\345\217\226\345\271\263\345\235\207.png" deleted file mode 100644 index f2d3dc7..0000000 Binary files "a/images/\345\244\232\346\254\241\346\265\213\351\207\217\345\217\226\345\271\263\345\235\207.png" and /dev/null differ diff --git a/_build/html/index.html b/index.html similarity index 100% rename from _build/html/index.html rename to index.html diff --git a/logo.png b/logo.png deleted file mode 100644 index 06d56f4..0000000 Binary files a/logo.png and /dev/null differ diff --git a/_build/html/objects.inv b/objects.inv similarity index 100% rename from _build/html/objects.inv rename to objects.inv diff --git a/references.bib b/references.bib deleted file mode 100644 index 783ec6a..0000000 --- a/references.bib +++ /dev/null @@ -1,56 +0,0 @@ ---- ---- - -@inproceedings{holdgraf_evidence_2014, - address = {Brisbane, Australia, Australia}, - title = {Evidence for {Predictive} {Coding} in {Human} {Auditory} {Cortex}}, - booktitle = {International {Conference} on {Cognitive} {Neuroscience}}, - publisher = {Frontiers in Neuroscience}, - author = {Holdgraf, Christopher Ramsay and de Heer, Wendy and Pasley, Brian N. and Knight, Robert T.}, - year = {2014} -} - -@article{holdgraf_rapid_2016, - title = {Rapid tuning shifts in human auditory cortex enhance speech intelligibility}, - volume = {7}, - issn = {2041-1723}, - url = {http://www.nature.com/doifinder/10.1038/ncomms13654}, - doi = {10.1038/ncomms13654}, - number = {May}, - journal = {Nature Communications}, - author = {Holdgraf, Christopher Ramsay and de Heer, Wendy and Pasley, Brian N. and Rieger, Jochem W. and Crone, Nathan and Lin, Jack J. and Knight, Robert T. and Theunissen, Frédéric E.}, - year = {2016}, - pages = {13654}, - file = {Holdgraf et al. - 2016 - Rapid tuning shifts in human auditory cortex enhance speech intelligibility.pdf:C\:\\Users\\chold\\Zotero\\storage\\MDQP3JWE\\Holdgraf et al. - 2016 - Rapid tuning shifts in human auditory cortex enhance speech intelligibility.pdf:application/pdf} -} - -@inproceedings{holdgraf_portable_2017, - title = {Portable learning environments for hands-on computational instruction using container-and cloud-based technology to teach data science}, - volume = {Part F1287}, - isbn = {978-1-4503-5272-7}, - doi = {10.1145/3093338.3093370}, - abstract = {© 2017 ACM. There is an increasing interest in learning outside of the traditional classroom setting. This is especially true for topics covering computational tools and data science, as both are challenging to incorporate in the standard curriculum. These atypical learning environments offer new opportunities for teaching, particularly when it comes to combining conceptual knowledge with hands-on experience/expertise with methods and skills. Advances in cloud computing and containerized environments provide an attractive opportunity to improve the effciency and ease with which students can learn. This manuscript details recent advances towards using commonly-Available cloud computing services and advanced cyberinfrastructure support for improving the learning experience in bootcamp-style events. We cover the benets (and challenges) of using a server hosted remotely instead of relying on student laptops, discuss the technology that was used in order to make this possible, and give suggestions for how others could implement and improve upon this model for pedagogy and reproducibility.}, - booktitle = {{ACM} {International} {Conference} {Proceeding} {Series}}, - author = {Holdgraf, Christopher Ramsay and Culich, A. and Rokem, A. and Deniz, F. and Alegro, M. and Ushizima, D.}, - year = {2017}, - keywords = {Teaching, Bootcamps, Cloud computing, Data science, Docker, Pedagogy} -} - -@article{holdgraf_encoding_2017, - title = {Encoding and decoding models in cognitive electrophysiology}, - volume = {11}, - issn = {16625137}, - doi = {10.3389/fnsys.2017.00061}, - abstract = {© 2017 Holdgraf, Rieger, Micheli, Martin, Knight and Theunissen. Cognitive neuroscience has seen rapid growth in the size and complexity of data recorded from the human brain as well as in the computational tools available to analyze this data. This data explosion has resulted in an increased use of multivariate, model-based methods for asking neuroscience questions, allowing scientists to investigate multiple hypotheses with a single dataset, to use complex, time-varying stimuli, and to study the human brain under more naturalistic conditions. These tools come in the form of “Encoding” models, in which stimulus features are used to model brain activity, and “Decoding” models, in which neural features are used to generated a stimulus output. Here we review the current state of encoding and decoding models in cognitive electrophysiology and provide a practical guide toward conducting experiments and analyses in this emerging field. Our examples focus on using linear models in the study of human language and audition. We show how to calculate auditory receptive fields from natural sounds as well as how to decode neural recordings to predict speech. The paper aims to be a useful tutorial to these approaches, and a practical introduction to using machine learning and applied statistics to build models of neural activity. The data analytic approaches we discuss may also be applied to other sensory modalities, motor systems, and cognitive systems, and we cover some examples in these areas. In addition, a collection of Jupyter notebooks is publicly available as a complement to the material covered in this paper, providing code examples and tutorials for predictive modeling in python. The aimis to provide a practical understanding of predictivemodeling of human brain data and to propose best-practices in conducting these analyses.}, - journal = {Frontiers in Systems Neuroscience}, - author = {Holdgraf, Christopher Ramsay and Rieger, J.W. and Micheli, C. and Martin, S. and Knight, R.T. and Theunissen, F.E.}, - year = {2017}, - keywords = {Decoding models, Encoding models, Electrocorticography (ECoG), Electrophysiology/evoked potentials, Machine learning applied to neuroscience, Natural stimuli, Predictive modeling, Tutorials} -} - -@book{ruby, - title = {The Ruby Programming Language}, - author = {Flanagan, David and Matsumoto, Yukihiro}, - year = {2008}, - publisher = {O'Reilly Media} -} diff --git "a/reports/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.err.log" "b/reports/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.err.log" new file mode 100644 index 0000000..e6fca04 --- /dev/null +++ "b/reports/docs/\346\234\200\345\260\217\344\272\214\344\271\230\346\263\225.err.log" @@ -0,0 +1,91 @@ +Traceback (most recent call last): + File "/home/runner/.local/lib/python3.10/site-packages/jupyter_cache/executors/utils.py", line 58, in single_nb_execution + executenb( + File "/home/runner/.local/lib/python3.10/site-packages/nbclient/client.py", line 1305, in execute + return NotebookClient(nb=nb, resources=resources, km=km, **kwargs).execute() + File "/home/runner/.local/lib/python3.10/site-packages/jupyter_core/utils/__init__.py", line 173, in wrapped + return loop.run_until_complete(inner) + File "/usr/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete + return future.result() + File "/home/runner/.local/lib/python3.10/site-packages/nbclient/client.py", line 705, in async_execute + await self.async_execute_cell( + File "/home/runner/.local/lib/python3.10/site-packages/nbclient/client.py", line 1058, in async_execute_cell + await self._check_raise_for_error(cell, cell_index, exec_reply) + File "/home/runner/.local/lib/python3.10/site-packages/nbclient/client.py", line 914, in _check_raise_for_error + raise CellExecutionError.from_cell_and_msg(cell, exec_reply_content) +nbclient.exceptions.CellExecutionError: An error occurred while executing the following cell: +------------------ +import numpy as np +import matplotlib.pyplot as plt +from IPython.display import clear_output, display +import time + +np.random.seed(0) +n = 40 +y_real = 5 +frame = 50 + +x = np.arange(1, n+1) +# 随机偏移 +bias = 1 - 2 * np.random.rand(n) +# 数据点 +y_test = y_real + bias + +# 创建图像和坐标轴对象 +fig, ax = plt.subplots(figsize=(14, 8)) +ax.set_facecolor('w') + +# 拟合的曲线 +y_appr = y_real - 1 +for i in range(frame): + ax.clear() + + # 绘制虚线 + for j in range(n): + ax.plot([x[j], x[j]], [y_test[j], y_appr], linestyle='--', linewidth=0.5, color='gray') + + # 绘制散点图 + scatter = ax.scatter(x, y_test, color='b', facecolors='yellow', s=200) + + # 绘制回归线 + ax.axhline(y=y_appr, color='r') + + # 计算误差 + Rn = np.sum((y_appr - y_test)**2) + + # 设置坐标轴范围和标签 + ax.set_xlim(0, n+1) + ax.set_ylim(y_real-2, y_real+1.5) + ax.set_xlabel('x') + ax.set_ylabel('y') + + # 设置标题 + ax.set_title('orinary least squares'.format(Rn, y_appr)) + ax.text(0.05, 0.1, '$R_n$={:.2f} \n $y$={:.2f}'.format(Rn, y_appr), transform=ax.transAxes, + fontsize=12, fontweight='bold', color='black') + + # 清除上一帧的图像 + clear_output(wait=True) + + # 显示当前帧的图像 + display(fig) + + # 暂停一段时间 + time.sleep(0.1) + + # 更新预测值 + y_appr += 1.5/frame + +plt.close() +------------------ + + +--------------------------------------------------------------------------- +ModuleNotFoundError Traceback (most recent call last) +Cell In[1], line 1 +----> 1 import numpy as np + 2 import matplotlib.pyplot as plt + 3 from IPython.display import clear_output, display + +ModuleNotFoundError: No module named 'numpy' + diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 7e821e4..0000000 --- a/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -jupyter-book -matplotlib -numpy diff --git a/_build/html/search.html b/search.html similarity index 100% rename from _build/html/search.html rename to search.html diff --git a/_build/html/searchindex.js b/searchindex.js similarity index 94% rename from _build/html/searchindex.js rename to searchindex.js index b2f1ec6..df99b22 100644 --- a/_build/html/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["README", "docs/\u6700\u5c0f\u4e8c\u4e58\u6cd5", "docs/\u673a\u5668\u5b66\u4e60\u4efb\u52a1"], "filenames": ["README.md", "docs/\u6700\u5c0f\u4e8c\u4e58\u6cd5.ipynb", "docs/\u673a\u5668\u5b66\u4e60\u4efb\u52a1.ipynb"], "titles": ["introduction-to-machine-learning", "\u6700\u5c0f\u4e8c\u4e58\u6cd5", "\u5206\u7c7b"], "terms": {"\u673a\u5668\u5b66\u4e60\u5165\u95e8": 0, "\u666e\u901a\u6700\u5c0f\u4e8c\u4e58\u6cd5": 1, "ordinari": 1, "least": 1, "squar": 1, "1": 1, "2": 1, "\u662f\u4e00\u79cd\u6570\u5b66\u4f18\u5316\u65b9\u6cd5": 1, "\u53c8\u79f0\u6700\u5c0f\u5e73\u65b9\u6cd5": 1, "1801\u5e74": 1, "\u610f\u5927\u5229\u5929\u6587\u5b66\u5bb6\u6731\u8d5b\u666e": 1, "\u76ae\u4e9a\u9f50\u53d1\u73b0\u4e86\u7b2c\u4e00\u9897\u5c0f\u884c\u661f\u8c37\u795e\u661f": 1, "\u7ecf\u8fc740\u5929\u7684\u8ddf\u8e2a\u89c2\u6d4b\u540e": 1, "\u7531\u4e8e\u8c37\u795e\u661f\u8fd0\u884c\u81f3\u592a\u9633\u80cc\u540e": 1, "\u4f7f\u5f97\u76ae\u4e9a\u9f50\u5931\u53bb\u4e86\u8c37\u795e\u661f\u7684\u4f4d\u7f6e": 1, "\u968f\u540e\u5168\u4e16\u754c\u7684\u79d1\u5b66\u5bb6\u5229\u7528\u76ae\u4e9a\u9f50\u7684\u89c2\u6d4b\u6570\u636e\u5f00\u59cb\u5bfb\u627e\u8c37\u795e\u661f": 1, "\u4f46\u662f\u6839\u636e\u5927\u591a\u6570\u4eba\u8ba1\u7b97\u7684\u7ed3\u679c\u6765\u5bfb\u627e\u8c37\u795e\u661f\u90fd\u6ca1\u6709\u7ed3\u679c": 1, "\u53ea\u6709\u65f6\u5e7424\u5c81\u7684\u9ad8\u65af": 1, "1777": 1, "1855": 1, "\u6240\u8ba1\u7b97\u7684\u8c37\u795e\u661f\u7684\u8f68\u9053": 1, "\u88ab\u5965\u5730\u5229\u5929\u6587\u5b66\u5bb6\u6d77\u56e0\u91cc\u5e0c": 1, "\u5965\u5c14\u4f2f\u65af\u7684\u89c2\u6d4b\u6240\u8bc1\u5b9e": 1, "\u4f7f\u5929\u6587\u754c\u4ece\u6b64\u53ef\u4ee5\u9884\u6d4b\u5230\u8c37\u795e\u661f\u7684\u7cbe\u786e\u4f4d\u7f6e": 1, "\u540c\u6837\u7684\u65b9\u6cd5\u4e5f\u4ea7\u751f\u4e86\u54c8\u96f7\u5f57\u661f\u7b49\u5f88\u591a\u5929\u6587\u5b66\u6210\u679c": 1, "\u9ad8\u65af\u4f7f\u7528\u7684\u65b9\u6cd5\u5c31\u662f\u6700\u5c0f\u4e8c\u4e58\u6cd5": 1, "\u8be5\u65b9\u6cd5\u53d1\u8868\u4e8e1809\u5e74\u4ed6\u7684\u8457\u4f5c": 1, "\u5929\u4f53\u8fd0\u52a8\u8bba": 1, "\u4e2d": 1, "\u5176\u5b9e\u65e9\u57281805": 1, "\u6cd5\u56fd\u6570\u5b66\u5bb6\u52d2\u8ba9\u5fb7": 1, "legendr": 1, "adrien": 1, "mari": 1, "\u5c31\u5728\u5176\u8457\u4f5c": 1, "\u8ba1\u7b97\u6167\u661f\u8f68\u9053\u7684\u65b0\u65b9\u6cd5": 1, "\u4e2d\u63d0\u51fa\u4e86": 1, "\u52d2\u8ba9\u5fb7": 1, "1752": 1, "1833": 1, "\u5e38\u88ab\u4eba\u620f\u79f0\u4e3a": 1, "\u8fc7\u6e21\u6027\u79d1\u5b66\u5bb6": 1, "3": 1, "\u56e0\u4e3a\u4ed6\u7684\u6210\u5c31\u5f88\u5feb\u88ab\u522b\u4eba\u63a8\u7ffb\u6216\u8005\u88ab\u66f4\u6709\u5929\u8d4b\u7684\u4eba\u8d85\u8d8a": 1, "4": 1, "\u6bd4\u5982": 1, "\u6700\u65e9\u7531\u6b27\u62c9\u548c\u52d2\u8ba9\u5fb7\u63d0\u51fa\u7684\u4e8c\u6b21\u4e92\u53cd\u5f8b": 1, "\u52d2\u8ba9\u5fb7\u57281798\u5e74\u6574\u7406\u7684": 1, "\u6570\u8bba\u8bb2\u4e49": 1, "\u4e2d\u7ed9\u51fa\u4e86\u8bc1\u660e": 1, "\u4f46\u5f88\u5feb\u5c31\u88ab\u9ad8\u65af\u627e\u5230\u4e86\u6f0f\u6d1e\u5e76\u5426\u5b9a\u4e86": 1, "\u4e4b\u540e\u53c8\u7d2f\u8ba1\u7ed9\u51fa\u4e86\u81f3\u5c117\u79cd\u4e0d\u540c\u8bc1\u6cd5": 1, "\u8fd9\u8ba9\u52d2\u8ba9\u5fb7\u5f88\u53d7\u4f24": 1, "\u800c\u4e14\u81ea\u5df1\u4e5f\u65e0\u529b\u53cd\u9a73": 1, "\u66f4\u81f4\u547d\u7684\u662f": 1, "\u968f\u7740\u9ad8\u65af\u7ecf\u5178\u5de8\u8457": 1, "\u7b97\u672f\u63a2\u7a76": 1, "\u57281801\u5e74\u7684\u51fa\u7248": 1, "\u52d2\u8ba9\u5fb7\u7684": 1, "\u88ab\u53d6\u4ee3": 1, "\u751a\u81f3\u5176\u4ed6\u7684\u6570\u8bba\u8457\u4f5c\u4e5f\u88ab\u9057\u5fd8\u4e86": 1, "\u6700\u65e9\u7531\u52d2\u8ba9\u5fb7\u53d1\u8868\u4e8e1805\u5e74\u7684\u8bba\u6587\u4e2d": 1, "\u4f46\u662f\u8fd9\u6b21\u5c0f\u9ad8\u65af\u53c8\u51fa\u6765\u8ba9\u52d2\u8ba9\u5fb7": 1, "\u53d7\u4f24\u4e86": 1, "\u9ad8\u65af\u53d1\u6587\u8bf4\u4ed6\u65e9\u57281795\u5e74\u5c31\u53d1\u73b0\u4e86\u8fd9\u4e2a\u65b9\u6cd5": 1, "\u5e76\u57281801\u5e74\u7ed3\u5408\u6b64\u65b9\u6cd5\u8ba1\u7b97\u51fa\u4e86\u8c37\u795e\u661f\u7684\u8fd0\u52a8\u8f68\u8ff9": 1, "\u52d2\u8ba9\u5fb7\u8fd9\u4e00\u6b21\u771f\u6709\u4e9b\u751f\u6c14\u4e86": 1, "\u600e\u4e48\u4ec0\u4e48\u90fd\u662f\u4f60\u5148\u53d1\u73b0\u7684": 1, "\u8fd8\u6709\u5b8c\u6ca1\u5b8c\u4e86": 1, "\u4e24\u4eba\u4e3a\u4e86\u4f18\u5148\u6743\u4e89\u8bba\u4e86\u597d\u51e0\u5e74": 1, "\u540e\u6765\u9ad8\u65af\u5c06\u6700\u5c0f\u4e8c\u4e58\u6cd5\u4e0e\u6982\u7387\u8bba\u76f8\u7ed3\u5408\u63d0\u51fa\u4e86\u6b63\u6001\u5206\u5e03": 1, "\u7531\u4e8e\u8fd9\u4e2a\u6982\u5ff5\u7684\u63d0\u51fa": 1, "\u9ad8\u65af\u53c8\u8d70\u5728\u4e86\u52d2\u8ba9\u5fb7\u524d\u9762": 1, "18\u4e16\u7eaa\u540e\u534a\u53f6\u523020\u4e16\u7eaa\u521d\u662f\u6570\u5b66\u53f2\u4e0a\u7684\u8d85\u82f1\u96c4\u65f6\u4ee3": 1, "\u6b64\u65f6\u7684\u6b27\u6d32\u4ee5\u6cd5\u56fd\u4e3a\u4ee3\u8868\u51fa\u73b0\u4e86\u5927\u6279\u7684\u9876\u7ea7\u6570\u5b66\u5bb6": 1, "\u6211\u4eec\u6765\u770b\u770b\u8fd9\u4e9b\u719f\u6089\u7684\u540d\u5b57": 1, "\u67ef\u897f": 1, "cauchi": 1, "1789": 1, "1857": 1, "\u62c9\u683c\u6717\u65e5": 1, "lagrang": 1, "1736": 1, "1813": 1, "\u62c9\u666e\u62c9\u65af": 1, "laplac": 1, "1749": 1, "1827": 1, "\u8499\u65e5": 1, "mong": 1, "1746": 1, "1818": 1, "\u6cca\u677e": 1, "poisson": 1, "1781": 1, "1840": 1, "\u5085\u91cc\u53f6": 1, "fourier": 1, "1768": 1, "1830": 1, "\u8fd9\u4e9b\u6570\u5b66\u5bb6\u90fd\u4e3a\u6cd5\u56fd\u7684\u653f\u6cbb\u548c\u79d1\u5b66\u505a\u4e86\u5de8\u5927\u8d21\u732e": 1, "\u5f88\u591a\u4eba\u751a\u81f3\u4e8e\u662f\u5e08\u5f92\u6216\u670b\u53cb\u7684\u5173\u7cfb": 1, "\u52d2\u8ba9\u5fb7\u5728\u8fd9\u4e2a\u7fa4\u661f\u7480\u74a8\u7684\u65f6\u4ee3": 1, "\u4ed6\u7684\u5149\u8292\u88ab\u63a9\u76d6\u4e86": 1, "\u5982\u679c\u65e9\u751f50\u5e74\u6216\u8005\u665a\u751f50\u5e74\u90fd\u5c06\u662f\u5f53\u65f6\u6570\u5b66\u754c\u6700\u8000\u773c\u7684\u660e\u661f": 1, "\u4f46\u5b9e\u53d8\u51fd\u6570\u4e4b\u7236\u52d2\u8ba9\u5fb7\u5728\u6570\u5b66": 1, "\u7269\u7406": 1, "\u5929\u6587\u7b49\u591a\u65b9\u9762\u7684\u6210\u5c31\u5fc5\u5b9a\u662f\u540d\u5782\u9752\u53f2\u7684": 1, "\u4ece\u5c0f\u5b66\u4e8c\u5e74\u6d4b\u91cf\u6570\u5b66\u8bfe\u672c\u8fb9\u957f\u5f00\u59cb": 1, "\u6570\u5b66\u8001\u5e08\u5c31\u544a\u8bc9\u6211\u4eec\u8981\u591a\u6b21\u6d4b\u91cf\u53d6\u5e73\u5747\u503c": 1, "\u5177\u4f53\u64cd\u4f5c\u5c31\u662f\u5c06\u51e0\u6b21\u6d4b\u91cf\u7ed3\u679c\u52a0\u8d77\u6765\u9664\u4ee5\u6d4b\u91cf\u6b21\u6570": 1, "bar": 1, "y": 1, "frac": 1, "y_1": 1, "y_2": 1, "cdot": 1, "y_6": 1, "sum_": 1, "i": 1, "y_i": 1, "\u8fd9\u4e48\u505a\u57fa\u4e8e\u5982\u4e0b\u91cd\u8981\u4e8b\u5b9e\u4e0e\u5047\u8bbe": 1, "\u771f\u5b9e\u503c\u662f\u65e0\u6cd5\u5f97\u5230\u7684": 1, "\u5355\u6b21\u7684\u6d4b\u91cf\u8bef\u5dee\u662f\u968f\u673a\u7684": 1, "\u4e3a\u4ec0\u4e48\u4e0d\u7528\u5176\u4ed6\u7edf\u8ba1\u503c": 1, "\u51e0\u4f55\u5e73\u5747": 1, "\u8c03\u548c\u5e73\u5747": 1, "\u4ee3\u8868\u5e73\u5747\u6548\u679c": 1, "\u65e2\u7136\u6d4b\u91cf\u7684\u8bef\u5dee\u662f\u968f\u673a\u7684": 1, "\u90a3\u4e48\u8bef\u5dee\u5e94\u8be5\u56f4\u7ed5\u771f\u5b9e\u503c\u4e0a\u4e0b\u968f\u673a\u6ce2\u52a8": 1, "\u901a\u5e38\u4f1a\u5047\u8bbe\u89c2\u6d4b\u8bef\u5dee\u7b26\u5408\u6b63\u6001\u5206\u5e03": 1, "\u6240\u4ee5\u7b97\u672f\u5e73\u5747\u503c\u4ee3\u8868\u5e73\u5747\u6548\u679c": 1, "\u4e3a\u4ec0\u4e48\u4e0d\u7528\u7edd\u5bf9\u8bef\u5dee\u800c\u8981\u7528\u5e73\u65b9\u8bef\u5dee": 1, "\u5373": 1, "rightarrow": 1, "\u5f3a\u8c03\u5927\u8bef\u5dee": 1, "\u5e73\u65b9\u8bef\u5dee\u7684\u5e73\u5747\u503c\u5bf9\u8f83\u5927\u7684\u8bef\u5dee\u66f4\u654f\u611f": 1, "\u89e3\u6790\u6027\u8d28": 1, "\u4f7f\u7528\u5e73\u65b9\u8bef\u5dee\u53ef\u4ee5\u66f4\u65b9\u4fbf\u5730\u8fdb\u884c\u5206\u6790\u548c\u6c42\u5bfc": 1, "\u4ece\u800c\u627e\u5230\u51fd\u6570\u503c\u6700\u5c0f\u7684\u6781\u503c\u70b9": 1, "\u5047\u8bbe\u67d0\u6b21\u6d4b\u91cf\u6709n\u4e2a\u89c2\u6d4b": 1, "\u6d4b\u91cf": 1, "\u503c": 1, "\u90a3\u4e48\u6d4b\u91cf\u503c\u4e0e\u771f\u503c\u4e4b\u95f4\u7684\u8bef\u5dee\u5e73\u65b9\u548c": 1, "r_n": 1, "\u4e3a": 1, "n": 1, "\u6ce8\u610f\u6b64\u65f6\u53ea\u6709\u771f\u503cy\u662f\u4e0d\u77e5\u9053\u7684": 1, "\u6211\u4eec\u77e5\u9053yi\u56f4\u7ed5y\u503c\u968f\u673a\u5730\u4e0a\u4e0b\u6ce2\u52a8": 1, "\u95ee\u9898\u5c31\u53d8\u6210\u4e86\u5982\u4f55\u6839\u636e\u5df2\u6709\u6570\u636e\u786e\u5b9ay\u7684\u503c": 1, "\u4e3e\u4f8b\u8bf4\u660e": 1, "\u5982\u4e0b\u56fe\u6240\u793a": 1, "\u9ec4\u8272\u6570\u636e\u4e3a\u89c2\u6d4b\u503c": 1, "\u5176\u7b97\u6570\u5e73\u5747\u503c\u4e3a5": 1, "\u7ea2\u8272\u6a2a\u7ebf\u4e3a\u771f\u503c": 1, "\u56e0\u4e3a\u771f\u503c\u4e0d\u786e\u5b9a": 1, "\u6240\u4ee5\u8ba9\u771f\u503c\u5728\u6570\u636e\u95f4\u6ce2\u52a8\u4ee5\u5bfb\u627e\u89c4\u5f8b": 1, "\u53d1\u73b0\u5f53\u771f\u503c\u7b49\u4e8e\u7b97\u6570\u5e73\u5747\u503c\u65f6": 1, "\u8bef\u5dee\u5e73\u65b9\u548c\u6700\u5c0f": 1, "\u4ee5\u6b64\u4f5c\u4e3a\u771f\u503c": 1, "\u8fd9\u662f\u81ea\u6d3d\u7684": 1, "\u4e5f\u86ee\u7b26\u5408\u76f4\u89c9": 1, "\u56e0\u4e3a\u5982\u679c\u8bef\u5dee\u662f\u968f\u673a\u7684": 1, "\u8bef\u5dee\u5e94\u8be5\u56f4\u7ed5\u7740\u771f\u503c": 1, "\u771f\u503c\u5e94\u8be5\u4f7f\u5f97\u8bef\u5dee\u5e73\u65b9\u548c\u6700\u5c0f": 1, "import": 1, "numpi": 1, "np": 1, "matplotlib": 1, "pyplot": 1, "plt": 1, "from": 1, "ipython": 1, "displai": 1, "clear_output": 1, "time": 1, "random": 1, "seed": 1, "0": 1, "40": 1, "y_real": 1, "frame": 1, "50": 1, "x": 1, "arang": 1, "\u968f\u673a\u504f\u79fb": 1, "bia": 1, "rand": 1, "\u6570\u636e\u70b9": 1, "y_test": 1, "\u521b\u5efa\u56fe\u50cf\u548c\u5750\u6807\u8f74\u5bf9\u8c61": 1, "fig": 1, "ax": 1, "subplot": 1, "figsiz": 1, "14": 1, "8": 1, "set_facecolor": 1, "w": 1, "\u62df\u5408\u7684\u66f2\u7ebf": 1, "y_appr": 1, "rang": 1, "clear": 1, "\u7ed8\u5236\u865a\u7ebf": 1, "j": 1, "plot": 1, "linestyl": 1, "linewidth": 1, "color": 1, "grai": 1, "\u7ed8\u5236\u6563\u70b9\u56fe": 1, "scatter": 1, "b": 1, "facecolor": 1, "yellow": 1, "s": 1, "200": 1, "\u7ed8\u5236\u56de\u5f52\u7ebf": 1, "axhlin": 1, "r": 1, "\u8ba1\u7b97\u8bef\u5dee": 1, "rn": 1, "sum": 1, "\u8bbe\u7f6e\u5750\u6807\u8f74\u8303\u56f4\u548c\u6807\u7b7e": 1, "set_xlim": 1, "set_ylim": 1, "set_xlabel": 1, "set_ylabel": 1, "\u8bbe\u7f6e\u6807\u9898": 1, "set_titl": 1, "orinari": 1, "format": 1, "text": 1, "05": 1, "2f": 1, "transform": 1, "transax": 1, "fontsiz": 1, "12": 1, "fontweight": 1, "bold": 1, "black": 1, "\u6e05\u9664\u4e0a\u4e00\u5e27\u7684\u56fe\u50cf": 1, "wait": 1, "true": 1, "\u663e\u793a\u5f53\u524d\u5e27\u7684\u56fe\u50cf": 1, "\u6682\u505c\u4e00\u6bb5\u65f6\u95f4": 1, "sleep": 1, "\u66f4\u65b0\u9884\u6d4b\u503c": 1, "close": 1, "\u5bf9\u4e8e": 1, "\u6c42": 1, "\u4e00\u9636\u5bfc\u6570": 1, "dr_n": 1, "dy": 1, "d": 1, "\u4f7f\u7528\u94fe\u5f0f\u6cd5\u5219": 1, "\u6211\u4eec\u53ef\u4ee5\u5c06\u6c42\u548c\u7b26\u53f7\u4e2d\u7684\u6bcf\u4e00\u9879\u5206\u522b\u6c42\u5bfc": 1, "\u7136\u540e\u5c06\u5b83\u4eec\u52a0\u8d77\u6765": 1, "\u4e8c\u9636\u5bfc\u6570": 1, "2r_n": 1, "left": 1, "right": 1, "\u518d\u6b21\u5e94\u7528\u94fe\u5f0f\u6cd5\u5219": 1, "\u6211\u4eec\u53ef\u4ee5\u5f97\u5230": 1, "2n": 1, "\u901a\u8fc7\u4e00\u9636\u5bfc\u6570\u4e3a0\u7684\u70b9\u6765\u5bfb\u627ern\u7684\u6781\u5c0f\u503c\u70b9": 1, "\u659c\u7387\u4e3a0": 1, "\u65e0\u53d8\u5316": 1, "\u800c\u901a\u8fc7\u4e8c\u9636\u5bfc\u6570\u7684\u6b63\u8d1f\u6027\u6765\u786e\u8ba4\u6781\u5c0f\u503c\u70b9\u7684\u6027\u8d28": 1, "\u5373\u5224\u65ad\u66f2\u7ebf\u5728\u8be5\u70b9\u5904\u662f\u5426\u5411\u4e0a\u5f2f\u66f2": 1, "\u6b63": 1, "\u659c\u7387\u53d8\u5927": 1, "\u4e0a\u5f2f\u66f2": 1, "\u8d1f": 1, "\u659c\u7387\u53d8\u5c0f": 1, "\u4e0b\u5f2f\u66f2": 1, "\u6211\u4eec\u6765\u89e3\u4e00\u9636\u5bfc\u6570\u4e3a0\u7684\u65b9\u7a0b": 1, "\u4ee5\u627e\u5230\u4f7f\u5f97rn\u53d6\u5f97\u6781\u5c0f\u503c\u7684y\u7684\u503c": 1, "\u9996\u5148": 1, "\u6211\u4eec\u8bbe\u7f6e\u4e00\u9636\u5bfc\u6570\u4e3a0": 1, "\u5c06\u7b49\u5f0f\u4e24\u8fb9\u9664\u4ee52": 1, "\u5c55\u5f00\u6c42\u548c\u7b26\u53f7": 1, "ny": 1, "\u5c06\u7b49\u5f0f\u91cd\u65b0\u6392\u5217": 1, "\u6700\u540e": 1, "\u901a\u8fc7\u9664\u4ee5n": 1, "\u6211\u4eec\u53ef\u4ee5\u5f97\u5230y\u7684\u503c": 1, "\u8fd9\u4e2a\u65b9\u7a0b\u8868\u793a\u4e86\u4f7f\u5f97rn\u53d6\u5f97\u6781\u5c0f\u503c\u7684y\u7684\u503c": 1, "\u5177\u4f53\u6765\u8bf4": 1, "y\u7684\u503c\u7b49\u4e8ey_i\u7684\u5e73\u5747\u503c": 1, "\u4e5f\u5c31\u662f\u8bf4\u7b97\u672f\u5e73\u5747\u6570\u53ef\u4ee5\u8ba9\u8bef\u5dee": 1, "\u6b27\u51e0\u91cc\u5f97\u8303\u6570\u610f\u4e49\u4e0b": 1, "\u6700\u5c0f": 1, "\u7b97\u6570\u5e73\u5747\u503c\u53ea\u662f\u6700\u5c0f\u4e8c\u4e58\u6cd5\u5e94\u7528\u7684\u7279\u4f8b": 1, "\u53ef\u4ee5\u770b\u4f5c\u662f\u4e00\u7ec4\u6570\u636e\u76840\u9636\u62df\u5408": 1, "\u591a\u9879\u5f0f\u62df\u5408\u4ee5\u53ca\u51fd\u6570\u903c\u8fd1\u5c31\u662f\u66f4\u5e7f\u6cdb\u4e00\u70b9\u7684\u5e94\u7528\u4e86": 1, "\u6781\u5927\u4f3c\u7136\u4f30\u8ba1": 1, "7": 1, "\u6839\u636e\u6781\u5927\u4f3c\u7136\u4f30\u8ba1\u7684\u601d\u60f3": 1, "\u6211\u4eec\u662f\u57fa\u4e8e\u89c2\u6d4b\u5230\u7684\u6837\u672c\u6570\u636e\u4fe1\u606f": 1, "\u5bfb\u627e\u6700\u6709\u53ef\u80fd\u4ea7\u751f\u8fd9\u4e9b\u89c2\u6d4b\u6570\u636e\u7684\u53c2\u6570\u503c": 1, "\u5177\u4f53\u800c\u8a00": 1, "\u6211\u4eec\u5e0c\u671b\u627e\u5230\u4f7f\u5f97\u6837\u672c\u6570\u636e\u51fa\u73b0\u7684\u6982\u7387\u6700\u5927\u7684\u53c2\u6570\u503c": 1, "\u4e5f\u5c31\u662f\u8bf4": 1, "\u901a\u8fc7\u8c03\u6574\u53c2\u6570\u503c\u6765\u4f7f\u5f97\u8be5\u6982\u7387\u5206\u5e03\u4e0e\u89c2\u6d4b\u6570\u636e\u6700\u5339\u914d": 1, "\u4e3a\u4e86\u5b9e\u73b0\u8fd9\u4e00\u76ee\u6807": 1, "\u6211\u4eec\u6784\u5efa\u4e86\u4e00\u4e2a\u5173\u4e8e\u53c2\u6570\u7684\u4f3c\u7136\u51fd\u6570": 1, "likelihood": 1, "function": 1, "\u5b83\u8868\u793a\u5728\u7ed9\u5b9a\u53c2\u6570\u503c\u4e0b\u89c2\u6d4b\u6570\u636e\u51fa\u73b0\u7684\u6982\u7387": 1, "\u7136\u540e": 1, "\u6211\u4eec\u901a\u8fc7\u6700\u5927\u5316\u4f3c\u7136\u51fd\u6570\u6765\u6c42\u89e3\u6700\u6709\u53ef\u80fd\u7684\u53c2\u6570\u503c": 1, "\u4ee5\u4e00\u5f00\u59cb\u7684\u4e66\u672c\u8fb9\u957f\u6d4b\u91cf\u4e3a\u4f8b": 1, "\u8bbe\u6d4b\u91cf\u8bef\u5dee\u4e3a\u968f\u673a\u53d8\u91cf": 1, "epsilon_i": 1, "\u670d\u4ece\u672a\u77e5\u7684\u6982\u7387\u5206\u5e03": 1, "p": 1, "epsilon": 1, "\u8fdb\u800c\u5f97\u5230\u4f3c\u7136\u51fd\u6570": 1, "l": 1, "epsilon_1": 1, "epsilon_2": 1, "epsilon_n": 1, "y_n": 1, "prod_": 1, "\u6c42\u89e3\u8fc7\u7a0b\u4e2d\u53ef\u4ee5\u901a\u8fc7\u627e\u5230\u9a7b\u503c\u70b9\u6765\u5f97\u5230\u6781\u503c": 1, "\u9a7b\u503c\u70b9": 1, "stationari": 1, "point": 1, "\u662f\u51fd\u6570\u5728\u67d0\u4e2a\u70b9\u4e0a\u7684\u5bfc\u6570\u4e3a\u96f6\u6216\u4e0d\u5b58\u5728\u7684\u70b9": 1, "\u5728\u9a7b\u503c\u70b9\u5904": 1, "\u51fd\u6570\u7684\u5bfc\u6570\u7b49\u4e8e\u96f6\u6216\u8005\u51fd\u6570\u5728\u8be5\u70b9\u7684\u5bfc\u6570\u4e0d\u5b58\u5728": 1, "\u9a7b\u503c\u70b9\u5305\u62ec\u6781\u5c0f\u503c\u70b9": 1, "\u6781\u5927\u503c\u70b9\u548c\u62d0\u70b9": 1, "\u5728\u6781\u5c0f\u503c\u70b9\u548c\u6781\u5927\u503c\u70b9": 1, "\u51fd\u6570\u5728\u8be5\u70b9\u7684\u5bfc\u6570\u4e3a\u96f6": 1, "\u800c\u5728\u62d0\u70b9": 1, "\u51fd\u6570\u5728\u8be5\u70b9\u7684\u5bfc\u6570\u4e0d\u5b58\u5728": 1, "\u5373\u51fd\u6570\u7684\u66f2\u7ebf\u5728\u8be5\u70b9\u5904\u53d1\u751f\u5f2f\u66f2": 1, "\u5982\u679c\u6700\u5c0f\u4e8c\u4e58\u662f\u5bf9\u7684": 1, "\u90a3\u4e48": 1, "_": 1, "\u63a8\u65ad\u7684\u8fc7\u7a0b": 1, "\u901a\u8fc7\u6781\u5927\u4f3c\u7136\u4f30\u8ba1\u7684\u601d\u60f3\u6765\u786e\u5b9a\u672a\u77e5\u7684\u6982\u7387\u5206\u5e03": 1, "\u8fd9\u662f\u4e00\u79cd\u7edf\u8ba1\u63a8\u65ad\u95ee\u9898": 1, "\u5728\u8fdb\u884c\u63a8\u65ad\u65f6": 1, "\u6211\u4eec\u901a\u5e38\u9700\u8981\u5047\u8bbe\u6982\u7387\u5206\u5e03\u7684\u5f62\u5f0f\u6216\u8005\u7ed9\u5b9a\u67d0\u4e9b\u5047\u8bbe\u6761\u4ef6": 1, "\u5bf9\u4e8e\u672a\u77e5\u7684\u6982\u7387\u5206\u5e03": 1, "\u6211\u4eec\u53ef\u4ee5\u5c1d\u8bd5\u5047\u8bbe\u5b83\u5c5e\u4e8e\u67d0\u4e2a\u53c2\u6570\u5316\u7684\u5206\u5e03\u65cf": 1, "\u4f8b\u5982\u6b63\u6001\u5206\u5e03": 1, "\u6307\u6570\u5206\u5e03\u7b49": 1, "\u4e00\u79cd\u5e38\u89c1\u7684\u65b9\u6cd5\u662f\u4f7f\u7528\u6700\u5927\u4f3c\u7136\u4f30\u8ba1\u6765\u4f30\u8ba1\u53c2\u6570\u5316\u5206\u5e03\u4e2d\u7684\u53c2\u6570\u503c": 1, "\u4ece\u800c\u786e\u5b9a\u672a\u77e5\u7684\u6982\u7387\u5206\u5e03": 1, "\u5177\u4f53\u6b65\u9aa4\u5982\u4e0b": 1, "\u5047\u8bbe\u6982\u7387\u5206\u5e03": 1, "\u5c5e\u4e8e\u4e00\u4e2a\u5df2\u77e5\u7684\u53c2\u6570\u5316\u5206\u5e03\u65cf": 1, "\u5e76\u5047\u8bbe\u53c2\u6570\u4e3a": 1, "theta": 1, "\u6784\u5efa\u4f3c\u7136\u51fd\u6570": 1, "\u5b83\u8868\u793a\u89c2\u6d4b\u6570\u636e\u51fa\u73b0\u7684\u6982\u7387\u5173\u4e8e\u53c2\u6570": 1, "\u7684\u51fd\u6570": 1, "\u5728\u8fd9\u91cc": 1, "\u89c2\u6d4b\u6570\u636e\u662f\u6837\u672c\u8bef\u5dee": 1, "\u5bf9\u4f3c\u7136\u51fd\u6570": 1, "\u53d6\u5bf9\u6570\u5e76\u6c42\u8d1f": 1, "\u5f97\u5230\u8d1f\u5bf9\u6570\u4f3c\u7136\u51fd\u6570": 1, "log": 1, "\u6700\u5927\u5316\u8d1f\u5bf9\u6570\u4f3c\u7136\u51fd\u6570": 1, "\u5373\u901a\u8fc7\u5bf9\u53c2\u6570": 1, "\u8fdb\u884c\u4f18\u5316\u6765\u627e\u5230\u4f7f\u5f97\u89c2\u6d4b\u6570\u636e\u51fa\u73b0\u6982\u7387\u6700\u5927\u5316\u7684\u53c2\u6570\u503c": 1, "\u8bbe": 1, "\u4e3a\u6d4b\u91cf\u8bef\u5dee": 1, "\u7531\u4e8e": 1, "\u662f\u72ec\u7acb\u540c\u5206\u5e03\u7684": 1, "\u90a3\u4e48\u6839\u636e\u4e2d\u5fc3\u6781\u9650\u5b9a\u7406": 1, "\u8bef\u5dee\u7684\u5206\u5e03\u5c31\u5e94\u8be5\u662f\u6b63\u6001\u5206\u5e03": 1, "\u6211\u4eec\u5047\u8bbe": 1, "\u670d\u4ece\u6b63\u6001\u5206\u5e03": 1, "mu": 1, "sigma": 1, "\u5176\u4e2d": 1, "\u662f\u5747\u503c": 1, "\u662f\u6807\u51c6\u5dee": 1, "\u6211\u4eec\u5e0c\u671b\u627e\u5230\u4f7f\u5f97\u89c2\u6d4b\u6570\u636e\u51fa\u73b0\u7684\u6982\u7387\u6700\u5927\u5316\u7684": 1, "\u548c": 1, "\u6211\u4eec\u53ef\u4ee5\u5c06\u4f3c\u7136\u51fd\u6570\u5199\u6210": 1, "sqrt": 1, "pi": 1, "e": 1, "\u4e3a\u4e86\u6700\u5927\u5316\u4f3c\u7136\u51fd\u6570": 1, "\u6211\u4eec\u53ef\u4ee5\u53d6\u5bf9\u6570\u5e76\u5c06\u95ee\u9898\u8f6c\u5316\u4e3a\u6700\u5c0f\u5316\u8d1f\u5bf9\u6570\u4f3c\u7136\u51fd\u6570": 1, "\u5373\u6c42\u89e3\u4ee5\u4e0b\u65b9\u7a0b": 1, "\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u5bf9": 1, "\u5206\u522b\u6c42\u504f\u5bfc\u6570\u5e76\u4ee4\u5bfc\u6570\u7b49\u4e8e\u96f6": 1, "\u6765\u6c42\u89e3\u6700\u5927\u4f3c\u7136\u4f30\u8ba1\u7684\u53c2\u6570": 1, "\u5bf9\u4e8e\u6b63\u6001\u5206\u5e03": 1, "\u6700\u5927\u4f3c\u7136\u4f30\u8ba1\u5c06\u7ed9\u51fa\u5747\u503c": 1, "\u548c\u6807\u51c6\u5dee": 1, "\u7684\u4f30\u8ba1\u503c": 1, "\u6700\u5927\u4f3c\u7136\u4f30\u8ba1\u4f1a\u7b49\u4ef7\u4e8e\u6700\u5c0f\u5316\u6b8b\u5dee\u5e73\u65b9\u548c": 1, "\u56e0\u4e3a\u6700\u5927\u5316\u89c2\u6d4b\u6570\u636e\u7684\u8054\u5408\u6982\u7387\u5c31\u7b49\u4ef7\u4e8e\u6700\u5c0f\u5316\u8d1f\u5bf9\u6570\u4f3c\u7136\u51fd\u6570": 1, "\u800c\u8d1f\u5bf9\u6570\u4f3c\u7136\u51fd\u6570\u4e0e\u6b8b\u5dee\u5e73\u65b9\u548c\u6210\u6b63\u6bd4": 1, "\u6700\u5c0f\u4e8c\u4e58\u6cd5\u767e\u5ea6\u767e\u79d1": 1, "http": 1, "baik": 1, "baidu": 1, "com": 1, "item": 1, "2522346": 1, "fr": 1, "ge_ala": 1, "\u591a\u65b9\u4f4d\u7406\u89e3\u6700\u5c0f\u4e8c\u4e58\u6cd5": 1, "\u4ece\u5747\u503c\u5230\u6b63\u6001\u5206\u5e03": 1, "www": 1, "bilibili": 1, "read": 1, "cv11596191": 1, "\u4e00\u4e2a\u751f\u5728\u82f1\u96c4\u65f6\u4ee3": 1, "\u53c8\u88ab\u5e74\u8f7b\u9ad8\u65af\u6c14\u5f97\u53d1\u72c2\u7684\u6570\u5b66\u5bb6": 1, "zhuanlan": 1, "zhihu": 1, "147641642": 1, "\u52d2\u8ba9\u5fb7\u7b80\u4ecb": 1, "\u963f\u5fb7\u5229\u6602": 1, "\u739b\u5229": 1, "\u57c3": 1, "8791520": 1, "\u6700\u5c0f\u4e8c\u4e58\u6cd5\u7684\u6982\u7387\u89e3\u91ca": 1, "blog": 1, "51cto": 1, "u_16146153": 1, "6387070": 1, "\u6700\u5927\u4f3c\u7136\u65b9\u6cd5": 1, "cnblog": 1, "shibalang": 1, "4974583": 1, "html": 1, "\u4e00\u6587\u4e86\u89e3\u6700\u5927\u4f3c\u7136\u4f30\u8ba1": 1, "maximum": 1, "estim": 1, "mp": 1, "weixin": 1, "qq": 1, "__biz": 1, "mzi1mjq2otq3ng": 1, "mid": 1, "2247604343": 1, "idx": 1, "sn": 1, "8659045f8c4279710a205da9303af5e8": 1, "chksm": 1, "e9e051fcde97d8ea1dc8cc716325c4e7c8ce7da52af653e8462039f51caa7ad7703805d18626": 1, "scene": 1, "27": 1, "\u673a\u5668\u5b66\u4e60\u7684\u4efb\u52a1\u5206\u4e3a\u4e00\u4e0b\u51e0\u79cd\u7c7b\u522b": 2, "\u786e\u5b9a\u5bf9\u8c61\u6240\u5c5e\u7684\u7c7b\u522b": 2, "\u5e94\u7528": 2, "\u5783\u573e\u90ae\u4ef6\u68c0\u6d4b": 2, "\u56fe\u50cf\u8bc6\u522b": 2, "\u7b97\u6cd5": 2, "\u68af\u5ea6\u63d0\u5347": 2, "\u6700\u8fd1\u90bb": 2, "\u968f\u673a\u68ee\u6797": 2, "\u903b\u8f91\u56de\u5f52\u7b49\u7b49": 2, "\u9884\u6d4b\u4e0e\u5bf9\u8c61\u76f8\u5173\u7684\u8fde\u7eed\u503c\u7684\u5c5e\u6027": 2, "\u836f\u7269\u53cd\u5e94": 2, "\u80a1\u7968\u4ef7\u683c": 2, "\u5cad\u56de\u5f52\u7b49\u7b49": 2, "\u5c06\u76f8\u4f3c\u5bf9\u8c61\u81ea\u52a8\u5206\u7ec4\u5230\u96c6\u5408\u4e2d": 2, "\u7528\u6237\u5212\u5206": 2, "\u5b9e\u9a8c\u8f93\u51fa\u5206\u7ec4": 2, "k": 2, "mean": 2, "dbscan": 2, "\u5c42\u6b21\u805a\u7c7b\u7b49\u7b49": 2, "\u51cf\u5c11\u8981\u8003\u8651\u7684\u968f\u673a\u53d8\u91cf\u7684\u6570\u91cf": 2, "\u53ef\u89c6\u5316": 2, "\u63d0\u9ad8\u6548\u7387": 2, "pca": 2, "\u7279\u5f81\u9009\u62e9": 2, "\u975e\u8d1f\u77e9\u9635\u5206\u89e3\u7b49\u7b49": 2, "\u6bd4\u8f83": 2, "\u9a8c\u8bc1\u548c\u9009\u62e9\u53c2\u6570\u4ee5\u53ca\u6a21\u578b": 2, "\u7f51\u683c\u641c\u7d22": 2, "\u4ea4\u53c9\u68c0\u9a8c\u7b49\u7b49": 2, "\u8f6c\u6362\u8f93\u5165\u6570\u636e\u5982\u6587\u672c": 2, "\u4fbf\u4e8e\u673a\u5668\u5b66\u4e60\u7b97\u6cd5\u4f7f\u7528": 2, "\u7279\u5f81\u63d0\u53d6\u7b49\u7b49": 2}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"introduct": 0, "machin": 0, "learn": 0, "\u6700\u5c0f\u4e8c\u4e58\u6cd5": 1, "\u9038\u95fb\u8da3\u4e8b": 1, "\u6700\u5c0f\u4e8c\u4e58\u6cd5\u4f18\u5316\u6f14\u793a": 1, "\u8bba\u8bc1": 1, "\u6700\u5c0f\u4e8c\u4e58\u6cd5\u6709\u6781\u5c0f\u503c": 1, "\u6781\u5c0f\u503c\u53ef\u4ee5\u6c42\u5f97\u771f\u5b9e\u503cy": 1, "\u4e14\u5c31\u662f\u6837\u672c\u6570\u636e\u7684\u7b97\u672f\u5e73\u5747\u503c": 1, "\u6269\u5c55": 1, "\u6982\u7387\u89e3\u91ca": 1, "5": 1, "6": 1, "\u53c2\u8003\u6587\u732e": 1, "\u5206\u7c7b": 2, "\u56de\u5f52": 2, "\u805a\u7c7b": 2, "\u964d\u7ef4": 2, "\u6a21\u578b\u9009\u62e9": 2, "\u9884\u5904\u7406": 2}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinxcontrib.bibtex": 9, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["README", "docs/\u6700\u5c0f\u4e8c\u4e58\u6cd5", "docs/\u673a\u5668\u5b66\u4e60\u4efb\u52a1"], "filenames": ["README.md", "docs/\u6700\u5c0f\u4e8c\u4e58\u6cd5.ipynb", "docs/\u673a\u5668\u5b66\u4e60\u4efb\u52a1.ipynb"], "titles": ["introduction-to-machine-learning", "\u6700\u5c0f\u4e8c\u4e58\u6cd5", "\u5206\u7c7b"], "terms": {"\u673a\u5668\u5b66\u4e60\u5165\u95e8": 0, "\u666e\u901a\u6700\u5c0f\u4e8c\u4e58\u6cd5": 1, "ordinari": 1, "least": 1, "squar": 1, "1": 1, "2": 1, "\u662f\u4e00\u79cd\u6570\u5b66\u4f18\u5316\u65b9\u6cd5": 1, "\u53c8\u79f0\u6700\u5c0f\u5e73\u65b9\u6cd5": 1, "1801\u5e74": 1, "\u610f\u5927\u5229\u5929\u6587\u5b66\u5bb6\u6731\u8d5b\u666e": 1, "\u76ae\u4e9a\u9f50\u53d1\u73b0\u4e86\u7b2c\u4e00\u9897\u5c0f\u884c\u661f\u8c37\u795e\u661f": 1, "\u7ecf\u8fc740\u5929\u7684\u8ddf\u8e2a\u89c2\u6d4b\u540e": 1, "\u7531\u4e8e\u8c37\u795e\u661f\u8fd0\u884c\u81f3\u592a\u9633\u80cc\u540e": 1, "\u4f7f\u5f97\u76ae\u4e9a\u9f50\u5931\u53bb\u4e86\u8c37\u795e\u661f\u7684\u4f4d\u7f6e": 1, "\u968f\u540e\u5168\u4e16\u754c\u7684\u79d1\u5b66\u5bb6\u5229\u7528\u76ae\u4e9a\u9f50\u7684\u89c2\u6d4b\u6570\u636e\u5f00\u59cb\u5bfb\u627e\u8c37\u795e\u661f": 1, "\u4f46\u662f\u6839\u636e\u5927\u591a\u6570\u4eba\u8ba1\u7b97\u7684\u7ed3\u679c\u6765\u5bfb\u627e\u8c37\u795e\u661f\u90fd\u6ca1\u6709\u7ed3\u679c": 1, "\u53ea\u6709\u65f6\u5e7424\u5c81\u7684\u9ad8\u65af": 1, "1777": 1, "1855": 1, "\u6240\u8ba1\u7b97\u7684\u8c37\u795e\u661f\u7684\u8f68\u9053": 1, "\u88ab\u5965\u5730\u5229\u5929\u6587\u5b66\u5bb6\u6d77\u56e0\u91cc\u5e0c": 1, "\u5965\u5c14\u4f2f\u65af\u7684\u89c2\u6d4b\u6240\u8bc1\u5b9e": 1, "\u4f7f\u5929\u6587\u754c\u4ece\u6b64\u53ef\u4ee5\u9884\u6d4b\u5230\u8c37\u795e\u661f\u7684\u7cbe\u786e\u4f4d\u7f6e": 1, "\u540c\u6837\u7684\u65b9\u6cd5\u4e5f\u4ea7\u751f\u4e86\u54c8\u96f7\u5f57\u661f\u7b49\u5f88\u591a\u5929\u6587\u5b66\u6210\u679c": 1, "\u9ad8\u65af\u4f7f\u7528\u7684\u65b9\u6cd5\u5c31\u662f\u6700\u5c0f\u4e8c\u4e58\u6cd5": 1, "\u8be5\u65b9\u6cd5\u53d1\u8868\u4e8e1809\u5e74\u4ed6\u7684\u8457\u4f5c": 1, "\u5929\u4f53\u8fd0\u52a8\u8bba": 1, "\u4e2d": 1, "\u5176\u5b9e\u65e9\u57281805": 1, "\u6cd5\u56fd\u6570\u5b66\u5bb6\u52d2\u8ba9\u5fb7": 1, "legendr": 1, "adrien": 1, "mari": 1, "\u5c31\u5728\u5176\u8457\u4f5c": 1, "\u8ba1\u7b97\u6167\u661f\u8f68\u9053\u7684\u65b0\u65b9\u6cd5": 1, "\u4e2d\u63d0\u51fa\u4e86": 1, "\u52d2\u8ba9\u5fb7": 1, "1752": 1, "1833": 1, "\u5e38\u88ab\u4eba\u620f\u79f0\u4e3a": 1, "\u8fc7\u6e21\u6027\u79d1\u5b66\u5bb6": 1, "3": 1, "\u56e0\u4e3a\u4ed6\u7684\u6210\u5c31\u5f88\u5feb\u88ab\u522b\u4eba\u63a8\u7ffb\u6216\u8005\u88ab\u66f4\u6709\u5929\u8d4b\u7684\u4eba\u8d85\u8d8a": 1, "4": 1, "\u6bd4\u5982": 1, "\u6700\u65e9\u7531\u6b27\u62c9\u548c\u52d2\u8ba9\u5fb7\u63d0\u51fa\u7684\u4e8c\u6b21\u4e92\u53cd\u5f8b": 1, "\u52d2\u8ba9\u5fb7\u57281798\u5e74\u6574\u7406\u7684": 1, "\u6570\u8bba\u8bb2\u4e49": 1, "\u4e2d\u7ed9\u51fa\u4e86\u8bc1\u660e": 1, "\u4f46\u5f88\u5feb\u5c31\u88ab\u9ad8\u65af\u627e\u5230\u4e86\u6f0f\u6d1e\u5e76\u5426\u5b9a\u4e86": 1, "\u4e4b\u540e\u53c8\u7d2f\u8ba1\u7ed9\u51fa\u4e86\u81f3\u5c117\u79cd\u4e0d\u540c\u8bc1\u6cd5": 1, "\u8fd9\u8ba9\u52d2\u8ba9\u5fb7\u5f88\u53d7\u4f24": 1, "\u800c\u4e14\u81ea\u5df1\u4e5f\u65e0\u529b\u53cd\u9a73": 1, "\u66f4\u81f4\u547d\u7684\u662f": 1, "\u968f\u7740\u9ad8\u65af\u7ecf\u5178\u5de8\u8457": 1, "\u7b97\u672f\u63a2\u7a76": 1, "\u57281801\u5e74\u7684\u51fa\u7248": 1, "\u52d2\u8ba9\u5fb7\u7684": 1, "\u88ab\u53d6\u4ee3": 1, "\u751a\u81f3\u5176\u4ed6\u7684\u6570\u8bba\u8457\u4f5c\u4e5f\u88ab\u9057\u5fd8\u4e86": 1, "\u6700\u65e9\u7531\u52d2\u8ba9\u5fb7\u53d1\u8868\u4e8e1805\u5e74\u7684\u8bba\u6587\u4e2d": 1, "\u4f46\u662f\u8fd9\u6b21\u5c0f\u9ad8\u65af\u53c8\u51fa\u6765\u8ba9\u52d2\u8ba9\u5fb7": 1, "\u53d7\u4f24\u4e86": 1, "\u9ad8\u65af\u53d1\u6587\u8bf4\u4ed6\u65e9\u57281795\u5e74\u5c31\u53d1\u73b0\u4e86\u8fd9\u4e2a\u65b9\u6cd5": 1, "\u5e76\u57281801\u5e74\u7ed3\u5408\u6b64\u65b9\u6cd5\u8ba1\u7b97\u51fa\u4e86\u8c37\u795e\u661f\u7684\u8fd0\u52a8\u8f68\u8ff9": 1, "\u52d2\u8ba9\u5fb7\u8fd9\u4e00\u6b21\u771f\u6709\u4e9b\u751f\u6c14\u4e86": 1, "\u600e\u4e48\u4ec0\u4e48\u90fd\u662f\u4f60\u5148\u53d1\u73b0\u7684": 1, "\u8fd8\u6709\u5b8c\u6ca1\u5b8c\u4e86": 1, "\u4e24\u4eba\u4e3a\u4e86\u4f18\u5148\u6743\u4e89\u8bba\u4e86\u597d\u51e0\u5e74": 1, "\u540e\u6765\u9ad8\u65af\u5c06\u6700\u5c0f\u4e8c\u4e58\u6cd5\u4e0e\u6982\u7387\u8bba\u76f8\u7ed3\u5408\u63d0\u51fa\u4e86\u6b63\u6001\u5206\u5e03": 1, "\u7531\u4e8e\u8fd9\u4e2a\u6982\u5ff5\u7684\u63d0\u51fa": 1, "\u9ad8\u65af\u53c8\u8d70\u5728\u4e86\u52d2\u8ba9\u5fb7\u524d\u9762": 1, "18\u4e16\u7eaa\u540e\u534a\u53f6\u523020\u4e16\u7eaa\u521d\u662f\u6570\u5b66\u53f2\u4e0a\u7684\u8d85\u82f1\u96c4\u65f6\u4ee3": 1, "\u6b64\u65f6\u7684\u6b27\u6d32\u4ee5\u6cd5\u56fd\u4e3a\u4ee3\u8868\u51fa\u73b0\u4e86\u5927\u6279\u7684\u9876\u7ea7\u6570\u5b66\u5bb6": 1, "\u6211\u4eec\u6765\u770b\u770b\u8fd9\u4e9b\u719f\u6089\u7684\u540d\u5b57": 1, "\u67ef\u897f": 1, "cauchi": 1, "1789": 1, "1857": 1, "\u62c9\u683c\u6717\u65e5": 1, "lagrang": 1, "1736": 1, "1813": 1, "\u62c9\u666e\u62c9\u65af": 1, "laplac": 1, "1749": 1, "1827": 1, "\u8499\u65e5": 1, "mong": 1, "1746": 1, "1818": 1, "\u6cca\u677e": 1, "poisson": 1, "1781": 1, "1840": 1, "\u5085\u91cc\u53f6": 1, "fourier": 1, "1768": 1, "1830": 1, "\u8fd9\u4e9b\u6570\u5b66\u5bb6\u90fd\u4e3a\u6cd5\u56fd\u7684\u653f\u6cbb\u548c\u79d1\u5b66\u505a\u4e86\u5de8\u5927\u8d21\u732e": 1, "\u5f88\u591a\u4eba\u751a\u81f3\u4e8e\u662f\u5e08\u5f92\u6216\u670b\u53cb\u7684\u5173\u7cfb": 1, "\u52d2\u8ba9\u5fb7\u5728\u8fd9\u4e2a\u7fa4\u661f\u7480\u74a8\u7684\u65f6\u4ee3": 1, "\u4ed6\u7684\u5149\u8292\u88ab\u63a9\u76d6\u4e86": 1, "\u5982\u679c\u65e9\u751f50\u5e74\u6216\u8005\u665a\u751f50\u5e74\u90fd\u5c06\u662f\u5f53\u65f6\u6570\u5b66\u754c\u6700\u8000\u773c\u7684\u660e\u661f": 1, "\u4f46\u5b9e\u53d8\u51fd\u6570\u4e4b\u7236\u52d2\u8ba9\u5fb7\u5728\u6570\u5b66": 1, "\u7269\u7406": 1, "\u5929\u6587\u7b49\u591a\u65b9\u9762\u7684\u6210\u5c31\u5fc5\u5b9a\u662f\u540d\u5782\u9752\u53f2\u7684": 1, "\u4ece\u5c0f\u5b66\u4e8c\u5e74\u6d4b\u91cf\u6570\u5b66\u8bfe\u672c\u8fb9\u957f\u5f00\u59cb": 1, "\u6570\u5b66\u8001\u5e08\u5c31\u544a\u8bc9\u6211\u4eec\u8981\u591a\u6b21\u6d4b\u91cf\u53d6\u5e73\u5747\u503c": 1, "\u5177\u4f53\u64cd\u4f5c\u5c31\u662f\u5c06\u51e0\u6b21\u6d4b\u91cf\u7ed3\u679c\u52a0\u8d77\u6765\u9664\u4ee5\u6d4b\u91cf\u6b21\u6570": 1, "bar": 1, "y": 1, "frac": 1, "y_1": 1, "y_2": 1, "cdot": 1, "y_6": 1, "sum_": 1, "i": 1, "y_i": 1, "\u8fd9\u4e48\u505a\u57fa\u4e8e\u5982\u4e0b\u91cd\u8981\u4e8b\u5b9e\u4e0e\u5047\u8bbe": 1, "\u771f\u5b9e\u503c\u662f\u65e0\u6cd5\u5f97\u5230\u7684": 1, "\u5355\u6b21\u7684\u6d4b\u91cf\u8bef\u5dee\u662f\u968f\u673a\u7684": 1, "\u4e3a\u4ec0\u4e48\u4e0d\u7528\u5176\u4ed6\u7edf\u8ba1\u503c": 1, "\u51e0\u4f55\u5e73\u5747": 1, "\u8c03\u548c\u5e73\u5747": 1, "\u4ee3\u8868\u5e73\u5747\u6548\u679c": 1, "\u65e2\u7136\u6d4b\u91cf\u7684\u8bef\u5dee\u662f\u968f\u673a\u7684": 1, "\u90a3\u4e48\u8bef\u5dee\u5e94\u8be5\u56f4\u7ed5\u771f\u5b9e\u503c\u4e0a\u4e0b\u968f\u673a\u6ce2\u52a8": 1, "\u901a\u5e38\u4f1a\u5047\u8bbe\u89c2\u6d4b\u8bef\u5dee\u7b26\u5408\u6b63\u6001\u5206\u5e03": 1, "\u6240\u4ee5\u7b97\u672f\u5e73\u5747\u503c\u4ee3\u8868\u5e73\u5747\u6548\u679c": 1, "\u4e3a\u4ec0\u4e48\u4e0d\u7528\u7edd\u5bf9\u8bef\u5dee\u800c\u8981\u7528\u5e73\u65b9\u8bef\u5dee": 1, "\u5373": 1, "rightarrow": 1, "\u5f3a\u8c03\u5927\u8bef\u5dee": 1, "\u5e73\u65b9\u8bef\u5dee\u7684\u5e73\u5747\u503c\u5bf9\u8f83\u5927\u7684\u8bef\u5dee\u66f4\u654f\u611f": 1, "\u89e3\u6790\u6027\u8d28": 1, "\u4f7f\u7528\u5e73\u65b9\u8bef\u5dee\u53ef\u4ee5\u66f4\u65b9\u4fbf\u5730\u8fdb\u884c\u5206\u6790\u548c\u6c42\u5bfc": 1, "\u4ece\u800c\u627e\u5230\u51fd\u6570\u503c\u6700\u5c0f\u7684\u6781\u503c\u70b9": 1, "\u5047\u8bbe\u67d0\u6b21\u6d4b\u91cf\u6709n\u4e2a\u89c2\u6d4b": 1, "\u6d4b\u91cf": 1, "\u503c": 1, "\u90a3\u4e48\u6d4b\u91cf\u503c\u4e0e\u771f\u503c\u4e4b\u95f4\u7684\u8bef\u5dee\u5e73\u65b9\u548c": 1, "r_n": 1, "\u4e3a": 1, "n": 1, "\u6ce8\u610f\u6b64\u65f6\u53ea\u6709\u771f\u503cy\u662f\u4e0d\u77e5\u9053\u7684": 1, "\u6211\u4eec\u77e5\u9053yi\u56f4\u7ed5y\u503c\u968f\u673a\u5730\u4e0a\u4e0b\u6ce2\u52a8": 1, "\u95ee\u9898\u5c31\u53d8\u6210\u4e86\u5982\u4f55\u6839\u636e\u5df2\u6709\u6570\u636e\u786e\u5b9ay\u7684\u503c": 1, "\u4e3e\u4f8b\u8bf4\u660e": 1, "\u5982\u4e0b\u56fe\u6240\u793a": 1, "\u9ec4\u8272\u6570\u636e\u4e3a\u89c2\u6d4b\u503c": 1, "\u5176\u7b97\u6570\u5e73\u5747\u503c\u4e3a5": 1, "\u7ea2\u8272\u6a2a\u7ebf\u4e3a\u771f\u503c": 1, "\u56e0\u4e3a\u771f\u503c\u4e0d\u786e\u5b9a": 1, "\u6240\u4ee5\u8ba9\u771f\u503c\u5728\u6570\u636e\u95f4\u6ce2\u52a8\u4ee5\u5bfb\u627e\u89c4\u5f8b": 1, "\u53d1\u73b0\u5f53\u771f\u503c\u7b49\u4e8e\u7b97\u6570\u5e73\u5747\u503c\u65f6": 1, "\u8bef\u5dee\u5e73\u65b9\u548c\u6700\u5c0f": 1, "\u4ee5\u6b64\u4f5c\u4e3a\u771f\u503c": 1, "\u8fd9\u662f\u81ea\u6d3d\u7684": 1, "\u4e5f\u86ee\u7b26\u5408\u76f4\u89c9": 1, "\u56e0\u4e3a\u5982\u679c\u8bef\u5dee\u662f\u968f\u673a\u7684": 1, "\u8bef\u5dee\u5e94\u8be5\u56f4\u7ed5\u7740\u771f\u503c": 1, "\u771f\u503c\u5e94\u8be5\u4f7f\u5f97\u8bef\u5dee\u5e73\u65b9\u548c\u6700\u5c0f": 1, "import": 1, "numpi": 1, "np": 1, "matplotlib": 1, "pyplot": 1, "plt": 1, "from": 1, "ipython": 1, "displai": 1, "clear_output": 1, "time": 1, "random": 1, "seed": 1, "0": 1, "40": 1, "y_real": 1, "frame": 1, "50": 1, "x": 1, "arang": 1, "\u968f\u673a\u504f\u79fb": 1, "bia": 1, "rand": 1, "\u6570\u636e\u70b9": 1, "y_test": 1, "\u521b\u5efa\u56fe\u50cf\u548c\u5750\u6807\u8f74\u5bf9\u8c61": 1, "fig": 1, "ax": 1, "subplot": 1, "figsiz": 1, "14": 1, "8": 1, "set_facecolor": 1, "w": 1, "\u62df\u5408\u7684\u66f2\u7ebf": 1, "y_appr": 1, "rang": 1, "clear": 1, "\u7ed8\u5236\u865a\u7ebf": 1, "j": 1, "plot": 1, "linestyl": 1, "linewidth": 1, "color": 1, "grai": 1, "\u7ed8\u5236\u6563\u70b9\u56fe": 1, "scatter": 1, "b": 1, "facecolor": 1, "yellow": 1, "s": 1, "200": 1, "\u7ed8\u5236\u56de\u5f52\u7ebf": 1, "axhlin": 1, "r": 1, "\u8ba1\u7b97\u8bef\u5dee": 1, "rn": 1, "sum": 1, "\u8bbe\u7f6e\u5750\u6807\u8f74\u8303\u56f4\u548c\u6807\u7b7e": 1, "set_xlim": 1, "set_ylim": 1, "set_xlabel": 1, "set_ylabel": 1, "\u8bbe\u7f6e\u6807\u9898": 1, "set_titl": 1, "orinari": 1, "format": 1, "text": 1, "05": 1, "2f": 1, "transform": 1, "transax": 1, "fontsiz": 1, "12": 1, "fontweight": 1, "bold": 1, "black": 1, "\u6e05\u9664\u4e0a\u4e00\u5e27\u7684\u56fe\u50cf": 1, "wait": 1, "true": 1, "\u663e\u793a\u5f53\u524d\u5e27\u7684\u56fe\u50cf": 1, "\u6682\u505c\u4e00\u6bb5\u65f6\u95f4": 1, "sleep": 1, "\u66f4\u65b0\u9884\u6d4b\u503c": 1, "close": 1, "\u5bf9\u4e8e": 1, "\u6c42": 1, "\u4e00\u9636\u5bfc\u6570": 1, "dr_n": 1, "dy": 1, "d": 1, "\u4f7f\u7528\u94fe\u5f0f\u6cd5\u5219": 1, "\u6211\u4eec\u53ef\u4ee5\u5c06\u6c42\u548c\u7b26\u53f7\u4e2d\u7684\u6bcf\u4e00\u9879\u5206\u522b\u6c42\u5bfc": 1, "\u7136\u540e\u5c06\u5b83\u4eec\u52a0\u8d77\u6765": 1, "\u4e8c\u9636\u5bfc\u6570": 1, "2r_n": 1, "left": 1, "right": 1, "\u518d\u6b21\u5e94\u7528\u94fe\u5f0f\u6cd5\u5219": 1, "\u6211\u4eec\u53ef\u4ee5\u5f97\u5230": 1, "2n": 1, "\u901a\u8fc7\u4e00\u9636\u5bfc\u6570\u4e3a0\u7684\u70b9\u6765\u5bfb\u627ern\u7684\u6781\u5c0f\u503c\u70b9": 1, "\u659c\u7387\u4e3a0": 1, "\u65e0\u53d8\u5316": 1, "\u800c\u901a\u8fc7\u4e8c\u9636\u5bfc\u6570\u7684\u6b63\u8d1f\u6027\u6765\u786e\u8ba4\u6781\u5c0f\u503c\u70b9\u7684\u6027\u8d28": 1, "\u5373\u5224\u65ad\u66f2\u7ebf\u5728\u8be5\u70b9\u5904\u662f\u5426\u5411\u4e0a\u5f2f\u66f2": 1, "\u6b63": 1, "\u659c\u7387\u53d8\u5927": 1, "\u4e0a\u5f2f\u66f2": 1, "\u8d1f": 1, "\u659c\u7387\u53d8\u5c0f": 1, "\u4e0b\u5f2f\u66f2": 1, "\u6211\u4eec\u6765\u89e3\u4e00\u9636\u5bfc\u6570\u4e3a0\u7684\u65b9\u7a0b": 1, "\u4ee5\u627e\u5230\u4f7f\u5f97rn\u53d6\u5f97\u6781\u5c0f\u503c\u7684y\u7684\u503c": 1, "\u9996\u5148": 1, "\u6211\u4eec\u8bbe\u7f6e\u4e00\u9636\u5bfc\u6570\u4e3a0": 1, "\u5c06\u7b49\u5f0f\u4e24\u8fb9\u9664\u4ee52": 1, "\u5c55\u5f00\u6c42\u548c\u7b26\u53f7": 1, "ny": 1, "\u5c06\u7b49\u5f0f\u91cd\u65b0\u6392\u5217": 1, "\u6700\u540e": 1, "\u901a\u8fc7\u9664\u4ee5n": 1, "\u6211\u4eec\u53ef\u4ee5\u5f97\u5230y\u7684\u503c": 1, "\u8fd9\u4e2a\u65b9\u7a0b\u8868\u793a\u4e86\u4f7f\u5f97rn\u53d6\u5f97\u6781\u5c0f\u503c\u7684y\u7684\u503c": 1, "\u5177\u4f53\u6765\u8bf4": 1, "y\u7684\u503c\u7b49\u4e8ey_i\u7684\u5e73\u5747\u503c": 1, "\u4e5f\u5c31\u662f\u8bf4\u7b97\u672f\u5e73\u5747\u6570\u53ef\u4ee5\u8ba9\u8bef\u5dee": 1, "\u6b27\u51e0\u91cc\u5f97\u8303\u6570\u610f\u4e49\u4e0b": 1, "\u6700\u5c0f": 1, "\u7b97\u6570\u5e73\u5747\u503c\u53ea\u662f\u6700\u5c0f\u4e8c\u4e58\u6cd5\u5e94\u7528\u7684\u7279\u4f8b": 1, "\u53ef\u4ee5\u770b\u4f5c\u662f\u4e00\u7ec4\u6570\u636e\u76840\u9636\u62df\u5408": 1, "\u591a\u9879\u5f0f\u62df\u5408\u4ee5\u53ca\u51fd\u6570\u903c\u8fd1\u5c31\u662f\u66f4\u5e7f\u6cdb\u4e00\u70b9\u7684\u5e94\u7528\u4e86": 1, "\u6781\u5927\u4f3c\u7136\u4f30\u8ba1": 1, "7": 1, "\u6839\u636e\u6781\u5927\u4f3c\u7136\u4f30\u8ba1\u7684\u601d\u60f3": 1, "\u6211\u4eec\u662f\u57fa\u4e8e\u89c2\u6d4b\u5230\u7684\u6837\u672c\u6570\u636e\u4fe1\u606f": 1, "\u5bfb\u627e\u6700\u6709\u53ef\u80fd\u4ea7\u751f\u8fd9\u4e9b\u89c2\u6d4b\u6570\u636e\u7684\u53c2\u6570\u503c": 1, "\u5177\u4f53\u800c\u8a00": 1, "\u6211\u4eec\u5e0c\u671b\u627e\u5230\u4f7f\u5f97\u6837\u672c\u6570\u636e\u51fa\u73b0\u7684\u6982\u7387\u6700\u5927\u7684\u53c2\u6570\u503c": 1, "\u4e5f\u5c31\u662f\u8bf4": 1, "\u901a\u8fc7\u8c03\u6574\u53c2\u6570\u503c\u6765\u4f7f\u5f97\u8be5\u6982\u7387\u5206\u5e03\u4e0e\u89c2\u6d4b\u6570\u636e\u6700\u5339\u914d": 1, "\u4e3a\u4e86\u5b9e\u73b0\u8fd9\u4e00\u76ee\u6807": 1, "\u6211\u4eec\u6784\u5efa\u4e86\u4e00\u4e2a\u5173\u4e8e\u53c2\u6570\u7684\u4f3c\u7136\u51fd\u6570": 1, "likelihood": 1, "function": 1, "\u5b83\u8868\u793a\u5728\u7ed9\u5b9a\u53c2\u6570\u503c\u4e0b\u89c2\u6d4b\u6570\u636e\u51fa\u73b0\u7684\u6982\u7387": 1, "\u7136\u540e": 1, "\u6211\u4eec\u901a\u8fc7\u6700\u5927\u5316\u4f3c\u7136\u51fd\u6570\u6765\u6c42\u89e3\u6700\u6709\u53ef\u80fd\u7684\u53c2\u6570\u503c": 1, "\u4ee5\u4e00\u5f00\u59cb\u7684\u4e66\u672c\u8fb9\u957f\u6d4b\u91cf\u4e3a\u4f8b": 1, "\u8bbe\u6d4b\u91cf\u8bef\u5dee\u4e3a\u968f\u673a\u53d8\u91cf": 1, "epsilon_i": 1, "\u670d\u4ece\u672a\u77e5\u7684\u6982\u7387\u5206\u5e03": 1, "p": 1, "epsilon": 1, "\u8fdb\u800c\u5f97\u5230\u4f3c\u7136\u51fd\u6570": 1, "l": 1, "epsilon_1": 1, "epsilon_2": 1, "epsilon_n": 1, "y_n": 1, "prod_": 1, "\u6c42\u89e3\u8fc7\u7a0b\u4e2d\u53ef\u4ee5\u901a\u8fc7\u627e\u5230\u9a7b\u503c\u70b9\u6765\u5f97\u5230\u6781\u503c": 1, "\u9a7b\u503c\u70b9": 1, "stationari": 1, "point": 1, "\u662f\u51fd\u6570\u5728\u67d0\u4e2a\u70b9\u4e0a\u7684\u5bfc\u6570\u4e3a\u96f6\u6216\u4e0d\u5b58\u5728\u7684\u70b9": 1, "\u5728\u9a7b\u503c\u70b9\u5904": 1, "\u51fd\u6570\u7684\u5bfc\u6570\u7b49\u4e8e\u96f6\u6216\u8005\u51fd\u6570\u5728\u8be5\u70b9\u7684\u5bfc\u6570\u4e0d\u5b58\u5728": 1, "\u9a7b\u503c\u70b9\u5305\u62ec\u6781\u5c0f\u503c\u70b9": 1, "\u6781\u5927\u503c\u70b9\u548c\u62d0\u70b9": 1, "\u5728\u6781\u5c0f\u503c\u70b9\u548c\u6781\u5927\u503c\u70b9": 1, "\u51fd\u6570\u5728\u8be5\u70b9\u7684\u5bfc\u6570\u4e3a\u96f6": 1, "\u800c\u5728\u62d0\u70b9": 1, "\u51fd\u6570\u5728\u8be5\u70b9\u7684\u5bfc\u6570\u4e0d\u5b58\u5728": 1, "\u5373\u51fd\u6570\u7684\u66f2\u7ebf\u5728\u8be5\u70b9\u5904\u53d1\u751f\u5f2f\u66f2": 1, "\u5982\u679c\u6700\u5c0f\u4e8c\u4e58\u662f\u5bf9\u7684": 1, "\u90a3\u4e48": 1, "_": 1, "\u63a8\u65ad\u7684\u8fc7\u7a0b": 1, "\u901a\u8fc7\u6781\u5927\u4f3c\u7136\u4f30\u8ba1\u7684\u601d\u60f3\u6765\u786e\u5b9a\u672a\u77e5\u7684\u6982\u7387\u5206\u5e03": 1, "\u8fd9\u662f\u4e00\u79cd\u7edf\u8ba1\u63a8\u65ad\u95ee\u9898": 1, "\u5728\u8fdb\u884c\u63a8\u65ad\u65f6": 1, "\u6211\u4eec\u901a\u5e38\u9700\u8981\u5047\u8bbe\u6982\u7387\u5206\u5e03\u7684\u5f62\u5f0f\u6216\u8005\u7ed9\u5b9a\u67d0\u4e9b\u5047\u8bbe\u6761\u4ef6": 1, "\u5bf9\u4e8e\u672a\u77e5\u7684\u6982\u7387\u5206\u5e03": 1, "\u6211\u4eec\u53ef\u4ee5\u5c1d\u8bd5\u5047\u8bbe\u5b83\u5c5e\u4e8e\u67d0\u4e2a\u53c2\u6570\u5316\u7684\u5206\u5e03\u65cf": 1, "\u4f8b\u5982\u6b63\u6001\u5206\u5e03": 1, "\u6307\u6570\u5206\u5e03\u7b49": 1, "\u4e00\u79cd\u5e38\u89c1\u7684\u65b9\u6cd5\u662f\u4f7f\u7528\u6700\u5927\u4f3c\u7136\u4f30\u8ba1\u6765\u4f30\u8ba1\u53c2\u6570\u5316\u5206\u5e03\u4e2d\u7684\u53c2\u6570\u503c": 1, "\u4ece\u800c\u786e\u5b9a\u672a\u77e5\u7684\u6982\u7387\u5206\u5e03": 1, "\u5177\u4f53\u6b65\u9aa4\u5982\u4e0b": 1, "\u5047\u8bbe\u6982\u7387\u5206\u5e03": 1, "\u5c5e\u4e8e\u4e00\u4e2a\u5df2\u77e5\u7684\u53c2\u6570\u5316\u5206\u5e03\u65cf": 1, "\u5e76\u5047\u8bbe\u53c2\u6570\u4e3a": 1, "theta": 1, "\u6784\u5efa\u4f3c\u7136\u51fd\u6570": 1, "\u5b83\u8868\u793a\u89c2\u6d4b\u6570\u636e\u51fa\u73b0\u7684\u6982\u7387\u5173\u4e8e\u53c2\u6570": 1, "\u7684\u51fd\u6570": 1, "\u5728\u8fd9\u91cc": 1, "\u89c2\u6d4b\u6570\u636e\u662f\u6837\u672c\u8bef\u5dee": 1, "\u5bf9\u4f3c\u7136\u51fd\u6570": 1, "\u53d6\u5bf9\u6570\u5e76\u6c42\u8d1f": 1, "\u5f97\u5230\u8d1f\u5bf9\u6570\u4f3c\u7136\u51fd\u6570": 1, "log": 1, "\u6700\u5927\u5316\u8d1f\u5bf9\u6570\u4f3c\u7136\u51fd\u6570": 1, "\u5373\u901a\u8fc7\u5bf9\u53c2\u6570": 1, "\u8fdb\u884c\u4f18\u5316\u6765\u627e\u5230\u4f7f\u5f97\u89c2\u6d4b\u6570\u636e\u51fa\u73b0\u6982\u7387\u6700\u5927\u5316\u7684\u53c2\u6570\u503c": 1, "\u8bbe": 1, "\u4e3a\u6d4b\u91cf\u8bef\u5dee": 1, "\u7531\u4e8e": 1, "\u662f\u72ec\u7acb\u540c\u5206\u5e03\u7684": 1, "\u90a3\u4e48\u6839\u636e\u4e2d\u5fc3\u6781\u9650\u5b9a\u7406": 1, "\u8bef\u5dee\u7684\u5206\u5e03\u5c31\u5e94\u8be5\u662f\u6b63\u6001\u5206\u5e03": 1, "\u6211\u4eec\u5047\u8bbe": 1, "\u670d\u4ece\u6b63\u6001\u5206\u5e03": 1, "mu": 1, "sigma": 1, "\u5176\u4e2d": 1, "\u662f\u5747\u503c": 1, "\u662f\u6807\u51c6\u5dee": 1, "\u6211\u4eec\u5e0c\u671b\u627e\u5230\u4f7f\u5f97\u89c2\u6d4b\u6570\u636e\u51fa\u73b0\u7684\u6982\u7387\u6700\u5927\u5316\u7684": 1, "\u548c": 1, "\u6211\u4eec\u53ef\u4ee5\u5c06\u4f3c\u7136\u51fd\u6570\u5199\u6210": 1, "sqrt": 1, "pi": 1, "e": 1, "\u4e3a\u4e86\u6700\u5927\u5316\u4f3c\u7136\u51fd\u6570": 1, "\u6211\u4eec\u53ef\u4ee5\u53d6\u5bf9\u6570\u5e76\u5c06\u95ee\u9898\u8f6c\u5316\u4e3a\u6700\u5c0f\u5316\u8d1f\u5bf9\u6570\u4f3c\u7136\u51fd\u6570": 1, "\u5373\u6c42\u89e3\u4ee5\u4e0b\u65b9\u7a0b": 1, "\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u5bf9": 1, "\u5206\u522b\u6c42\u504f\u5bfc\u6570\u5e76\u4ee4\u5bfc\u6570\u7b49\u4e8e\u96f6": 1, "\u6765\u6c42\u89e3\u6700\u5927\u4f3c\u7136\u4f30\u8ba1\u7684\u53c2\u6570": 1, "\u5bf9\u4e8e\u6b63\u6001\u5206\u5e03": 1, "\u6700\u5927\u4f3c\u7136\u4f30\u8ba1\u5c06\u7ed9\u51fa\u5747\u503c": 1, "\u548c\u6807\u51c6\u5dee": 1, "\u7684\u4f30\u8ba1\u503c": 1, "\u6700\u5927\u4f3c\u7136\u4f30\u8ba1\u4f1a\u7b49\u4ef7\u4e8e\u6700\u5c0f\u5316\u6b8b\u5dee\u5e73\u65b9\u548c": 1, "\u56e0\u4e3a\u6700\u5927\u5316\u89c2\u6d4b\u6570\u636e\u7684\u8054\u5408\u6982\u7387\u5c31\u7b49\u4ef7\u4e8e\u6700\u5c0f\u5316\u8d1f\u5bf9\u6570\u4f3c\u7136\u51fd\u6570": 1, "\u800c\u8d1f\u5bf9\u6570\u4f3c\u7136\u51fd\u6570\u4e0e\u6b8b\u5dee\u5e73\u65b9\u548c\u6210\u6b63\u6bd4": 1, "\u6700\u5c0f\u4e8c\u4e58\u6cd5\u767e\u5ea6\u767e\u79d1": 1, "http": 1, "baik": 1, "baidu": 1, "com": 1, "item": 1, "2522346": 1, "fr": 1, "ge_ala": 1, "\u591a\u65b9\u4f4d\u7406\u89e3\u6700\u5c0f\u4e8c\u4e58\u6cd5": 1, "\u4ece\u5747\u503c\u5230\u6b63\u6001\u5206\u5e03": 1, "www": 1, "bilibili": 1, "read": 1, "cv11596191": 1, "\u4e00\u4e2a\u751f\u5728\u82f1\u96c4\u65f6\u4ee3": 1, "\u53c8\u88ab\u5e74\u8f7b\u9ad8\u65af\u6c14\u5f97\u53d1\u72c2\u7684\u6570\u5b66\u5bb6": 1, "zhuanlan": 1, "zhihu": 1, "147641642": 1, "\u52d2\u8ba9\u5fb7\u7b80\u4ecb": 1, "\u963f\u5fb7\u5229\u6602": 1, "\u739b\u5229": 1, "\u57c3": 1, "8791520": 1, "\u6700\u5c0f\u4e8c\u4e58\u6cd5\u7684\u6982\u7387\u89e3\u91ca": 1, "blog": 1, "51cto": 1, "u_16146153": 1, "6387070": 1, "\u6700\u5927\u4f3c\u7136\u65b9\u6cd5": 1, "cnblog": 1, "shibalang": 1, "4974583": 1, "html": 1, "\u4e00\u6587\u4e86\u89e3\u6700\u5927\u4f3c\u7136\u4f30\u8ba1": 1, "maximum": 1, "estim": 1, "mp": 1, "weixin": 1, "qq": 1, "__biz": 1, "mzi1mjq2otq3ng": 1, "mid": 1, "2247604343": 1, "idx": 1, "sn": 1, "8659045f8c4279710a205da9303af5e8": 1, "chksm": 1, "e9e051fcde97d8ea1dc8cc716325c4e7c8ce7da52af653e8462039f51caa7ad7703805d18626": 1, "scene": 1, "27": 1, "\u673a\u5668\u5b66\u4e60\u7684\u4efb\u52a1\u5206\u4e3a\u4e00\u4e0b\u51e0\u79cd\u7c7b\u522b": 2, "\u786e\u5b9a\u5bf9\u8c61\u6240\u5c5e\u7684\u7c7b\u522b": 2, "\u5e94\u7528": 2, "\u5783\u573e\u90ae\u4ef6\u68c0\u6d4b": 2, "\u56fe\u50cf\u8bc6\u522b": 2, "\u7b97\u6cd5": 2, "\u68af\u5ea6\u63d0\u5347": 2, "\u6700\u8fd1\u90bb": 2, "\u968f\u673a\u68ee\u6797": 2, "\u903b\u8f91\u56de\u5f52\u7b49\u7b49": 2, "\u9884\u6d4b\u4e0e\u5bf9\u8c61\u76f8\u5173\u7684\u8fde\u7eed\u503c\u7684\u5c5e\u6027": 2, "\u836f\u7269\u53cd\u5e94": 2, "\u80a1\u7968\u4ef7\u683c": 2, "\u5cad\u56de\u5f52\u7b49\u7b49": 2, "\u5c06\u76f8\u4f3c\u5bf9\u8c61\u81ea\u52a8\u5206\u7ec4\u5230\u96c6\u5408\u4e2d": 2, "\u7528\u6237\u5212\u5206": 2, "\u5b9e\u9a8c\u8f93\u51fa\u5206\u7ec4": 2, "k": 2, "mean": 2, "dbscan": 2, "\u5c42\u6b21\u805a\u7c7b\u7b49\u7b49": 2, "\u51cf\u5c11\u8981\u8003\u8651\u7684\u968f\u673a\u53d8\u91cf\u7684\u6570\u91cf": 2, "\u53ef\u89c6\u5316": 2, "\u63d0\u9ad8\u6548\u7387": 2, "pca": 2, "\u7279\u5f81\u9009\u62e9": 2, "\u975e\u8d1f\u77e9\u9635\u5206\u89e3\u7b49\u7b49": 2, "\u6bd4\u8f83": 2, "\u9a8c\u8bc1\u548c\u9009\u62e9\u53c2\u6570\u4ee5\u53ca\u6a21\u578b": 2, "\u7f51\u683c\u641c\u7d22": 2, "\u4ea4\u53c9\u68c0\u9a8c\u7b49\u7b49": 2, "\u8f6c\u6362\u8f93\u5165\u6570\u636e\u5982\u6587\u672c": 2, "\u4fbf\u4e8e\u673a\u5668\u5b66\u4e60\u7b97\u6cd5\u4f7f\u7528": 2, "\u7279\u5f81\u63d0\u53d6\u7b49\u7b49": 2, "modulenotfounderror": 1, "traceback": 1, "most": 1, "recent": 1, "call": 1, "last": 1, "cell": 1, "In": 1, "line": 1, "No": 1, "modul": 1, "name": 1}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"introduct": 0, "machin": 0, "learn": 0, "\u6700\u5c0f\u4e8c\u4e58\u6cd5": 1, "\u9038\u95fb\u8da3\u4e8b": 1, "\u6700\u5c0f\u4e8c\u4e58\u6cd5\u4f18\u5316\u6f14\u793a": 1, "\u8bba\u8bc1": 1, "\u6700\u5c0f\u4e8c\u4e58\u6cd5\u6709\u6781\u5c0f\u503c": 1, "\u6781\u5c0f\u503c\u53ef\u4ee5\u6c42\u5f97\u771f\u5b9e\u503cy": 1, "\u4e14\u5c31\u662f\u6837\u672c\u6570\u636e\u7684\u7b97\u672f\u5e73\u5747\u503c": 1, "\u6269\u5c55": 1, "\u6982\u7387\u89e3\u91ca": 1, "5": 1, "6": 1, "\u53c2\u8003\u6587\u732e": 1, "\u5206\u7c7b": 2, "\u56de\u5f52": 2, "\u805a\u7c7b": 2, "\u964d\u7ef4": 2, "\u6a21\u578b\u9009\u62e9": 2, "\u9884\u5904\u7406": 2}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinxcontrib.bibtex": 9, "sphinx": 56}}) \ No newline at end of file