提交 a72c99ea 编写于 作者: W wizardforcel

tex

上级 0191c91e
......@@ -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
# 拟合岭回归
......
......@@ -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
# 加载库
......
......@@ -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
# 创建决策树分类器对象
......
......@@ -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' 第一个和第二个自变量的值
......
......@@ -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
# 加载库
......
......@@ -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`):
......
......@@ -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
# 评估模型
......
......@@ -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
# 编译神经网络
......
......@@ -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\x00<q\x14NNNJ\xff\xff\xff\xffJ\xff\xff\xff\xffK\x00tq\x15b\x89C\x18\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00q\x16tq\x17bX\x07\x00\x00\x00n_iter_q\x18h\th\nK\x00\x85q\x19h\x0c\x87q\x1aRq\x1b(K\x01K\x01\x85q\x1ch\x10X\x02\x00\x00\x00i4q\x1dK\x00K\x01\x87q\x1eRq\x1f(K\x03h\x14NNNJ\xff\xff\xff\xffJ\xff\xff\xff\xffK\x00tq b\x89C\x04\x07\x00\x00\x00q!tq"bX\x06\x00\x00\x00n_jobsq#K\x01X\x11\x00\x00\x00intercept_scalingq$K\x01X\x03\x00\x00\x00tolq%G?\x1a6\xe2\xeb\x1cC-X\x07\x00\x00\x00verboseq&K\x00X\x04\x00\x00\x00dualq\'\x89X\x0c\x00\x00\x00random_stateq(K\x00X\x05\x00\x00\x00coef_q)h\th\nK\x00\x85q*h\x0c\x87q+Rq,(K\x01K\x03K\x04\x86q-h\x10X\x02\x00\x00\x00f8q.K\x00K\x01\x87q/Rq0(K\x03h\x14NNNJ\xff\xff\xff\xffJ\xff\xff\xff\xffK\x00tq1b\x88C`\x9a\x1c\x904+\x8f\xda?v5\xf6\x7f9\xaa\xda?FVL\xe5\x05R\xfb\xbf\xf6\xad\xd9^ya\xf7?\x89\x86\x10B\x03\x9d\xf9\xbf\x7f\xa7x\xf5\\\x8c\xf8\xbf\x8b$8y\xdd\x18\x02\xc0\xac\x8f\xee\xd9+|\xe2?\\\x10\xf2\xcc\x8c\xc4\[[email protected]](/cdn-cgi/l/email-protection)\xda\xb0;l,w\xf0\xbf8_\xe7W*+\xf6\xbf\xefT`-lq\[[email protected]](/cdn-cgi/l/email-protection)\n\x00\x00\x00intercept_q4h\th\nK\x00\x85q5h\x0c\x87q6Rq7(K\x01K\x03\x85q8h0\x89C\x18\xd4\x86D\x03\xb1\xff\xd0?\xa2\xcc=I\xe5]\xf1?\x84\'\xad\x8dxo\xf3\xbfq9tq:bX\n\x00\x00\x00warm_startq;\x89X\x01\x00\x00\x00Cq<G?\xf0\x00\x00\x00\x00\x00\x00X\r\x00\x00\x00fit_interceptq=\x88X\x06\x00\x00\x00solverq>X\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\x00<q\x14NNNJ\xff\xff\xff\xffJ\xff\xff\xff\xffK\x00tq\x15b\x89C\x18\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00q\x16tq\x17bX\x07\x00\x00\x00n_iter_q\x18h\th\nK\x00\x85q\x19h\x0c\x87q\x1aRq\x1b(K\x01K\x01\x85q\x1ch\x10X\x02\x00\x00\x00i4q\x1dK\x00K\x01\x87q\x1eRq\x1f(K\x03h\x14NNNJ\xff\xff\xff\xffJ\xff\xff\xff\xffK\x00tq b\x89C\x04\x07\x00\x00\x00q!tq"bX\x06\x00\x00\x00n_jobsq#K\x01X\x11\x00\x00\x00intercept_scalingq![K\x01X\x03\x00\x00\x00tolq%G?\x1a6\xe2\xeb\x1cC-X\x07\x00\x00\x00verboseq&K\x00X\x04\x00\x00\x00dualq\'\x89X\x0c\x00\x00\x00random_stateq(K\x00X\x05\x00\x00\x00coef_q)h\th\nK\x00\x85q*h\x0c\x87q+Rq,(K\x01K\x03K\x04\x86q-h\x10X\x02\x00\x00\x00f8q.K\x00K\x01\x87q/Rq0(K\x03h\x14NNNJ\xff\xff\xff\xffJ\xff\xff\xff\xffK\x00tq1b\x88C`\x9a\x1c\x904+\x8f\xda?v5\xf6\x7f9\xaa\xda?FVL\xe5\x05R\xfb\xbf\xf6\xad\xd9^ya\xf7?\x89\x86\x10B\x03\x9d\xf9\xbf\x7f\xa7x\xf5\\\x8c\xf8\xbf\x8b](../Images/tex-a57d522c3188c5cf8f0818e9d1a2946b.gif)8y\xdd\x18\x02\xc0\xac\x8f\xee\xd9+|\xe2?\\\x10\xf2\xcc\x8c\xc4\[[email protected]](/cdn-cgi/l/email-protection)\xda\xb0;l,w\xf0\xbf8_\xe7W*+\xf6\xbf\xefT`-lq\[[email protected]](/cdn-cgi/l/email-protection)\n\x00\x00\x00intercept_q4h\th\nK\x00\x85q5h\x0c\x87q6Rq7(K\x01K\x03\x85q8h0\x89C\x18\xd4\x86D\x03\xb1\xff\xd0?\xa2\xcc=I\xe5]\xf1?\x84\'\xad\x8dxo\xf3\xbfq9tq:bX\n\x00\x00\x00warm_startq;\x89X\x01\x00\x00\x00Cq<G?\xf0\x00\x00\x00\x00\x00\x00X\r\x00\x00\x00fit_interceptq=\x88X\x06\x00\x00\x00solverq>X\t\x00\x00\x00liblinearq?X\x0c\x00\x00\[[email protected]](/cdn-cgi/l/email-protection)'
# 加载 pickled 模型
clf_from_pickle = pickle.loads(saved_model)
......
......@@ -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
......
......@@ -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
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册