diff --git a/11.md b/11.md index 4f168e81ce1eb173f7e426e4e20207199caca22a..aae4dc9ffc2f73e6c46263f875560e07915d31e1 100644 --- a/11.md +++ b/11.md @@ -28,9 +28,9 @@ y = boston.target 通过添加一个新的特征,它是交互特征的乘积,来添加交互项。 -$\hat {y} = \hat {\beta_{0}} + \hat {\beta_{1}}x_{1}+ \hat {\beta_{2}}x_{2} + \hat {\beta_{3}}x_{1}x_{2} + \epsilon$ +![\hat {y} = \hat {\beta_{0}} + \hat {\beta_{1}}x_{1}+ \hat {\beta_{2}}x_{2} + \hat {\beta_{3}}x_{1}x_{2} + \epsilon](../Images/tex-020a9f6f179050a671f6f6f28169b20d.gif) -其中 $x_{1}$ 和 $x_{2}$ 分别是两个特征的值,$x_{1}x_{2}$ 表示两者之间的交互。使用 scikit-learn 的`PolynomialFeatures`,来为所有特征组合创建交互术项会很有用。 然后,我们可以使用模型选择策略,来识别产生最佳模型的特征和交互项的组合。 +其中 ![x_{1}](../Images/tex-f9a3b8e9e501458e8face47cae8826de.gif) 和 ![x_{2}](../Images/tex-8f43fce8dbdf3c4f8d0ac91f0de1d43d.gif) 分别是两个特征的值,![x_{1}x_{2}](../Images/tex-f8281cafb08efe03bce3816f00fdd12d.gif) 表示两者之间的交互。使用 scikit-learn 的`PolynomialFeatures`,来为所有特征组合创建交互术项会很有用。 然后,我们可以使用模型选择策略,来识别产生最佳模型的特征和交互项的组合。 ```py # 创建交互项(非多项式特征) @@ -158,7 +158,7 @@ scaler = StandardScaler() X_std = scaler.fit_transform(X) ``` -超参数 $\alpha$ 让我们控制我们对系数的惩罚程度,更高的 $\alpha$ 值创建更简单的模型。$\alpha$ 的理想值应该像任何其他超参数一样调整。 在 scikit-learn中,使用`alpha`参数设置 $\alpha$。 +超参数 ![\alpha](../Images/tex-7b7f9dbfea05c83784f8b85149852f08.gif) 让我们控制我们对系数的惩罚程度,更高的 ![\alpha](../Images/tex-7b7f9dbfea05c83784f8b85149852f08.gif) 值创建更简单的模型。![\alpha](../Images/tex-7b7f9dbfea05c83784f8b85149852f08.gif) 的理想值应该像任何其他超参数一样调整。 在 scikit-learn中,使用`alpha`参数设置 ![\alpha](../Images/tex-7b7f9dbfea05c83784f8b85149852f08.gif)。 ```py # 创建带有某个 alpha 值的 Lasso @@ -307,14 +307,14 @@ list(y_test)[0:5] 用于量化`Y`的最常见统计量是**残差平方和**: -$RSS = \sum_{i=1}^{n}(y_{i}-f(x_{i}))^{2}$ +![RSS = \sum_{i=1}^{n}(y_{i}-f(x_{i}))^{2}](../Images/tex-52539b56794b13d260a84f3461c80f49.gif) 不要让数学符号吓到: -* $f(x_{i})$ 是我们训练的模型:`model.predict(X_test)` -* $y_{i}$ 是测试数据的`y`:`y_test` -* $^{2}$ 是指数:`**2` -* $\sum_{i=1}^{n}$ 是求和:`.sum()` +* ![f(x_{i})](../Images/tex-7e18dabda345d4f3a3642ecf7fa61ccf.gif) 是我们训练的模型:`model.predict(X_test)` +* ![y_{i}](../Images/tex-18daef71b5d25ce76b8628a81e4fc76b.gif) 是测试数据的`y`:`y_test` +* ![^{2}](../Images/tex-272ba5cfd2789d670bc65e40587345c3.gif) 是指数:`**2` +* ![\sum_{i=1}^{n}](../Images/tex-50d7cc01f0e1e57d81240e646606b14a.gif) 是求和:`.sum()` 在残差的平方和中,对于每个观测,我们找到模型的预测`Y`和实际`Y`值之间的差异,然后将该差异平方来使所有值为正。 然后我们将所有这些平方差加在一起得到一个数字。 最终结果是一个统计量,表示模型的预测与实际值的距离。 @@ -394,7 +394,7 @@ scaler = StandardScaler() X_std = scaler.fit_transform(X) ``` -超参数 $\alpha$ 让我们控制我们对系数的惩罚程度,更高的 $\alpha$ 值创建更简单的模型。$\alpha$ 的理想值应该像任何其他超参数一样调整。 在 scikit-learn中,使用`alpha`参数设置 $\alpha$。 +超参数 ![\alpha](../Images/tex-7b7f9dbfea05c83784f8b85149852f08.gif) 让我们控制我们对系数的惩罚程度,更高的 ![\alpha](../Images/tex-7b7f9dbfea05c83784f8b85149852f08.gif) 值创建更简单的模型。![\alpha](../Images/tex-7b7f9dbfea05c83784f8b85149852f08.gif) 的理想值应该像任何其他超参数一样调整。 在 scikit-learn中,使用`alpha`参数设置 ![\alpha](../Images/tex-7b7f9dbfea05c83784f8b85149852f08.gif)。 ```py # 创建带有 alpha 值的岭回归 @@ -429,7 +429,7 @@ X_std = scaler.fit_transform(X) regr_cv = RidgeCV(alphas=[0.1, 1.0, 10.0]) ``` -scikit-learn 包含`RidgeCV`方法,允许我们为 $\ alpha$ 选择理想值: +scikit-learn 包含`RidgeCV`方法,允许我们为 ![\ alpha](../Images/tex-d945100c5fa6a400570dcacfb1fc9869.gif) 选择理想值: ```py # 拟合岭回归 diff --git a/12.md b/12.md index dee65d4846d814d842902628256b3e9db3434a08..056c484800d4a0062e041ddb51c075f73fe8e108 100644 --- a/12.md +++ b/12.md @@ -39,9 +39,9 @@ LogisticRegressionCV(Cs=100, class_weight=None, cv=None, dual=False, 像 scikit-learn 中的许多其他学习算法一样,`LogisticRegression`带有处理不平衡类的内置方法。 如果我们有高度不平衡的类,并且在预处理期间没有解决它,我们可以选择使用`class_weight`参数来对类加权,确保我们拥有每个类的平衡组合。 具体来说,`balanced`参数会自动对类加权,与其频率成反比: -$w_j = \frac{n}{kn_{j}}$ +![w_j = \frac{n}{kn_{j}}](../Images/tex-bde5f474d3e4c7e38ddd6440a38a7f4e.gif) -其中 $w_j$ 是类 $j$ 的权重,$n$ 是观察数,$n_j$ 是类 $j$ 中的观察数,$k$ 是类的总数。 +其中 ![w_j](../Images/tex-e8100be07fa5419af6c6738b934dfca0.gif) 是类 ![j](../Images/tex-363b122c528f54df4a0446b6bab05515.gif) 的权重,![n](../Images/tex-7b8b965ad4bca0e41ab51de7b31363a1.gif) 是观察数,![n_j](../Images/tex-4aa861124eff57dd7988faa6753e8b7e.gif) 是类 ![j](../Images/tex-363b122c528f54df4a0446b6bab05515.gif) 中的观察数,![k](../Images/tex-8ce4b16b22b58894aa86c421e8759df3.gif) 是类的总数。 ```py # 加载库 @@ -75,11 +75,11 @@ model = clf.fit(X_std, y) ## 逻辑回归 -尽管其名称中存在“回归”,但逻辑回归实际上是广泛使用的二分类器(即,目标向量只有两个值)。 在逻辑回归中,线性模型(例如 $\beta_{0} + \beta_ {1} x$)包含在 logit(也称为 sigmoid)函数中,${\frac{1}{1 + e^{-z}}$,满足: +尽管其名称中存在“回归”,但逻辑回归实际上是广泛使用的二分类器(即,目标向量只有两个值)。 在逻辑回归中,线性模型(例如 ![\beta_{0} + \beta_ {1} x](../Images/tex-31f830c208ca5fcbf1bca34de8d796a6.gif))包含在 logit(也称为 sigmoid)函数中,![{\frac{1}{1 + e^{-z}}](../Images/tex-ad6d5470eaff252c993327c248d56b0e.gif),满足: -$P(y_i=1 \mid X)={\frac{1}{1+e^{-(\beta_{0}+\beta_{1}x)}}}$ +![P(y_i=1 \mid X)={\frac{1}{1+e^{-(\beta_{0}+\beta_{1}x)}}}](../Images/tex-777eeb07996381e00006e77dd1aaf39f.gif) -其中 $P(y_i=1 \mid X)$ 是第 $i$ 个观测的目标值 $y_i$ 为 1 的概率,$X$ 是训练数据,$\beta_0$ 和 $\beta_1$ 是要学习的参数,$e$ 是自然常数。 +其中 ![P(y_i=1 \mid X)](../Images/tex-2b30ddf4881c9acfc3bc0cf2880eefaa.gif) 是第 ![i](../Images/tex-865c0c0b4ab0e063e5caa3387c1a8741.gif) 个观测的目标值 ![y_i](../Images/tex-8d62e469fb30ed435a668eb5c035b1f6.gif) 为 1 的概率,![X](../Images/tex-02129bb861061d1a052c592e2dc6b383.gif) 是训练数据,![\beta_0](../Images/tex-5af9e28d609b16eb25693f44ea9d7a8f.gif) 和 ![\beta_1](../Images/tex-b4ceec2c4656f5c1e7fc76c59c4f80f3.gif) 是要学习的参数,![e](../Images/tex-e1671797c52e15f763380b45e841ec32.gif) 是自然常数。 ```py # 加载库 diff --git a/13.md b/13.md index b8ab8869029b895aa92988fd9e86d53dc63fdee6..11be7156c429e6b48f459086137db72485966879 100644 --- a/13.md +++ b/13.md @@ -89,9 +89,9 @@ y = boston.target 决策树回归的工作方式类似于决策树分类,但不是减少基尼杂质或熵,而是测量潜在的分割点,它们减少均方误差(MSE)的程度: -$\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2$ +![\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2](../Images/tex-ecc57614c202a2c740598474fdbbb88e.gif) -其中 $y_i$ 是目标的真实值,$\hat{y}_i$ 是预测值。 +其中 ![y_i](../Images/tex-8d62e469fb30ed435a668eb5c035b1f6.gif) 是目标的真实值,![\hat{y}_i](../Images/tex-99600e95adcc97c986df86d4b612cf52.gif) 是预测值。 ```py # 创建决策树回归器对象 @@ -335,9 +335,9 @@ y = np.where((y == 0), 0, 1) 当使用`RandomForestClassifier`时,有用的设置是`class_weight = balanced`,其中类自动加权,与它们在数据中出现的频率成反比。具体来说: -$w_j = \frac{n}{kn_{j}}$ +![w_j = \frac{n}{kn_{j}}](../Images/tex-bde5f474d3e4c7e38ddd6440a38a7f4e.gif) -其中 $w_j$ 是类 $j$ 的权重,$n$ 是观测数,$n_j$ 是类 $j$ 中的观测数,$k$ 是类的总数。 +其中 ![w_j](../Images/tex-e8100be07fa5419af6c6738b934dfca0.gif) 是类 ![j](../Images/tex-363b122c528f54df4a0446b6bab05515.gif) 的权重,![n](../Images/tex-7b8b965ad4bca0e41ab51de7b31363a1.gif) 是观测数,![n_j](../Images/tex-4aa861124eff57dd7988faa6753e8b7e.gif) 是类 ![j](../Images/tex-363b122c528f54df4a0446b6bab05515.gif) 中的观测数,![k](../Images/tex-8ce4b16b22b58894aa86c421e8759df3.gif) 是类的总数。 ```py # 创建决策树分类器对象 diff --git a/14.md b/14.md index 3a658b91c420cda549e0d3ae4cb92016cce2f04b..bf42e5282fa4d5148c290ddc17b8b8d2830f3fdc 100644 --- a/14.md +++ b/14.md @@ -53,11 +53,11 @@ K 最近邻分类器(KNN)是一种简单而强大的分类学习器。 KNN 有三个基本部分 -* $y_i$: 观测的类别(我们试图在测试数据中预测的东西)。 -* $X_i$: 观察的预测因子/ IV /属性。 -* $K$: 研究者指定的正数。 K 表示最接近特定观测的观测数,它定义了“邻域”。 例如,`K = 2`意味着每个观测都有一个邻域,包含最接近它的另外两个观测。 +* ![y_i](../Images/tex-8d62e469fb30ed435a668eb5c035b1f6.gif): 观测的类别(我们试图在测试数据中预测的东西)。 +* ![X_i](../Images/tex-a97118fb9e8d7e006a466bfc0771f888.gif): 观察的预测因子/ IV /属性。 +* ![K](../Images/tex-a5f3c6a11b03839d46af9fb43c97c188.gif): 研究者指定的正数。 K 表示最接近特定观测的观测数,它定义了“邻域”。 例如,`K = 2`意味着每个观测都有一个邻域,包含最接近它的另外两个观测。 -想象一下,我们有一个观测,我们知道它的自变量 $x_{test}$,但不知道它的类别 $y_{test}$。 KNN 学习器找到最接近 $x_{test}$ 的K个其他观测,并使用他们已知的类别,将类别分配给 $x_{test}$。 +想象一下,我们有一个观测,我们知道它的自变量 ![x_{test}](../Images/tex-6b5a5f025640932b2554f6d400b3e45f.gif),但不知道它的类别 ![y_{test}](../Images/tex-c39d1645d55ca4afb20c8d6a365615bb.gif)。 KNN 学习器找到最接近 ![x_{test}](../Images/tex-6b5a5f025640932b2554f6d400b3e45f.gif) 的K个其他观测,并使用他们已知的类别,将类别分配给 ![x_{test}](../Images/tex-6b5a5f025640932b2554f6d400b3e45f.gif)。 ```py import pandas as pd @@ -123,7 +123,7 @@ trained_model.score(X, y) 注:在任何现实世界的例子中,我们都希望将训练的模型与一些保留的测试数据进行比较。 但由于这是一个玩具示例,我使用了训练数据。 -现在我们已经训练了我们的模型,我们可以预测班级的任何新观测,$y_{test}$。 我们现在就这样做吧! +现在我们已经训练了我们的模型,我们可以预测班级的任何新观测,![y_{test}](../Images/tex-c39d1645d55ca4afb20c8d6a365615bb.gif)。 我们现在就这样做吧! ```py # 使用 'test_1' 第一个和第二个自变量的值 diff --git a/15.md b/15.md index c92c3f8a9ef3a07bb1a58bcbe91296641afa3dd5..849dfd6f4adbfb1fbb940eb406fcc2f1218c1137 100644 --- a/15.md +++ b/15.md @@ -10,9 +10,9 @@ SVC 使用超平面来创建决策区域,不会自然输出观察是某一类成员的概率估计。 但是,我们实际上可以通过一些技巧输出校准的类概率。 在 SVC 中,可以使用 Platt 缩放,其中首先训练 SVC,然后训练单独的交叉验证逻辑回归来将 SVC 输出映射到概率: -$P(y=1 \mid x)={\frac {1}{1+e^{(A*f(x)+B)}}}$ +![P(y=1 \mid x)={\frac {1}{1+e^{(A*f(x)+B)}}}](../Images/tex-fd6a329594a8718f6de1a6d5728eb7b7.gif) -其中 $A$ 和 $B$ 是参数向量,$f$ 是第 $i$ 个观测点与超平面的有符号距离。 当我们有两个以上的类时,使用 Platt 缩放的扩展。 +其中 ![A](../Images/tex-7fc56270e7a70fa81a5935b72eacbe29.gif) 和 ![B](../Images/tex-9d5ed678fe57bcca610140957afab571.gif) 是参数向量,![f](../Images/tex-8fa14cdd754f91cc6554c9e71929cce7.gif) 是第 ![i](../Images/tex-865c0c0b4ab0e063e5caa3387c1a8741.gif) 个观测点与超平面的有符号距离。 当我们有两个以上的类时,使用 Platt 缩放的扩展。 在 scikit-learn 中,必须在训练模型时生成预测概率。 这可以通过将`SVC`的`probability`设置为`True`来完成。 在训练模型之后,我们可以使用`predict_proba`输出每个类的估计概率。 @@ -149,17 +149,17 @@ model.n_support_ ## SVM 不平衡分类 -在支持向量机中,$C$ 是一个超参数,用于确定对观测的错误分类的惩罚。 处理支持向量机中处理不平衡类的一种方法是按类加权 $C$。 +在支持向量机中,![C](../Images/tex-0d61f8370cad1d412f80b84d143e1257.gif) 是一个超参数,用于确定对观测的错误分类的惩罚。 处理支持向量机中处理不平衡类的一种方法是按类加权 ![C](../Images/tex-0d61f8370cad1d412f80b84d143e1257.gif)。 -$C_k = C * w_j$ +![C_k = C * w_j](../Images/tex-a276b69c27fa2fc5adb0a238cb21baa3.gif) -其中 $C$ 是错误分类的惩罚,$w_j$ 是与类 $j$ 频率成反比的权重,$C_j$ 是类 $j$ 的 $C$ 值。 一般的想法是,增加对少数类的错误分类的惩罚,来防止他们被多数类“淹没”。 +其中 ![C](../Images/tex-0d61f8370cad1d412f80b84d143e1257.gif) 是错误分类的惩罚,![w_j](../Images/tex-e8100be07fa5419af6c6738b934dfca0.gif) 是与类 ![j](../Images/tex-363b122c528f54df4a0446b6bab05515.gif) 频率成反比的权重,![C_j](../Images/tex-1ae38954f6cba2eafda4e9c34df8d944.gif) 是类 ![j](../Images/tex-363b122c528f54df4a0446b6bab05515.gif) 的 ![C](../Images/tex-0d61f8370cad1d412f80b84d143e1257.gif) 值。 一般的想法是,增加对少数类的错误分类的惩罚,来防止他们被多数类“淹没”。 -在 scikit-learn 中,当使用`SVC`时,我们可以通过设置`class_weight ='balanced'`来自动设置 $C_j$ 的值.`balance`参数自动对类进行加权,使得: +在 scikit-learn 中,当使用`SVC`时,我们可以通过设置`class_weight ='balanced'`来自动设置 ![C_j](../Images/tex-1ae38954f6cba2eafda4e9c34df8d944.gif) 的值.`balance`参数自动对类进行加权,使得: -$w_j = \frac{n}{kn_{j}}$ +![w_j = \frac{n}{kn_{j}}](../Images/tex-bde5f474d3e4c7e38ddd6440a38a7f4e.gif) -其中 $w_j$ 是类 $j$ 的权重,$n$ 是观察数,$n_j$ 是类 $j$ 中的观测数,$k$ 是类的总数。 +其中 ![w_j](../Images/tex-e8100be07fa5419af6c6738b934dfca0.gif) 是类 ![j](../Images/tex-363b122c528f54df4a0446b6bab05515.gif) 的权重,![n](../Images/tex-7b8b965ad4bca0e41ab51de7b31363a1.gif) 是观察数,![n_j](../Images/tex-4aa861124eff57dd7988faa6753e8b7e.gif) 是类 ![j](../Images/tex-363b122c528f54df4a0446b6bab05515.gif) 中的观测数,![k](../Images/tex-8ce4b16b22b58894aa86c421e8759df3.gif) 是类的总数。 ```py # 加载库 @@ -348,9 +348,9 @@ plt.show() 径向基函数是 SVC 中常用的核: -$K(\mathbf {x} ,\mathbf {x’} )=\exp \left(-{\frac {||\mathbf {x} -\mathbf {x’} ||^{2}}{2\sigma ^{2}}}\right)$ +![K(\mathbf {x} ,\mathbf {x’} )=\exp \left(-{\frac {||\mathbf {x} -\mathbf {x’} ||^{2}}{2\sigma ^{2}}}\right)](../Images/tex-d5cd57541fb4b75d5fdbd688f87323d5.gif) -其中 $||\mathbf {x} -\mathbf {x’} ||^{2}$ 是两个数据点 $\mathbf{x}$ 和 $\mathbf{x'}$ 之间的欧几里德距离的平方。 如果你不了解,塞巴斯蒂安的书有完整的描述。 但是,对于本教程,重要的是要知道,使用 RBF 核的 SVC 分类器有两个参数:`gamma`和`C`。 +其中 ![||\mathbf {x} -\mathbf {x’} ||^{2}](../Images/tex-6fe2793f9b6ee038f11e89402bbf3c84.gif) 是两个数据点 ![\mathbf{x}](../Images/tex-70e59a996bd69a0c21878b4093375e92.gif) 和 ![\mathbf{x'}](../Images/tex-fc3b69ffc2761499a8f26feaaf2f3057.gif) 之间的欧几里德距离的平方。 如果你不了解,塞巴斯蒂安的书有完整的描述。 但是,对于本教程,重要的是要知道,使用 RBF 核的 SVC 分类器有两个参数:`gamma`和`C`。 ### Gamma @@ -543,9 +543,9 @@ plt.show() ![](img/3f0ca2e88676e335b8b20523ff94fec7.jpg) -SVC 在最大化超平面边距和最小化错误分类之间取得平衡。 在 SVC 中,后者由超参数 $C$ 控制,对错误施加惩罚。`C`是 SVC 学习器的参数,是对数据点进行错误分类的惩罚。 当`C`很小时,分类器可以使用错误分类的数据点(高偏差但低方差)。 当`C`很大时,分类器因错误分类的数据而受到严重惩罚,因此向后弯曲避免任何错误分类的数据点(低偏差但高方差)。 +SVC 在最大化超平面边距和最小化错误分类之间取得平衡。 在 SVC 中,后者由超参数 ![C](../Images/tex-0d61f8370cad1d412f80b84d143e1257.gif) 控制,对错误施加惩罚。`C`是 SVC 学习器的参数,是对数据点进行错误分类的惩罚。 当`C`很小时,分类器可以使用错误分类的数据点(高偏差但低方差)。 当`C`很大时,分类器因错误分类的数据而受到严重惩罚,因此向后弯曲避免任何错误分类的数据点(低偏差但高方差)。 -在 scikit-learn 中,$C$ 由参数`C`确定,默认为`C = 1.0`。 我们应该将 $C$ 看做我们应该学习的算法的超参数,我们使用模型选择技术调整它。 +在 scikit-learn 中,![C](../Images/tex-0d61f8370cad1d412f80b84d143e1257.gif) 由参数`C`确定,默认为`C = 1.0`。 我们应该将 ![C](../Images/tex-0d61f8370cad1d412f80b84d143e1257.gif) 看做我们应该学习的算法的超参数,我们使用模型选择技术调整它。 ```py # 加载库 diff --git a/16.md b/16.md index 043fccc5d6e888fdc68cdc6ca881f86c820ef49b..01cb32a05182d1580792ce276b78b69bdcd6dbfc 100644 --- a/16.md +++ b/16.md @@ -121,9 +121,9 @@ model.predict(new_observation) 在多项逻辑回归(MLR)中,我们在 Recipe 15.1 中看到的逻辑函数被 softmax 函数替换: -$P(y_i=k \mid X)={\frac {e^{\beta_{k}x_{i}}}{{\sum_{j=1}^{K}}e^{\beta_{j}x_{i}}}}$ +![P(y_i=k \mid X)={\frac {e^{\beta_{k}x_{i}}}{{\sum_{j=1}^{K}}e^{\beta_{j}x_{i}}}}](../Images/tex-45fe873d5f83badc655eed13e1cd8ee8.gif) -其中 $P(y_i=k \mid X)$ 是第 $i$ 个观测的目标值 $y_i$ 是类 $k$ 的概率,$K$ 是类的总数。MLR 的一个实际优点是使用`predict_proba`方法预测的概率更可靠(即校准更好)。 +其中 ![P(y_i=k \mid X)](../Images/tex-08c711a5590de57d9dd77d7b5ba4398f.gif) 是第 ![i](../Images/tex-865c0c0b4ab0e063e5caa3387c1a8741.gif) 个观测的目标值 ![y_i](../Images/tex-8d62e469fb30ed435a668eb5c035b1f6.gif) 是类 ![k](../Images/tex-8ce4b16b22b58894aa86c421e8759df3.gif) 的概率,![K](../Images/tex-a5f3c6a11b03839d46af9fb43c97c188.gif) 是类的总数。MLR 的一个实际优点是使用`predict_proba`方法预测的概率更可靠(即校准更好)。 ```py # 加载库 @@ -259,43 +259,43 @@ person 贝叶斯定理是一个着名的方程,它允许我们根据数据进行预测。 这是贝叶斯定理的经典版本: -$\displaystyle P(A\mid B)={\frac {P(B\mid A)\,P(A)}{P(B)}}$ +![\displaystyle P(A\mid B)={\frac {P(B\mid A)\,P(A)}{P(B)}}](../Images/tex-55ddce33f44e17960c51e0b727ed0c1b.gif) 这可能过于抽象,所以让我们替换一些变量以使其更具体。 在贝叶斯分类器中,给定数据的情况下,我们有兴趣找出观测的类别(例如男性或女性,垃圾邮件或非垃圾邮件): -$p(\text{class} \mid \mathbf {\text{data}} )={\frac {p(\mathbf {\text{data}} \mid \text{class}) * p(\text{class})}{p(\mathbf {\text{data}} )}}$ +![p(\text{class} \mid \mathbf {\text{data}} )={\frac {p(\mathbf {\text{data}} \mid \text{class}) * p(\text{class})}{p(\mathbf {\text{data}} )}}](../Images/tex-682edd15f544ef9727367918185ee5f4.gif) 其中: -* $\text{class}$ 是特定类别(例如男性) -* $\mathbf {\text{data}}$ 是观测的数据 -* $p(\text{class} \mid \mathbf {\text{data}} )$ 称为后验 -* $p(\text{data|class})$ 叫做似然 -* $p(\text{class})$ 叫做先验 -* $p(\mathbf {\text{data}} )$ 叫做边缘概率 +* ![\text{class}](../Images/tex-7015ea99e7b80644c1630cdfb0f6bbda.gif) 是特定类别(例如男性) +* ![\mathbf {\text{data}}](../Images/tex-8a842403dafad0ee564a1a212d19e77a.gif) 是观测的数据 +* ![p(\text{class} \mid \mathbf {\text{data}} )](../Images/tex-dabc824c5f8ee13faaae5a59fec9afdc.gif) 称为后验 +* ![p(\text{data|class})](../Images/tex-347685e5ebc84836b7aea484b48eb555.gif) 叫做似然 +* ![p(\text{class})](../Images/tex-09663031eaa8ade66806d053272e579c.gif) 叫做先验 +* ![p(\mathbf {\text{data}} )](../Images/tex-69c694c13d6cb056f400aff019f023dd.gif) 叫做边缘概率 在贝叶斯分类器中,我们计算每个观测的每个类的后验(严格来说,我们只计算后验的分子,但现在忽略它)。 然后,基于后验值最大的类别对观测分类。 在我们的例子中,我们为观测预测两个可能的类别(例如男性和女性),因此我们将计算两个后验:一个用于男性,一个用于女性。 -$p(\text{person is male} \mid \mathbf {\text{person’s data}} )={\frac {p(\mathbf {\text{person’s data}} \mid \text{person is male}) * p(\text{person is male})}{p(\mathbf {\text{person’s data}} )}}$ +![p(\text{person is male} \mid \mathbf {\text{person’s data}} )={\frac {p(\mathbf {\text{person’s data}} \mid \text{person is male}) * p(\text{person is male})}{p(\mathbf {\text{person’s data}} )}}](../Images/tex-7d627c4584744c44dde8a2e35bcfb90c.gif) -$p(\text{person is female} \mid \mathbf {\text{person’s data}} )={\frac {p(\mathbf {\text{person’s data}} \mid \text{person is female}) * p(\text{person is female})}{p(\mathbf {\text{person’s data}} )}}$ +![p(\text{person is female} \mid \mathbf {\text{person’s data}} )={\frac {p(\mathbf {\text{person’s data}} \mid \text{person is female}) * p(\text{person is female})}{p(\mathbf {\text{person’s data}} )}}](../Images/tex-b6253f470c6bf31d67e04d80d43704be.gif) 高斯朴素的贝叶斯可能是最受欢迎的贝叶斯分类器。 为了解释这个名称的含义,让我们看一下当我们应用两个类别(男性和女性)和三个特征变量(高度,重量和尺寸)时贝叶斯方程式的样子: -${\displaystyle {\text{posterior (male)}}={\frac {P({\text{male}})\,p({\text{height}}\mid{\text{male}})\,p({\text{weight}}\mid{\text{male}})\,p({\text{foot size}}\mid{\text{male}})}{\text{marginal probability}}}}$ +![{\displaystyle {\text{posterior (male)}}={\frac {P({\text{male}})\,p({\text{height}}\mid{\text{male}})\,p({\text{weight}}\mid{\text{male}})\,p({\text{foot size}}\mid{\text{male}})}{\text{marginal probability}}}}](../Images/tex-ea7e2e0d45588bedd672db7688459b46.gif) -${\displaystyle {\text{posterior (female)}}={\frac {P({\text{female}})\,p({\text{height}}\mid{\text{female}})\,p({\text{weight}}\mid{\text{female}})\,p({\text{foot size}}\mid{\text{female}})}{\text{marginal probability}}}}$ +![{\displaystyle {\text{posterior (female)}}={\frac {P({\text{female}})\,p({\text{height}}\mid{\text{female}})\,p({\text{weight}}\mid{\text{female}})\,p({\text{foot size}}\mid{\text{female}})}{\text{marginal probability}}}}](../Images/tex-41410fd2b1e89fe55a7638312d82540c.gif) 现在让我们解释一下上面的方程式: -* $P({\text{male}})$ 是先验概率。正如你所看到的,只是观测是男性的概率。 这只是数据集中的男性数量除以数据集中的总人数。 -* $p({\text{height}}\mid{\text{female}})\,p({\text{weight}}\mid{\text{female}})\,p({\text{foot size}}\mid{\text{female}})$ 是似然。注意我们已经解释了 $\mathbf {\text{person’s data}}$ 所以它现在是数据集中的每个特征。“高斯”和“朴素”来自似然中的两个假设: +* ![P({\text{male}})](../Images/tex-9081cb9b8d4cd5ee177a3287608f7424.gif) 是先验概率。正如你所看到的,只是观测是男性的概率。 这只是数据集中的男性数量除以数据集中的总人数。 +* ![p({\text{height}}\mid{\text{female}})\,p({\text{weight}}\mid{\text{female}})\,p({\text{foot size}}\mid{\text{female}})](../Images/tex-a061b9ec570e172274d24a31b7f2ec4e.gif) 是似然。注意我们已经解释了 ![\mathbf {\text{person’s data}}](../Images/tex-a6b711ff5b6087f86069d31ba049add7.gif) 所以它现在是数据集中的每个特征。“高斯”和“朴素”来自似然中的两个假设: 1. 如果你查看似然中的每项,你会注意到,我们假设每个特征彼此不相关。 也就是说,脚码与体重或身高等无关。这显然不是真的,而且是一个“朴素”的假设 - 因此称为“朴素贝叶斯”。 - 2. 其次,我们假设特征的值(例如女性的身体,女性的体重)通常是高斯分布的。这意味着 $p(\text{height}\mid\text{female})$ 是通过将所需参数输入正态分布的概率密度函数来计算的: + 2. 其次,我们假设特征的值(例如女性的身体,女性的体重)通常是高斯分布的。这意味着 ![p(\text{height}\mid\text{female})](../Images/tex-de3f198290bfe64e8e3f289f20c44434.gif) 是通过将所需参数输入正态分布的概率密度函数来计算的: -$p(\text{height}\mid\text{female})=\frac{1}{\sqrt{2\pi\text{variance of female height in the data}}}\,e^{ -\frac{(\text{observation’s height}-\text{average height of females in the data})^2}{2\text{variance of female height in the data}} }$ +![p(\text{height}\mid\text{female})=\frac{1}{\sqrt{2\pi\text{variance of female height in the data}}}\,e^{ -\frac{(\text{observation’s height}-\text{average height of females in the data})^2}{2\text{variance of female height in the data}} }](../Images/tex-e125e16b9b9b9a753459b31c44e565da.gif) -* $\text{marginal probability}$ 可能是贝叶斯方法中最令人困惑的部分之一。 在玩具示例(包括我们的)中,完全可以计算边际概率。 但是,在许多实际情况中,要找到边际概率的值极其困难或不可能(解释为什么超出了本教程的范围)。 对于我们的分类器来说,这并不像你想象的那么严重。 为什么? 因为我们不关心真正的后验值是什么,我们只关心哪个类具有最高的后验值。 并且因为边际概率对于所有类别都是相同的,(1)我们可以忽略分母,(2)只计算每个类的后验分子,(3)选择最大的分子。 也就是说,我们可以忽略后验分母,并仅根据后验分子的相对值进行预测。 +* ![\text{marginal probability}](../Images/tex-5765c72ae234bd48dadb3a8bfd20580b.gif) 可能是贝叶斯方法中最令人困惑的部分之一。 在玩具示例(包括我们的)中,完全可以计算边际概率。 但是,在许多实际情况中,要找到边际概率的值极其困难或不可能(解释为什么超出了本教程的范围)。 对于我们的分类器来说,这并不像你想象的那么严重。 为什么? 因为我们不关心真正的后验值是什么,我们只关心哪个类具有最高的后验值。 并且因为边际概率对于所有类别都是相同的,(1)我们可以忽略分母,(2)只计算每个类的后验分子,(3)选择最大的分子。 也就是说,我们可以忽略后验分母,并仅根据后验分子的相对值进行预测。 好的! 理论结束。 现在让我们开始计算贝叶斯方程的所有不同部分。 @@ -318,9 +318,9 @@ P_male = n_male/total_ppl P_female = n_female/total_ppl ``` -请记住,我们的似然中的每一项(例如 $p(\text{height}\mid\text{female})$)都可以看做正态的 PDF。 例如: +请记住,我们的似然中的每一项(例如 ![p(\text{height}\mid\text{female})](../Images/tex-de3f198290bfe64e8e3f289f20c44434.gif))都可以看做正态的 PDF。 例如: -$p(\text{height}\mid\text{female})=\frac{1}{\sqrt{2\pi\text{variance of female height in the data}}}\,e^{ -\frac{(\text{observation’s height}-\text{average height of females in the data})^2}{2\text{variance of female height in the data}} }$ +![p(\text{height}\mid\text{female})=\frac{1}{\sqrt{2\pi\text{variance of female height in the data}}}\,e^{ -\frac{(\text{observation’s height}-\text{average height of females in the data})^2}{2\text{variance of female height in the data}} }](../Images/tex-e125e16b9b9b9a753459b31c44e565da.gif) 这意味着对于每个类别(例如女性)和特征(例如身高)组合,我们需要从数据计算方差和均值。Pandas 让这很容易: @@ -376,7 +376,7 @@ female_weight_variance = data_variance['Weight'][data_variance.index == 'female' female_footsize_variance = data_variance['Foot_Size'][data_variance.index == 'female'].values[0] ``` -最后,我们需要创建一个函数来计算每个似然项的概率密度(例如 $p(\text{height}\mid\text{female})$)。 +最后,我们需要创建一个函数来计算每个似然项的概率密度(例如 ![p(\text{height}\mid\text{female})](../Images/tex-de3f198290bfe64e8e3f289f20c44434.gif))。 ```py # 创建计算 p(x | y) 的函数 @@ -391,7 +391,7 @@ def p_x_given_y(x, mean_y, variance_y): 好的! 我们的贝叶斯分类器准备就绪。 请记住,既然我们可以忽略边际概率(分母),我们实际计算的是: -${\displaystyle {\text{numerator of the posterior}}={P({\text{female}})\,p({\text{height}}\mid{\text{female}})\,p({\text{weight}}\mid{\text{female}})\,p({\text{foot size}}\mid{\text{female}})}{}}$ +![{\displaystyle {\text{numerator of the posterior}}={P({\text{female}})\,p({\text{height}}\mid{\text{female}})\,p({\text{weight}}\mid{\text{female}})\,p({\text{foot size}}\mid{\text{female}})}{}}](../Images/tex-68ce6a2b5a771f689d84ac8e24e31ddf.gif) 为此,我们只需要插入未分类个体(`height = 6`)的值,数据集的变量(例如女性身高的均值)和我们上面编写的函数(`p_x_given_y`): diff --git a/17.md b/17.md index 1c0099fe1ba6cd09178774618d359acba6a5e5eb..b3e282adfa5137c3d6a38746a7c9bdfea88f662c 100644 --- a/17.md +++ b/17.md @@ -111,11 +111,11 @@ model = KMeans(n_clusters=2, random_state=1).fit(X) y_hat = model.labels_ ``` -正式地,第 $i$ 个观测的轮廓系数是: +正式地,第 ![i](../Images/tex-865c0c0b4ab0e063e5caa3387c1a8741.gif) 个观测的轮廓系数是: -$s_{i} = \frac{b_{i} - a_{i}}{\text{max}(a_{i}, b_{i})}$ +![s_{i} = \frac{b_{i} - a_{i}}{\text{max}(a_{i}, b_{i})}](../Images/tex-08ab6c8d7eefc2ed7722b28e671aa0bc.gif) -其中 $s_{i}$ 是观测 $i$ 的轮廓系数,$a_{i}$ 是 $i$ 和同类的所有观测值之间的平均距离,而 $b_{i}$ 是 $i$ 和不同类的所有观测的平均距离的最小值。`silhouette_score`返回的值是所有观测值的平均轮廓系数。 轮廓系数介于 -1 和 1 之间,其中 1 表示密集,分离良好的聚类。 +其中 ![s_{i}](../Images/tex-e5a7472d780a5a032c7775cc5e3ce901.gif) 是观测 ![i](../Images/tex-865c0c0b4ab0e063e5caa3387c1a8741.gif) 的轮廓系数,![a_{i}](../Images/tex-d8dd7d0f3eb7145ca41c711457b7eb8f.gif) 是 ![i](../Images/tex-865c0c0b4ab0e063e5caa3387c1a8741.gif) 和同类的所有观测值之间的平均距离,而 ![b_{i}](../Images/tex-c9f6d8557ce40f989fa727b5c0bb1ddf.gif) 是 ![i](../Images/tex-865c0c0b4ab0e063e5caa3387c1a8741.gif) 和不同类的所有观测的平均距离的最小值。`silhouette_score`返回的值是所有观测值的平均轮廓系数。 轮廓系数介于 -1 和 1 之间,其中 1 表示密集,分离良好的聚类。 ```py # 评估模型 diff --git a/18.md b/18.md index 3314bf3a41b04e609d80009ab1fd30da29b09baa..a995301272fa54eb7075ef29fecc7b3aaebcc10e 100644 --- a/18.md +++ b/18.md @@ -347,9 +347,9 @@ network.add(layers.Dense(units=1)) 因为我们正在训练回归,所以我们应该使用适当的损失函数和评估度量,在我们的例子中是均方误差: -$\operatorname {MSE}={\frac {1}{n}}\sum_{{i=1}}^{n}({\hat {y_{i}}}-y_{i})^{2}$ +![\operatorname {MSE}={\frac {1}{n}}\sum_{{i=1}}^{n}({\hat {y_{i}}}-y_{i})^{2}](../Images/tex-1a68df3b73be15a6da50bd6cfdba832a.gif) -其中 $n$ 是观测数量,$y_{i}$ 是我们试图预测的目标 $y$ 对于观测 $i$ 的真实值, ${\hat{y_{i}}$ 是 $y_{i}$ 的模型预测值。 +其中 ![n](../Images/tex-7b8b965ad4bca0e41ab51de7b31363a1.gif) 是观测数量,![y_{i}](../Images/tex-18daef71b5d25ce76b8628a81e4fc76b.gif) 是我们试图预测的目标 ![y](../Images/tex-415290769594460e2e485922904f345d.gif) 对于观测 ![i](../Images/tex-865c0c0b4ab0e063e5caa3387c1a8741.gif) 的真实值, ![{\hat{y_{i}}](../Images/tex-1aa7c4b9ac179483858f457df9ee441b.gif) 是 ![y_{i}](../Images/tex-18daef71b5d25ce76b8628a81e4fc76b.gif) 的模型预测值。 ```py # 编译神经网络 diff --git a/2.md b/2.md index 28a69aba60f826912fe8041c5cec1db9bbe179fe..2066257c20647ee7b4f664b838459dd6c3aeb25f 100644 --- a/2.md +++ b/2.md @@ -427,7 +427,7 @@ saved_model = pickle.dumps(clf) # 查看 pickled 模型 saved_model -# b'\x80\x03csklearn.linear_model.logistic\nLogisticRegression\nq\x00)\x81q\x01}q\x02(X\x07\x00\x00\x00penaltyq\x03X\x02\x00\x00\x00l2q\x04X\x0b\x00\x00\x00multi_classq\x05X\x03\x00\x00\x00ovrq\x06X\x08\x00\x00\x00max_iterq\x07KdX\x08\x00\x00\x00classes_q\x08cnumpy.core.multiarray\n_reconstruct\nq\tcnumpy\nndarray\nq\nK\x00\x85q\x0bC\x01bq\x0c\x87q\rRq\x0e(K\x01K\x03\x85q\x0fcnumpy\ndtype\nq\x10X\x02\x00\x00\x00i8q\x11K\x00K\x01\x87q\x12Rq\x13(K\x03X\x01\x00\x00\x00X\t\x00\x00\x00liblinearq?X\x0c\x00\x00\[[email protected]](/cdn-cgi/l/email-protection)' +# b'\x80\x03csklearn.linear_model.logistic\nLogisticRegression\nq\x00)\x81q\x01}q\x02(X\x07\x00\x00\x00penaltyq\x03X\x02\x00\x00\x00l2q\x04X\x0b\x00\x00\x00multi_classq\x05X\x03\x00\x00\x00ovrq\x06X\x08\x00\x00\x00max_iterq\x07KdX\x08\x00\x00\x00classes_q\x08cnumpy.core.multiarray\n_reconstruct\nq\tcnumpy\nndarray\nq\nK\x00\x85q\x0bC\x01bq\x0c\x87q\rRq\x0e(K\x01K\x03\x85q\x0fcnumpy\ndtype\nq\x10X\x02\x00\x00\x00i8q\x11K\x00K\x01\x87q\x12Rq\x13(K\x03X\x01\x00\x00\x00X\t\x00\x00\x00liblinearq?X\x0c\x00\x00\[[email protected]](/cdn-cgi/l/email-protection)' # 加载 pickled 模型 clf_from_pickle = pickle.loads(saved_model) diff --git a/21.md b/21.md index db33761405b35d6df95bc1b79b4c8dbe51f17895..f7c978eff1cafd80a9de48491c27142f813ec741 100644 --- a/21.md +++ b/21.md @@ -8,15 +8,15 @@ ## 贝塞尔校正 -贝塞尔的校正是我们在样本方差和样本标准差的计算中使用 $n-1$ 而不是 $n$ 的原因。 +贝塞尔的校正是我们在样本方差和样本标准差的计算中使用 ![n-1](../Images/tex-a438673491daae8148eae77373b6a467.gif) 而不是 ![n](../Images/tex-7b8b965ad4bca0e41ab51de7b31363a1.gif) 的原因。 样本方差: -$ s^2 = \frac {1}{n-1} \sum_{i=1}^n \left(x_i - \overline{x} \right)^ 2 $ +![ s^2 = \frac {1}{n-1} \sum_{i=1}^n \left(x_i - \overline{x} \right)^ 2 ](../Images/tex-5e956d2dac25a04b1f0384a339af61de.gif) 当我们计算样本方差时,我们试图估计总体方差,这是一个未知值。 为了进行这种估计,我们从样本与总体均值的平方差的平均值,来估计未知的总体方差。 这种估计技术的负面影响是,因为我们正在采样,我们更有可能观察到差较小的观测,因为它们更常见(例如它们是分布的中心)。 按照定义我们将低估总体方差。 -弗里德里希贝塞尔发现,通过将有偏差(未校正)的样本方差 $s_n^2 = \frac {1}{n} \sum_{i=1}^n \left(x_i - \overline{x} \right)^ 2$ 乘以 $\frac{n}{n-1}$,我们将能够减少这种偏差,从而能够准确估计总体方差和标准差。 乘法的最终结果是无偏样本方差。 +弗里德里希贝塞尔发现,通过将有偏差(未校正)的样本方差 ![s_n^2 = \frac {1}{n} \sum_{i=1}^n \left(x_i - \overline{x} \right)^ 2](../Images/tex-9a7cc99da8feacd5e7efd172ae2b9b5d.gif) 乘以 ![\frac{n}{n-1}](../Images/tex-b3d4a2c5b40d7af881f9d19730b6ea7c.gif),我们将能够减少这种偏差,从而能够准确估计总体方差和标准差。 乘法的最终结果是无偏样本方差。 ## 演示中心极限定律 @@ -96,9 +96,9 @@ y = [2,1,2,4.5,7,6.5,6,9,9.5] ``` 有许多等价的表达方式来计算皮尔逊相关系数(也称为皮尔逊的 r)。这是一个。 -$r={\frac {1}{n-1}}\sum_{i=1}^{n}\left({\frac {x_{i}-{\bar {x}}}{s_{x}}}\right)\left({\frac {y_{i}-{\bar {y}}}{s_{y}}}\right)$ +![r={\frac {1}{n-1}}\sum_{i=1}^{n}\left({\frac {x_{i}-{\bar {x}}}{s_{x}}}\right)\left({\frac {y_{i}-{\bar {y}}}{s_{y}}}\right)](../Images/tex-ddc7076014b85741e2dbfe52ec40ed52.gif) -其中 $s_{x}$ 和 $s_{y}$ 是 $x$ 和 $y $ 的标准差,$\left({\frac {x_{i}-{\bar {x}}}{s_{x}}}\right)$ 是 $x$ 和 $y$ 的[标准得分](https://en.wikipedia.org/wiki/Standard_score)。 +其中 ![s_{x}](../Images/tex-6b5eaa31568b521152a5aacec91548c2.gif) 和 ![s_{y}](../Images/tex-8c06f77a048c7032b6258f4ceddcac77.gif) 是 ![x](../Images/tex-9dd4e461268c8034f5c8564e155c67a6.gif) 和 ![y ](../Images/tex-5fdb0734a2a8679264029c65df7a492b.gif) 的标准差,![\left({\frac {x_{i}-{\bar {x}}}{s_{x}}}\right)](../Images/tex-9ed438b9777ace57e974cb63995679ed.gif) 是 ![x](../Images/tex-9dd4e461268c8034f5c8564e155c67a6.gif) 和 ![y](../Images/tex-415290769594460e2e485922904f345d.gif) 的[标准得分](https://en.wikipedia.org/wiki/Standard_score)。 ```py # 创建函数 @@ -281,13 +281,13 @@ import math data = [3,2,3,4,2,3,5,2,2,33,3,5,2,2,5,6,62,2,2,3,6,6,2,23,3,2,3] ``` -方差是衡量数据分布延展度的指标。 方差越大,数据点越“分散”。 方差,通常表示为 $ S^{2}$,计算方式如下: +方差是衡量数据分布延展度的指标。 方差越大,数据点越“分散”。 方差,通常表示为 ![ S^{2}](../Images/tex-10ac877830803e44c3b7dc1b104101dd.gif),计算方式如下: -$ \text{Population Variance} = S_n^{2} = \frac{1}{n}\sum_{i=1}^{n}(x_i-\bar{x})^{2}$ +![ \text{Population Variance} = S_n^{2} = \frac{1}{n}\sum_{i=1}^{n}(x_i-\bar{x})^{2}](../Images/tex-cea485c1212579d0e0fb0f665f5a85dd.gif) -$ \text{Sample Variance} = S_{n-1}^{2} = \frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})^{2}$ +![ \text{Sample Variance} = S_{n-1}^{2} = \frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})^{2}](../Images/tex-48d71f5dc3c36e27922ff67fe9e88c6e.gif) -其中 $n$ 是观测数,$\bar{x}$ 是观察值的平均值,$x_i-\bar{x}$ 是单个观察值减去数据均值。 请注意,如果我们根据来自该总体的样本估计总体的方差,我们应该使用第二个等式,将 $n$ 替换为 $n-1$。 +其中 ![n](../Images/tex-7b8b965ad4bca0e41ab51de7b31363a1.gif) 是观测数,![\bar{x}](../Images/tex-6fbdf291cda891b99cf211417ad1df18.gif) 是观察值的平均值,![x_i-\bar{x}](../Images/tex-d5530fdea73b725bbdb348dee89e4a20.gif) 是单个观察值减去数据均值。 请注意,如果我们根据来自该总体的样本估计总体的方差,我们应该使用第二个等式,将 ![n](../Images/tex-7b8b965ad4bca0e41ab51de7b31363a1.gif) 替换为 ![n-1](../Images/tex-a438673491daae8148eae77373b6a467.gif)。 ```py # 计算 n diff --git a/8.md b/8.md index b4c0d131a87e79554d8de3f0a8bd858878494afe..cee75d6984435daf7c9f0d970f1a434d6d3ed6ec 100644 --- a/8.md +++ b/8.md @@ -8,7 +8,7 @@ ## 用于特征选取的 ANOVA F 值 -如果特征是类别的,计算每个特征与目标向量之间的卡方($\chi^{2}$)统计量。 但是,如果特征是定量的,则计算每个特征与目标向量之间的 ANOVA F 值。 +如果特征是类别的,计算每个特征与目标向量之间的卡方(![\chi^{2}](../Images/tex-2f728dbcde765f5a357bce9752c0d878.gif))统计量。 但是,如果特征是定量的,则计算每个特征与目标向量之间的 ANOVA F 值。 F 值得分检查当我们按照目标向量对数字特征进行分组时,每个组的均值是否显着不同。 @@ -202,9 +202,9 @@ X = [[0, 1, 0], 在二元特征(即伯努利随机变量)中,方差计算如下: -$$\operatorname {Var} (x)= p(1-p)$$ +![![\operatorname {Var} (x)= p(1-p)](../Images/tex-46277250c0e8d4fadf188d0d22fa1343.gif)](../Images/tex-6959801ea921957ed53ddaab936b9409.gif) -其中 $p$ 是类 1 观测的比例。 因此,通过设置 $p$,我们可以删除绝大多数观察是类 1 的特征。 +其中 ![p](../Images/tex-83878c91171338902e0fe0fb97a8c47a.gif) 是类 1 观测的比例。 因此,通过设置 ![p](../Images/tex-83878c91171338902e0fe0fb97a8c47a.gif),我们可以删除绝大多数观察是类 1 的特征。 ```py # Run threshold by variance diff --git a/img/tex-020a9f6f179050a671f6f6f28169b20d.gif b/img/tex-020a9f6f179050a671f6f6f28169b20d.gif new file mode 100644 index 0000000000000000000000000000000000000000..f5c5737207447e3692d8b2b1b2eb3f7ab9dd8cee Binary files /dev/null and b/img/tex-020a9f6f179050a671f6f6f28169b20d.gif differ diff --git a/img/tex-02129bb861061d1a052c592e2dc6b383.gif b/img/tex-02129bb861061d1a052c592e2dc6b383.gif new file mode 100644 index 0000000000000000000000000000000000000000..5310216448fe4cc9a2ce4d3c20ee697892f5b17e Binary files /dev/null and b/img/tex-02129bb861061d1a052c592e2dc6b383.gif differ diff --git a/img/tex-08ab6c8d7eefc2ed7722b28e671aa0bc.gif b/img/tex-08ab6c8d7eefc2ed7722b28e671aa0bc.gif new file mode 100644 index 0000000000000000000000000000000000000000..d7e66055a1cdd80fc0caa4163c8c2d01c3f44ae2 Binary files /dev/null and b/img/tex-08ab6c8d7eefc2ed7722b28e671aa0bc.gif differ diff --git a/img/tex-08c711a5590de57d9dd77d7b5ba4398f.gif b/img/tex-08c711a5590de57d9dd77d7b5ba4398f.gif new file mode 100644 index 0000000000000000000000000000000000000000..df6d1444a3fd301408d4f3367c4734f394d99c45 Binary files /dev/null and b/img/tex-08c711a5590de57d9dd77d7b5ba4398f.gif differ diff --git a/img/tex-09663031eaa8ade66806d053272e579c.gif b/img/tex-09663031eaa8ade66806d053272e579c.gif new file mode 100644 index 0000000000000000000000000000000000000000..09a2e4bd734248eb99c649160fc3d3819e7d6609 Binary files /dev/null and b/img/tex-09663031eaa8ade66806d053272e579c.gif differ diff --git a/img/tex-0d61f8370cad1d412f80b84d143e1257.gif b/img/tex-0d61f8370cad1d412f80b84d143e1257.gif new file mode 100644 index 0000000000000000000000000000000000000000..4b5ffe596011e0f313548d832edb157ae57eb27a Binary files /dev/null and b/img/tex-0d61f8370cad1d412f80b84d143e1257.gif differ diff --git a/img/tex-10ac877830803e44c3b7dc1b104101dd.gif b/img/tex-10ac877830803e44c3b7dc1b104101dd.gif new file mode 100644 index 0000000000000000000000000000000000000000..c9081d14a8b2b675092614f4b3363b77b25e2850 Binary files /dev/null and b/img/tex-10ac877830803e44c3b7dc1b104101dd.gif differ diff --git a/img/tex-18daef71b5d25ce76b8628a81e4fc76b.gif b/img/tex-18daef71b5d25ce76b8628a81e4fc76b.gif new file mode 100644 index 0000000000000000000000000000000000000000..6bae7af97ad661d46870498ad8302fbd995304db Binary files /dev/null and b/img/tex-18daef71b5d25ce76b8628a81e4fc76b.gif differ diff --git a/img/tex-1a68df3b73be15a6da50bd6cfdba832a.gif b/img/tex-1a68df3b73be15a6da50bd6cfdba832a.gif new file mode 100644 index 0000000000000000000000000000000000000000..e346d1e56de99d17c3d1a6be718257b79f5b40a9 Binary files /dev/null and b/img/tex-1a68df3b73be15a6da50bd6cfdba832a.gif differ diff --git a/img/tex-1aa7c4b9ac179483858f457df9ee441b.gif b/img/tex-1aa7c4b9ac179483858f457df9ee441b.gif new file mode 100644 index 0000000000000000000000000000000000000000..475318779b56c2dca2ae13b29d0b7ca3556e1ab7 Binary files /dev/null and b/img/tex-1aa7c4b9ac179483858f457df9ee441b.gif differ diff --git a/img/tex-1ae38954f6cba2eafda4e9c34df8d944.gif b/img/tex-1ae38954f6cba2eafda4e9c34df8d944.gif new file mode 100644 index 0000000000000000000000000000000000000000..eae31016835ee86e482b1043c8d574cb894f1582 Binary files /dev/null and b/img/tex-1ae38954f6cba2eafda4e9c34df8d944.gif differ diff --git a/img/tex-272ba5cfd2789d670bc65e40587345c3.gif b/img/tex-272ba5cfd2789d670bc65e40587345c3.gif new file mode 100644 index 0000000000000000000000000000000000000000..0018119f206bce41bdf13ee768ae7242865bd1b5 Binary files /dev/null and b/img/tex-272ba5cfd2789d670bc65e40587345c3.gif differ diff --git a/img/tex-2b30ddf4881c9acfc3bc0cf2880eefaa.gif b/img/tex-2b30ddf4881c9acfc3bc0cf2880eefaa.gif new file mode 100644 index 0000000000000000000000000000000000000000..dc0ecb5022803986f53e36a18dc7c5c11d400cbe Binary files /dev/null and b/img/tex-2b30ddf4881c9acfc3bc0cf2880eefaa.gif differ diff --git a/img/tex-2f728dbcde765f5a357bce9752c0d878.gif b/img/tex-2f728dbcde765f5a357bce9752c0d878.gif new file mode 100644 index 0000000000000000000000000000000000000000..048521d5b39fb592919603a92e11350ef399fc64 Binary files /dev/null and b/img/tex-2f728dbcde765f5a357bce9752c0d878.gif differ diff --git a/img/tex-31f830c208ca5fcbf1bca34de8d796a6.gif b/img/tex-31f830c208ca5fcbf1bca34de8d796a6.gif new file mode 100644 index 0000000000000000000000000000000000000000..e464509c9b73218dfc0f71f29f32a7ee938868ad Binary files /dev/null and b/img/tex-31f830c208ca5fcbf1bca34de8d796a6.gif differ diff --git a/img/tex-347685e5ebc84836b7aea484b48eb555.gif b/img/tex-347685e5ebc84836b7aea484b48eb555.gif new file mode 100644 index 0000000000000000000000000000000000000000..a3b1e24d5b6363d3d316a0f8089680c38151a0f0 Binary files /dev/null and b/img/tex-347685e5ebc84836b7aea484b48eb555.gif differ diff --git a/img/tex-363b122c528f54df4a0446b6bab05515.gif b/img/tex-363b122c528f54df4a0446b6bab05515.gif new file mode 100644 index 0000000000000000000000000000000000000000..aaf30bcdc40454f22a37f33496431c8b95c62f1c Binary files /dev/null and b/img/tex-363b122c528f54df4a0446b6bab05515.gif differ diff --git a/img/tex-41410fd2b1e89fe55a7638312d82540c.gif b/img/tex-41410fd2b1e89fe55a7638312d82540c.gif new file mode 100644 index 0000000000000000000000000000000000000000..f0ea974bfd7d695531e8f0e49db165333b521a81 Binary files /dev/null and b/img/tex-41410fd2b1e89fe55a7638312d82540c.gif differ diff --git a/img/tex-415290769594460e2e485922904f345d.gif b/img/tex-415290769594460e2e485922904f345d.gif new file mode 100644 index 0000000000000000000000000000000000000000..91cee9dd2a9c4a536f74d9f71fbe74e910d72d0f Binary files /dev/null and b/img/tex-415290769594460e2e485922904f345d.gif differ diff --git a/img/tex-45fe873d5f83badc655eed13e1cd8ee8.gif b/img/tex-45fe873d5f83badc655eed13e1cd8ee8.gif new file mode 100644 index 0000000000000000000000000000000000000000..10c473e353dbb4b899a1c11dab134d1ebc885d0e Binary files /dev/null and b/img/tex-45fe873d5f83badc655eed13e1cd8ee8.gif differ diff --git a/img/tex-46277250c0e8d4fadf188d0d22fa1343.gif b/img/tex-46277250c0e8d4fadf188d0d22fa1343.gif new file mode 100644 index 0000000000000000000000000000000000000000..af1c3b5dc2ddef368530228f8120113b98e6f288 Binary files /dev/null and b/img/tex-46277250c0e8d4fadf188d0d22fa1343.gif differ diff --git a/img/tex-48d71f5dc3c36e27922ff67fe9e88c6e.gif b/img/tex-48d71f5dc3c36e27922ff67fe9e88c6e.gif new file mode 100644 index 0000000000000000000000000000000000000000..cbd0d9355d672115166256526721984a5daeb3b6 Binary files /dev/null and b/img/tex-48d71f5dc3c36e27922ff67fe9e88c6e.gif differ diff --git a/img/tex-4aa861124eff57dd7988faa6753e8b7e.gif b/img/tex-4aa861124eff57dd7988faa6753e8b7e.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ea3b9e33e6b084dff31ae9858460fb4b427c8cc Binary files /dev/null and b/img/tex-4aa861124eff57dd7988faa6753e8b7e.gif differ diff --git a/img/tex-50d7cc01f0e1e57d81240e646606b14a.gif b/img/tex-50d7cc01f0e1e57d81240e646606b14a.gif new file mode 100644 index 0000000000000000000000000000000000000000..f0989e3c01d1c07892986a24e1ae4f3967f85e3f Binary files /dev/null and b/img/tex-50d7cc01f0e1e57d81240e646606b14a.gif differ diff --git a/img/tex-52539b56794b13d260a84f3461c80f49.gif b/img/tex-52539b56794b13d260a84f3461c80f49.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f3441ea534c673494394fbf83f4dd27949c9cc1 Binary files /dev/null and b/img/tex-52539b56794b13d260a84f3461c80f49.gif differ diff --git a/img/tex-55ddce33f44e17960c51e0b727ed0c1b.gif b/img/tex-55ddce33f44e17960c51e0b727ed0c1b.gif new file mode 100644 index 0000000000000000000000000000000000000000..2e4ddf2fce3ac041812a2f51a6622dbe4592381e Binary files /dev/null and b/img/tex-55ddce33f44e17960c51e0b727ed0c1b.gif differ diff --git a/img/tex-5765c72ae234bd48dadb3a8bfd20580b.gif b/img/tex-5765c72ae234bd48dadb3a8bfd20580b.gif new file mode 100644 index 0000000000000000000000000000000000000000..76a25528eb45f427e7358fdf3a6ea2072337760c Binary files /dev/null and b/img/tex-5765c72ae234bd48dadb3a8bfd20580b.gif differ diff --git a/img/tex-5af9e28d609b16eb25693f44ea9d7a8f.gif b/img/tex-5af9e28d609b16eb25693f44ea9d7a8f.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b30ff66df53fb9783d1fd73fbbfb2a6bc3acaa0 Binary files /dev/null and b/img/tex-5af9e28d609b16eb25693f44ea9d7a8f.gif differ diff --git a/img/tex-5e956d2dac25a04b1f0384a339af61de.gif b/img/tex-5e956d2dac25a04b1f0384a339af61de.gif new file mode 100644 index 0000000000000000000000000000000000000000..e93543a68a46caae0d55de102fdb2a2bbf4812c6 Binary files /dev/null and b/img/tex-5e956d2dac25a04b1f0384a339af61de.gif differ diff --git a/img/tex-5fdb0734a2a8679264029c65df7a492b.gif b/img/tex-5fdb0734a2a8679264029c65df7a492b.gif new file mode 100644 index 0000000000000000000000000000000000000000..91cee9dd2a9c4a536f74d9f71fbe74e910d72d0f Binary files /dev/null and b/img/tex-5fdb0734a2a8679264029c65df7a492b.gif differ diff --git a/img/tex-682edd15f544ef9727367918185ee5f4.gif b/img/tex-682edd15f544ef9727367918185ee5f4.gif new file mode 100644 index 0000000000000000000000000000000000000000..17d6a12a5425582063877a1f98770f98a71accb3 Binary files /dev/null and b/img/tex-682edd15f544ef9727367918185ee5f4.gif differ diff --git a/img/tex-68ce6a2b5a771f689d84ac8e24e31ddf.gif b/img/tex-68ce6a2b5a771f689d84ac8e24e31ddf.gif new file mode 100644 index 0000000000000000000000000000000000000000..d3513c1dea6687eb3dcd6dd493294a798a40f337 Binary files /dev/null and b/img/tex-68ce6a2b5a771f689d84ac8e24e31ddf.gif differ diff --git a/img/tex-6959801ea921957ed53ddaab936b9409.gif b/img/tex-6959801ea921957ed53ddaab936b9409.gif new file mode 100644 index 0000000000000000000000000000000000000000..6b9aeb61b47b0406617f264938860f05cba2392f Binary files /dev/null and b/img/tex-6959801ea921957ed53ddaab936b9409.gif differ diff --git a/img/tex-69c694c13d6cb056f400aff019f023dd.gif b/img/tex-69c694c13d6cb056f400aff019f023dd.gif new file mode 100644 index 0000000000000000000000000000000000000000..216ace5a74cbec23620f3b96e790f3a03eaa3252 Binary files /dev/null and b/img/tex-69c694c13d6cb056f400aff019f023dd.gif differ diff --git a/img/tex-6b5a5f025640932b2554f6d400b3e45f.gif b/img/tex-6b5a5f025640932b2554f6d400b3e45f.gif new file mode 100644 index 0000000000000000000000000000000000000000..56a869d69a594c29253a3efe34f1efd216dd6372 Binary files /dev/null and b/img/tex-6b5a5f025640932b2554f6d400b3e45f.gif differ diff --git a/img/tex-6b5eaa31568b521152a5aacec91548c2.gif b/img/tex-6b5eaa31568b521152a5aacec91548c2.gif new file mode 100644 index 0000000000000000000000000000000000000000..e4f077316e17434f516efb1fb21661377fe51930 Binary files /dev/null and b/img/tex-6b5eaa31568b521152a5aacec91548c2.gif differ diff --git a/img/tex-6fbdf291cda891b99cf211417ad1df18.gif b/img/tex-6fbdf291cda891b99cf211417ad1df18.gif new file mode 100644 index 0000000000000000000000000000000000000000..1cdb5019713c8c0b7d8b36699c4b703c99a41e6d Binary files /dev/null and b/img/tex-6fbdf291cda891b99cf211417ad1df18.gif differ diff --git a/img/tex-6fe2793f9b6ee038f11e89402bbf3c84.gif b/img/tex-6fe2793f9b6ee038f11e89402bbf3c84.gif new file mode 100644 index 0000000000000000000000000000000000000000..d473a254b69a487d685ad591371c24b30241c166 Binary files /dev/null and b/img/tex-6fe2793f9b6ee038f11e89402bbf3c84.gif differ diff --git a/img/tex-7015ea99e7b80644c1630cdfb0f6bbda.gif b/img/tex-7015ea99e7b80644c1630cdfb0f6bbda.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6792568640da5f8ced059a83fe7e4e94a9bac36 Binary files /dev/null and b/img/tex-7015ea99e7b80644c1630cdfb0f6bbda.gif differ diff --git a/img/tex-70e59a996bd69a0c21878b4093375e92.gif b/img/tex-70e59a996bd69a0c21878b4093375e92.gif new file mode 100644 index 0000000000000000000000000000000000000000..d9ad7b394ca60da70b57b22a8f30ae63b6c594f5 Binary files /dev/null and b/img/tex-70e59a996bd69a0c21878b4093375e92.gif differ diff --git a/img/tex-777eeb07996381e00006e77dd1aaf39f.gif b/img/tex-777eeb07996381e00006e77dd1aaf39f.gif new file mode 100644 index 0000000000000000000000000000000000000000..920ec1a9e1a842f1ad693a85bcfe34b2dd0b327d Binary files /dev/null and b/img/tex-777eeb07996381e00006e77dd1aaf39f.gif differ diff --git a/img/tex-7b7f9dbfea05c83784f8b85149852f08.gif b/img/tex-7b7f9dbfea05c83784f8b85149852f08.gif new file mode 100644 index 0000000000000000000000000000000000000000..a185cba282685452b55b2cd5e246a9e6256209ea Binary files /dev/null and b/img/tex-7b7f9dbfea05c83784f8b85149852f08.gif differ diff --git a/img/tex-7b8b965ad4bca0e41ab51de7b31363a1.gif b/img/tex-7b8b965ad4bca0e41ab51de7b31363a1.gif new file mode 100644 index 0000000000000000000000000000000000000000..cb98ad41369692f902cd2dbf67babac333aec68e Binary files /dev/null and b/img/tex-7b8b965ad4bca0e41ab51de7b31363a1.gif differ diff --git a/img/tex-7d627c4584744c44dde8a2e35bcfb90c.gif b/img/tex-7d627c4584744c44dde8a2e35bcfb90c.gif new file mode 100644 index 0000000000000000000000000000000000000000..c96366930330ea0c4c0c12915e849b153d75ed3b Binary files /dev/null and b/img/tex-7d627c4584744c44dde8a2e35bcfb90c.gif differ diff --git a/img/tex-7e18dabda345d4f3a3642ecf7fa61ccf.gif b/img/tex-7e18dabda345d4f3a3642ecf7fa61ccf.gif new file mode 100644 index 0000000000000000000000000000000000000000..c7679c999f78b181e140354730f085817f13983f Binary files /dev/null and b/img/tex-7e18dabda345d4f3a3642ecf7fa61ccf.gif differ diff --git a/img/tex-7fc56270e7a70fa81a5935b72eacbe29.gif b/img/tex-7fc56270e7a70fa81a5935b72eacbe29.gif new file mode 100644 index 0000000000000000000000000000000000000000..8b541afd137eb4c9887b07e52e3a14bf085e1d59 Binary files /dev/null and b/img/tex-7fc56270e7a70fa81a5935b72eacbe29.gif differ diff --git a/img/tex-83878c91171338902e0fe0fb97a8c47a.gif b/img/tex-83878c91171338902e0fe0fb97a8c47a.gif new file mode 100644 index 0000000000000000000000000000000000000000..242e0a906b8c55999d97ebdae88dcc85a3868d94 Binary files /dev/null and b/img/tex-83878c91171338902e0fe0fb97a8c47a.gif differ diff --git a/img/tex-865c0c0b4ab0e063e5caa3387c1a8741.gif b/img/tex-865c0c0b4ab0e063e5caa3387c1a8741.gif new file mode 100644 index 0000000000000000000000000000000000000000..559092b5789eb695b266389822ae3409cbc639d9 Binary files /dev/null and b/img/tex-865c0c0b4ab0e063e5caa3387c1a8741.gif differ diff --git a/img/tex-8a842403dafad0ee564a1a212d19e77a.gif b/img/tex-8a842403dafad0ee564a1a212d19e77a.gif new file mode 100644 index 0000000000000000000000000000000000000000..d6b079282dcc08b62f3a4d4d4774c03928683393 Binary files /dev/null and b/img/tex-8a842403dafad0ee564a1a212d19e77a.gif differ diff --git a/img/tex-8c06f77a048c7032b6258f4ceddcac77.gif b/img/tex-8c06f77a048c7032b6258f4ceddcac77.gif new file mode 100644 index 0000000000000000000000000000000000000000..58c13866feb832710cf0a5b4ba28a2dfcf744942 Binary files /dev/null and b/img/tex-8c06f77a048c7032b6258f4ceddcac77.gif differ diff --git a/img/tex-8ce4b16b22b58894aa86c421e8759df3.gif b/img/tex-8ce4b16b22b58894aa86c421e8759df3.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e2a7b41f89e0a0b0c3ae50eedf7d206bcc815d4 Binary files /dev/null and b/img/tex-8ce4b16b22b58894aa86c421e8759df3.gif differ diff --git a/img/tex-8d62e469fb30ed435a668eb5c035b1f6.gif b/img/tex-8d62e469fb30ed435a668eb5c035b1f6.gif new file mode 100644 index 0000000000000000000000000000000000000000..6bae7af97ad661d46870498ad8302fbd995304db Binary files /dev/null and b/img/tex-8d62e469fb30ed435a668eb5c035b1f6.gif differ diff --git a/img/tex-8f43fce8dbdf3c4f8d0ac91f0de1d43d.gif b/img/tex-8f43fce8dbdf3c4f8d0ac91f0de1d43d.gif new file mode 100644 index 0000000000000000000000000000000000000000..174bf78eb08f68979c8bb0312c67338616ccfca1 Binary files /dev/null and b/img/tex-8f43fce8dbdf3c4f8d0ac91f0de1d43d.gif differ diff --git a/img/tex-8fa14cdd754f91cc6554c9e71929cce7.gif b/img/tex-8fa14cdd754f91cc6554c9e71929cce7.gif new file mode 100644 index 0000000000000000000000000000000000000000..3e124a2bc30cf2e43c50c8c718536282c0d3ae49 Binary files /dev/null and b/img/tex-8fa14cdd754f91cc6554c9e71929cce7.gif differ diff --git a/img/tex-9081cb9b8d4cd5ee177a3287608f7424.gif b/img/tex-9081cb9b8d4cd5ee177a3287608f7424.gif new file mode 100644 index 0000000000000000000000000000000000000000..ea4d352eed274222e210db7b7b3001b0ec895512 Binary files /dev/null and b/img/tex-9081cb9b8d4cd5ee177a3287608f7424.gif differ diff --git a/img/tex-99600e95adcc97c986df86d4b612cf52.gif b/img/tex-99600e95adcc97c986df86d4b612cf52.gif new file mode 100644 index 0000000000000000000000000000000000000000..ae3ac06243a19c9d4c7f4b3913ce1f2c96045b9d Binary files /dev/null and b/img/tex-99600e95adcc97c986df86d4b612cf52.gif differ diff --git a/img/tex-9a7cc99da8feacd5e7efd172ae2b9b5d.gif b/img/tex-9a7cc99da8feacd5e7efd172ae2b9b5d.gif new file mode 100644 index 0000000000000000000000000000000000000000..aaeca622c27ee9dc7deab0c801fa4efe49972c81 Binary files /dev/null and b/img/tex-9a7cc99da8feacd5e7efd172ae2b9b5d.gif differ diff --git a/img/tex-9d5ed678fe57bcca610140957afab571.gif b/img/tex-9d5ed678fe57bcca610140957afab571.gif new file mode 100644 index 0000000000000000000000000000000000000000..cb7c2865c8c94f006d44493dc262bf9c8b3f3b6b Binary files /dev/null and b/img/tex-9d5ed678fe57bcca610140957afab571.gif differ diff --git a/img/tex-9dd4e461268c8034f5c8564e155c67a6.gif b/img/tex-9dd4e461268c8034f5c8564e155c67a6.gif new file mode 100644 index 0000000000000000000000000000000000000000..216f558d85885d0405270ffa05a0eadf67cfde05 Binary files /dev/null and b/img/tex-9dd4e461268c8034f5c8564e155c67a6.gif differ diff --git a/img/tex-9ed438b9777ace57e974cb63995679ed.gif b/img/tex-9ed438b9777ace57e974cb63995679ed.gif new file mode 100644 index 0000000000000000000000000000000000000000..c819d674918c831300defb759279f32367eb0308 Binary files /dev/null and b/img/tex-9ed438b9777ace57e974cb63995679ed.gif differ diff --git a/img/tex-a061b9ec570e172274d24a31b7f2ec4e.gif b/img/tex-a061b9ec570e172274d24a31b7f2ec4e.gif new file mode 100644 index 0000000000000000000000000000000000000000..7bf298afc254ec26f21cc7a0ed7afa7f18f434d5 Binary files /dev/null and b/img/tex-a061b9ec570e172274d24a31b7f2ec4e.gif differ diff --git a/img/tex-a276b69c27fa2fc5adb0a238cb21baa3.gif b/img/tex-a276b69c27fa2fc5adb0a238cb21baa3.gif new file mode 100644 index 0000000000000000000000000000000000000000..01e9a17240f747f7d69987f5cf8c936c0d90b5d7 Binary files /dev/null and b/img/tex-a276b69c27fa2fc5adb0a238cb21baa3.gif differ diff --git a/img/tex-a438673491daae8148eae77373b6a467.gif b/img/tex-a438673491daae8148eae77373b6a467.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc3c15a7e3b52068ccfc7a7e67f6c10875583036 Binary files /dev/null and b/img/tex-a438673491daae8148eae77373b6a467.gif differ diff --git a/img/tex-a57d522c3188c5cf8f0818e9d1a2946b.gif b/img/tex-a57d522c3188c5cf8f0818e9d1a2946b.gif new file mode 100644 index 0000000000000000000000000000000000000000..d6468020be1fa9ad6873d6ccd9f6afd8a1fb44de Binary files /dev/null and b/img/tex-a57d522c3188c5cf8f0818e9d1a2946b.gif differ diff --git a/img/tex-a5f3c6a11b03839d46af9fb43c97c188.gif b/img/tex-a5f3c6a11b03839d46af9fb43c97c188.gif new file mode 100644 index 0000000000000000000000000000000000000000..254084de37d77e0d240826748052722a8a9be0e7 Binary files /dev/null and b/img/tex-a5f3c6a11b03839d46af9fb43c97c188.gif differ diff --git a/img/tex-a6b711ff5b6087f86069d31ba049add7.gif b/img/tex-a6b711ff5b6087f86069d31ba049add7.gif new file mode 100644 index 0000000000000000000000000000000000000000..ee99d1150e3c1994ad373242b78404de1900e91e Binary files /dev/null and b/img/tex-a6b711ff5b6087f86069d31ba049add7.gif differ diff --git a/img/tex-a97118fb9e8d7e006a466bfc0771f888.gif b/img/tex-a97118fb9e8d7e006a466bfc0771f888.gif new file mode 100644 index 0000000000000000000000000000000000000000..eb13ff094a6b51a4ec888a63666300523673d2b4 Binary files /dev/null and b/img/tex-a97118fb9e8d7e006a466bfc0771f888.gif differ diff --git a/img/tex-ad6d5470eaff252c993327c248d56b0e.gif b/img/tex-ad6d5470eaff252c993327c248d56b0e.gif new file mode 100644 index 0000000000000000000000000000000000000000..3e0f3f0efed33f6614473763119dc336af09a662 Binary files /dev/null and b/img/tex-ad6d5470eaff252c993327c248d56b0e.gif differ diff --git a/img/tex-b3d4a2c5b40d7af881f9d19730b6ea7c.gif b/img/tex-b3d4a2c5b40d7af881f9d19730b6ea7c.gif new file mode 100644 index 0000000000000000000000000000000000000000..1373d418081cb0701fb24ae4a19eb03f5ac71094 Binary files /dev/null and b/img/tex-b3d4a2c5b40d7af881f9d19730b6ea7c.gif differ diff --git a/img/tex-b4ceec2c4656f5c1e7fc76c59c4f80f3.gif b/img/tex-b4ceec2c4656f5c1e7fc76c59c4f80f3.gif new file mode 100644 index 0000000000000000000000000000000000000000..7e0178ff0f64b9c1da4770b0144fba612adcd06b Binary files /dev/null and b/img/tex-b4ceec2c4656f5c1e7fc76c59c4f80f3.gif differ diff --git a/img/tex-b6253f470c6bf31d67e04d80d43704be.gif b/img/tex-b6253f470c6bf31d67e04d80d43704be.gif new file mode 100644 index 0000000000000000000000000000000000000000..a8541933063979ef2b2a871c860de9451f7a090d Binary files /dev/null and b/img/tex-b6253f470c6bf31d67e04d80d43704be.gif differ diff --git a/img/tex-bde5f474d3e4c7e38ddd6440a38a7f4e.gif b/img/tex-bde5f474d3e4c7e38ddd6440a38a7f4e.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e97b16a5cee483a8e864193282f4ac16a0640f4 Binary files /dev/null and b/img/tex-bde5f474d3e4c7e38ddd6440a38a7f4e.gif differ diff --git a/img/tex-c39d1645d55ca4afb20c8d6a365615bb.gif b/img/tex-c39d1645d55ca4afb20c8d6a365615bb.gif new file mode 100644 index 0000000000000000000000000000000000000000..48b1571b77663745ed68f6ee95a0b9cf559c4c57 Binary files /dev/null and b/img/tex-c39d1645d55ca4afb20c8d6a365615bb.gif differ diff --git a/img/tex-c9f6d8557ce40f989fa727b5c0bb1ddf.gif b/img/tex-c9f6d8557ce40f989fa727b5c0bb1ddf.gif new file mode 100644 index 0000000000000000000000000000000000000000..ce2e3c8af9b461e9afb0bd058f4819d1bd539390 Binary files /dev/null and b/img/tex-c9f6d8557ce40f989fa727b5c0bb1ddf.gif differ diff --git a/img/tex-cea485c1212579d0e0fb0f665f5a85dd.gif b/img/tex-cea485c1212579d0e0fb0f665f5a85dd.gif new file mode 100644 index 0000000000000000000000000000000000000000..04d5084897b18834044a77da92e1502e7f7288bf Binary files /dev/null and b/img/tex-cea485c1212579d0e0fb0f665f5a85dd.gif differ diff --git a/img/tex-d5530fdea73b725bbdb348dee89e4a20.gif b/img/tex-d5530fdea73b725bbdb348dee89e4a20.gif new file mode 100644 index 0000000000000000000000000000000000000000..03d3e98dd56c376ac5b1921663b4328aa08bda7a Binary files /dev/null and b/img/tex-d5530fdea73b725bbdb348dee89e4a20.gif differ diff --git a/img/tex-d5cd57541fb4b75d5fdbd688f87323d5.gif b/img/tex-d5cd57541fb4b75d5fdbd688f87323d5.gif new file mode 100644 index 0000000000000000000000000000000000000000..e6b9b74603f7bf0b15ffba314cfd1b6e92077d3d Binary files /dev/null and b/img/tex-d5cd57541fb4b75d5fdbd688f87323d5.gif differ diff --git a/img/tex-d8dd7d0f3eb7145ca41c711457b7eb8f.gif b/img/tex-d8dd7d0f3eb7145ca41c711457b7eb8f.gif new file mode 100644 index 0000000000000000000000000000000000000000..31cbb57d4e4b879e75d629075eb1a3c5070caff7 Binary files /dev/null and b/img/tex-d8dd7d0f3eb7145ca41c711457b7eb8f.gif differ diff --git a/img/tex-d945100c5fa6a400570dcacfb1fc9869.gif b/img/tex-d945100c5fa6a400570dcacfb1fc9869.gif new file mode 100644 index 0000000000000000000000000000000000000000..6a55c12ed3ada12627029f9c82c352086bc61dba Binary files /dev/null and b/img/tex-d945100c5fa6a400570dcacfb1fc9869.gif differ diff --git a/img/tex-dabc824c5f8ee13faaae5a59fec9afdc.gif b/img/tex-dabc824c5f8ee13faaae5a59fec9afdc.gif new file mode 100644 index 0000000000000000000000000000000000000000..bc925a345cfa9ca8bfa2330e2c7929fd4ed9b535 Binary files /dev/null and b/img/tex-dabc824c5f8ee13faaae5a59fec9afdc.gif differ diff --git a/img/tex-ddc7076014b85741e2dbfe52ec40ed52.gif b/img/tex-ddc7076014b85741e2dbfe52ec40ed52.gif new file mode 100644 index 0000000000000000000000000000000000000000..6fd924b796292d839c93b6d82a78b7ab1ab4557f Binary files /dev/null and b/img/tex-ddc7076014b85741e2dbfe52ec40ed52.gif differ diff --git a/img/tex-de3f198290bfe64e8e3f289f20c44434.gif b/img/tex-de3f198290bfe64e8e3f289f20c44434.gif new file mode 100644 index 0000000000000000000000000000000000000000..4aae18e75fede1b422f1a51c04f1f2d2611290cd Binary files /dev/null and b/img/tex-de3f198290bfe64e8e3f289f20c44434.gif differ diff --git a/img/tex-e125e16b9b9b9a753459b31c44e565da.gif b/img/tex-e125e16b9b9b9a753459b31c44e565da.gif new file mode 100644 index 0000000000000000000000000000000000000000..4fb8841b852696f060dcad8ee9c14134aa66154d Binary files /dev/null and b/img/tex-e125e16b9b9b9a753459b31c44e565da.gif differ diff --git a/img/tex-e1671797c52e15f763380b45e841ec32.gif b/img/tex-e1671797c52e15f763380b45e841ec32.gif new file mode 100644 index 0000000000000000000000000000000000000000..e8b6865f836b67671302360ddeb765721986cfd8 Binary files /dev/null and b/img/tex-e1671797c52e15f763380b45e841ec32.gif differ diff --git a/img/tex-e5a7472d780a5a032c7775cc5e3ce901.gif b/img/tex-e5a7472d780a5a032c7775cc5e3ce901.gif new file mode 100644 index 0000000000000000000000000000000000000000..241c2cbed63347953576bbbe563dba89a6d905b0 Binary files /dev/null and b/img/tex-e5a7472d780a5a032c7775cc5e3ce901.gif differ diff --git a/img/tex-e8100be07fa5419af6c6738b934dfca0.gif b/img/tex-e8100be07fa5419af6c6738b934dfca0.gif new file mode 100644 index 0000000000000000000000000000000000000000..511278711e82e3730dac72f5c6c93478c4f59dd6 Binary files /dev/null and b/img/tex-e8100be07fa5419af6c6738b934dfca0.gif differ diff --git a/img/tex-ea7e2e0d45588bedd672db7688459b46.gif b/img/tex-ea7e2e0d45588bedd672db7688459b46.gif new file mode 100644 index 0000000000000000000000000000000000000000..8780f22d21f7c1453513c7863c41d59645c840a7 Binary files /dev/null and b/img/tex-ea7e2e0d45588bedd672db7688459b46.gif differ diff --git a/img/tex-ecc57614c202a2c740598474fdbbb88e.gif b/img/tex-ecc57614c202a2c740598474fdbbb88e.gif new file mode 100644 index 0000000000000000000000000000000000000000..25a2055c0ca78205840a51426f3325f25c482bd4 Binary files /dev/null and b/img/tex-ecc57614c202a2c740598474fdbbb88e.gif differ diff --git a/img/tex-f8281cafb08efe03bce3816f00fdd12d.gif b/img/tex-f8281cafb08efe03bce3816f00fdd12d.gif new file mode 100644 index 0000000000000000000000000000000000000000..3b998abe8b93e1f39949a422c4c22d182556c7c8 Binary files /dev/null and b/img/tex-f8281cafb08efe03bce3816f00fdd12d.gif differ diff --git a/img/tex-f9a3b8e9e501458e8face47cae8826de.gif b/img/tex-f9a3b8e9e501458e8face47cae8826de.gif new file mode 100644 index 0000000000000000000000000000000000000000..f8e5da6476673ddafbe70312ba0826ee1d52008c Binary files /dev/null and b/img/tex-f9a3b8e9e501458e8face47cae8826de.gif differ diff --git a/img/tex-fc3b69ffc2761499a8f26feaaf2f3057.gif b/img/tex-fc3b69ffc2761499a8f26feaaf2f3057.gif new file mode 100644 index 0000000000000000000000000000000000000000..15ddf7fdcfe84fec079d630efc1be68aecd09792 Binary files /dev/null and b/img/tex-fc3b69ffc2761499a8f26feaaf2f3057.gif differ diff --git a/img/tex-fd6a329594a8718f6de1a6d5728eb7b7.gif b/img/tex-fd6a329594a8718f6de1a6d5728eb7b7.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c205294b3fcc7794dce5b81572e856f2ecd4881 Binary files /dev/null and b/img/tex-fd6a329594a8718f6de1a6d5728eb7b7.gif differ diff --git a/src/process_tex.js b/src/process_tex.js new file mode 100644 index 0000000000000000000000000000000000000000..41b574cca5ec32e7895fe87f8aec65baf12f9e99 --- /dev/null +++ b/src/process_tex.js @@ -0,0 +1,51 @@ +var fs = require('fs') +var crypto = require('crypto') +var request = require('sync-request') + +var doc_dir = process.argv[2] || '..' +var img_dir = doc_dir + '/img' + +try { fs.mkdirSync(img_dir) } +catch(e) {} + +function processTex(md) { + + var rm; + while(rm = /\$(.+?)\$/g.exec(md)){ + var tex = rm[1] + //console.log(rm) + var url = 'http://latex.codecogs.com/gif.latex?' + + encodeURIComponent(tex) + var tex_md5 = crypto.createHash("md5").update(tex).digest('hex') + var img = request('get', url).getBody() + + // replace_all + md = md.split(rm[0]).join(`![${tex}](../Images/tex-${tex_md5}.gif)`) + fs.writeFileSync(`${img_dir}/tex-${tex_md5}.gif`, img) + + console.log(tex_md5) + } + + return md + +} + +function main() { + + var flist = fs.readdirSync(doc_dir).filter(s => s.endsWith('.md')) + + for(var fname of flist) { + + fname = doc_dir + '/' + fname + console.log(fname) + + var md = fs.readFileSync(fname, 'utf-8') + md = processTex(md) + fs.writeFileSync(fname, md) + } + + console.log('done') + +} + +main() \ No newline at end of file