修正了文档中数学公式无法显示的问题

This commit is contained in:
jackfrued 2025-02-14 14:20:04 +08:00
parent 5ce18bed7c
commit 8b57febf4e
4 changed files with 32 additions and 25 deletions

View File

@ -294,14 +294,19 @@ all_emp_df.drop_duplicates(['ename', 'job'], inplace=True)
异常值的检测有Z-score 方法、IQR 方法、DBScan 聚类、孤立森林等,这里我们对前两种方法做一个简单的介绍。
<img src="http://localhost/mypic/20211004192858.png" style="zoom:50%;">
<img src="res/3sigma.png" style="zoom:50%;">
如果数据服从正态分布依据3σ法则异常值被定义与平均值的偏差超过三倍标准差的值。在正态分布下距离平均值3σ之外的值出现的概率为 $\small{P(\lvert x - \mu \rvert \gt 3 \sigma) < 0.003}$ 属于小概率事件如果数据不服从正态分布那么可以用远离均值的多少倍的标准差来描述这里的倍数就是Z-scoreZ-score以标准差为单位去度量某一原始分数偏离平均值的距离公式如下所示
如果数据服从正态分布依据3σ法则异常值被定义与平均值的偏差超过三倍标准差的值。在正态分布下距离平均值3σ之外的值出现的概率为$ P(|x-\mu|>3\sigma)<0.003 $属于小概率事件如果数据不服从正态分布那么可以用远离均值的多少倍的标准差来描述这里的倍数就是Z-scoreZ-score以标准差为单位去度量某一原始分数偏离平均值的距离公式如下所示
$$
z = \frac {X - \mu} {\sigma} \\
|z| > 3
z = \frac {X - \mu} {\sigma}
$$
Z-score需要根据经验和实际情况来决定通常把远离标准差`3`倍距离以上的数据点视为离群点下面的代给出了如何通过Z-score方法检测异常值。
$$
\lvert z \rvert > 3
$$
Z-score需要根据经验和实际情况来决定通常把远离标准差 3 倍距离以上的数据点视为离群点下面的代给出了如何通过Z-score方法检测异常值。
```Python
def detect_outliers_zscore(data, threshold=3):
@ -311,7 +316,7 @@ def detect_outliers_zscore(data, threshold=3):
return data[z_score > threshold]
```
IQR 方法中的IQRInter-Quartile Range代表四分位距离即上四分位数Q3和下四分位数Q1的差值。通常情况下可以认为小于 $ Q1 - 1.5 \times IQR $ 或大于 $ Q3 + 1.5 \times IQR $ 的就是异常值,而这种检测异常值的方法也是箱线图(后面会讲到)默认使用的方法。下面的代码给出了如何通过 IQR 方法检测异常值。
IQR 方法中的 IQRInter-Quartile Range代表四分位距离即上四分位数Q3和下四分位数Q1的差值。通常情况下可以认为小于 $\small{Q1 - 1.5 \times IQR}$ 或大于 $\small{Q3 + 1.5 \times IQR}$ 的就是异常值,而这种检测异常值的方法也是箱线图(后面会讲到)默认使用的方法。下面的代码给出了如何通过 IQR 方法检测异常值。
```Python
def detect_outliers_iqr(data, whis=1.5):
@ -521,7 +526,7 @@ jobs_df.head()
`applymap`和`apply`两个方法在数据预处理的时候经常用到,`Series`对象也有`apply`方法,也是用于数据的预处理,但是`DataFrame`对象还有一个名为`transform` 的方法,也是通过传入的函数对数据进行变换,类似`Series`对象的`map`方法。需要强调的是,`apply`方法具有归约效果的,简单的说就是能将较多的数据处理成较少的数据或一条数据;而`transform`方法没有归约效果,只能对数据进行变换,原来有多少条数据,处理后还是有多少条数据。
如果要对数据进行深度的分析和挖掘,字符串、日期时间这样的非数值类型都需要处理成数值,因为非数值类型没有办法计算相关性,也没有办法进行$\chi^2$检验等操作。对于字符串类型,通常可以其分为以下三类,再进行对应的处理。
如果要对数据进行深度的分析和挖掘,字符串、日期时间这样的非数值类型都需要处理成数值,因为非数值类型没有办法计算相关性,也没有办法进行 $\small{\chi^{2}}$ 检验等操作。对于字符串类型,通常可以其分为以下三类,再进行对应的处理。
1. 有序变量Ordinal Variable字符串表示的数据有顺序关系那么可以对字符串进行序号化处理。
2. 分类变量Categorical Variable/ 名义变量Nominal Variable字符串表示的数据没有大小关系和等级之分那么就可以使用独热编码的方式处理成哑变量虚拟变量矩阵。

View File

@ -145,52 +145,54 @@ plt.show()
### 相关性判定
在统计学中我们通常使用协方差covariance来衡量两个随机变量的联合变化程度。如果变量 $X$ 的较大值主要与另一个变量 $Y$ 的较大值相对应,而两者较小值也相对应,那么两个变量倾向于表现出相似的行为,协方差为正。如果一个变量的较大值主要对应于另一个变量的较小值,则两个变量倾向于表现出相反的行为,协方差为负。简单的说,协方差的正负号显示着两个变量的相关性。方差是协方差的一种特殊情况,即变量与自身的协方差。
在统计学中我们通常使用协方差covariance来衡量两个随机变量的联合变化程度。如果变量 $\small{X}$ 的较大值主要与另一个变量 $\small{Y}$ 的较大值相对应,而两者较小值也相对应,那么两个变量倾向于表现出相似的行为,协方差为正。如果一个变量的较大值主要对应于另一个变量的较小值,则两个变量倾向于表现出相反的行为,协方差为负。简单的说,协方差的正负号显示着两个变量的相关性。方差是协方差的一种特殊情况,即变量与自身的协方差。
$$
cov(X,Y) = E((X - \mu)(Y - \upsilon)) = E(X \cdot Y) - \mu\upsilon
$$
如果 $X$ 和 $Y$ 是统计独立的那么二者的协方差为0这是因为在 $X$ 和 $Y$ 独立的情况下:
如果 $\small{X}$ 和 $\small{Y}$ 是统计独立的,那么二者的协方差为 0这是因为在 $\small{X}$ 和 $\small{Y}$ 独立的情况下:
$$
E(X \cdot Y) = E(X) \cdot E(Y) = \mu\upsilon
$$
协方差的数值大小取决于变量的大小,通常是不容易解释的,但是正态形式的协方差可以显示两变量线性关系的强弱。在统计学中,皮尔逊积矩相关系数就是正态形式的协方差,它用于度量两个变量 $X$ 和 $Y$ 之间的相关程度(线性相关),其值介于`-1`到`1`之间。
协方差的数值大小取决于变量的大小,通常是不容易解释的,但是正态形式的协方差可以显示两变量线性关系的强弱。在统计学中,皮尔逊积矩相关系数就是正态形式的协方差,它用于度量两个变量 $\small{X}$ 和 $\small{Y}$ 之间的相关程度(线性相关),其值介于 -1 到 1 之间。
$$
\frac {cov(X, Y)} {\sigma_{X}\sigma_{Y}}
$$
估算样本的协方差和标准差,可以得到样本皮尔逊系数,通常用希腊字母 $\rho$ 表示。
估算样本的协方差和标准差,可以得到样本皮尔逊系数,通常用希腊字母 $\small{\rho}$ 表示。
$$
\rho = \frac {\sum_{i=1}^{n}(X_i - \bar{X})(Y_i - \bar{Y})} {\sqrt{\sum_{i=1}^{n}(X_i - \bar{X})^2} \sqrt{\sum_{i=1}^{n}(Y_i - \bar{Y})^2}}
$$
我们用 $\rho$ 值判断指标的相关性时遵循以下两个步骤。
我们用 $\small{\rho}$ 值判断指标的相关性时遵循以下两个步骤。
1. 判断指标间是正相关、负相关,还是不相关。
- 当 $ \rho \gt 0 $,认为变量之间是正相关,也就是两者的趋势一致。
- 当 $ \rho \lt 0 $,认为变量之间是负相关,也就是两者的趋势相反。
- 当 $ \rho \approx 0 $,认为变量之间是不相关的,但并不代表两个指标是统计独立的。
- 当 $\small{\rho \gt 0}$,认为变量之间是正相关,也就是两者的趋势一致。
- 当 $\small{\rho \lt 0}$,认为变量之间是负相关,也就是两者的趋势相反。
- 当 $\small{\rho \approx 0}$,认为变量之间是不相关的,但并不代表两个指标是统计独立的。
2. 判断指标间的相关程度。
- 当 $ \rho $ 的绝对值在 $ [0.6,1] $ 之间,认为变量之间是强相关的。
- 当 $ \rho $ 的绝对值在 $ [0.1,0.6) $ 之间,认为变量之间是弱相关的。
- 当 $ \rho $ 的绝对值在 $ [0,0.1) $ 之间,认为变量之间没有相关性。
- 当 $\small{\rho}$ 的绝对值在 $\small{[0.6,1]}$ 之间,认为变量之间是强相关的。
- 当 $\small{\rho}$ 的绝对值在 $\small{[0.1,0.6)}$ 之间,认为变量之间是弱相关的。
- 当 $\small{\rho}$ 的绝对值在 $\small{[0,0.1)}$ 之间,认为变量之间没有相关性。
皮尔逊相关系数适用于:
1. 两个变量之间是线性关系,都是连续数据。
2. 两个变量的总体是正态分布,或接近正态的单峰分布。
3. 两个变量的观测值是成对的,每对观测值之间相互独立。
1. 两个变量之间是线性关系,都是连续数据。
2. 两个变量的总体是正态分布,或接近正态的单峰分布。
3. 两个变量的观测值是成对的,每对观测值之间相互独立。
这里,我们顺便说一下,如果两组变量并不是来自于正态总体的连续值,我们该如何判断相关性呢?对于定序尺度(等级),我们可以使用斯皮尔曼秩相关系数,其计算公式如下所示:
$$
r_{s}=1-{\frac {6\sum d_{i}^{2}}{n(n^{2}-1)}}
$$
其中,$d_{i}=\operatorname {R} (X_{i})-\operatorname {R} (Y_{i})$,即每组观测中两个变量的等级差值,$n$为观测样本数。
其中, $\small{d_{i}=\operatorname {R} (X_{i})-\operatorname {R} (Y_{i})}$ ,即每组观测中两个变量的等级差值, $\small{n}$ 为观测样本数。
对于定类尺度(类别),我们可以使用卡方检验的方式来判定其是否相关。其实很多时候,连续值也可以通过分箱的方式处理成离散的等级或类别,然后使用斯皮尔曼秩相关系数或卡方检验的方式来判定相关性。
@ -205,7 +207,7 @@ boston_df
输出:
<img src="/Users/Hao/Desktop/Python-Data-Analysis/res/boston_house_price.png" style="zoom:50%;">
<img src="res/boston_house_price.png" style="zoom:50%;">
> **说明**:上面代码中使用了相对路径来访问 CSV 文件,也就是说 CSV 文件在当前工作路径下名为`data`的文件夹中。如果需要上面例子中的 CSV 文件,可以通过下面的百度云盘地址进行获取。链接:<https://pan.baidu.com/s/1rQujl5RQn9R7PadB2Z5g_g?pwd=e7b4>提取码e7b4。

View File

@ -311,7 +311,7 @@ plt.show()
#### 箱线图
箱线图又叫箱型图或盒须图,是一种用于展示一组数据分散情况的统计图表,如下所示。因图形如箱子,而且在上下四分位数之外有线条像胡须延伸出去而得名。在箱线图中,箱子的上边界是上四分位数($Q_3$)的位置,箱子的下边界是下四分位数($Q_1$)的位置,箱子中间的线条是中位数($Q_2$的位置而箱子的长度就是四分位距离IQR。除此之外箱子上方线条的边界是最大值箱子下方线条的边界是最小值这两条线之外的点就是离群值outlier。所谓离群值是指数据小于$Q_1 - 1.5 \times IQR$或数据大于$Q_3 + 1.5 \times IQR$的值,公式中的`1.5`还可以替换为`3`来发现极端离群值extreme outlier而介于`1.5`到`3`之间的离群值通常称之为适度离群值mild outlier
箱线图又叫箱型图或盒须图,是一种用于展示一组数据分散情况的统计图表,如下所示。因图形如箱子,而且在上下四分位数之外有线条像胡须延伸出去而得名。在箱线图中,箱子的上边界是上四分位数( $\small{Q_{3}}$ )的位置,箱子的下边界是下四分位数( $\small{Q_{1}}$ )的位置,箱子中间的线条是中位数( $\small{Q_{2}}$ 的位置而箱子的长度就是四分位距离IQR。除此之外箱子上方线条的边界是最大值箱子下方线条的边界是最小值这两条线之外的点就是离群值outlier。所谓离群值是指数据小于 $\small{Q_{1} - 1.5 \times IQR}$ 或数据大于 $\small{Q_{3} + 1.5 \times IQR}$ 的值,公式中的`1.5`还可以替换为`3`来发现极端离群值extreme outlier而介于`1.5`到`3`之间的离群值通常称之为适度离群值mild outlier
可以使用`pyplot`模块的`boxplot`函数来绘制箱线图,代码如下所示。

View File

@ -99,7 +99,7 @@ sns.pairplot(data=tips_df, hue='sex')
如果对上面图表的颜色不满意,还可以通过 palette 参数选择 seaborn 自带的“调色板”来修改颜色,这种方式相比于自行指定颜色或使用随机颜色方便和靠谱了很多,下图为大家展示了部分 seaborn 自带的“调色板”。
<img src="http://localhost//mypic/20220502120749.png" style="zoom:45%;">
<img src="res/20220502120749.png" style="zoom:45%;">
我们可以将上面的代码稍作修改,看看运行结果有什么差别。