当前位置:  首页>> 技术小册>> Python机器学习基础教程(下)

4.5.1 单变量统计

在Python机器学习领域,理解数据的基本统计特性是构建有效模型的关键第一步。单变量统计,即针对数据集中单一变量的统计分析,是这一过程中的基石。它不仅帮助我们识别数据的中心趋势、分散程度以及分布形态,还为后续的数据预处理、特征选择和模型训练提供重要依据。本章将深入探讨单变量统计的基本概念、常用方法及其在Python中的实现。

4.5.1.1 引言

单变量统计分析是统计学的一个分支,专注于单个变量(如年龄、身高、温度等)的数值描述和分析。通过单变量分析,我们可以获得该变量的中心位置(如均值、中位数)、分散程度(如方差、标准差)以及分布形状(如偏度、峰度)等信息,这些信息对于理解数据的内在规律至关重要。

4.5.1.2 中心趋势

1. 均值(Mean)

均值是所有观测值的算术平均数,是衡量数据集中心的最常用指标。在Python中,使用NumPy库可以轻松计算均值。

  1. import numpy as np
  2. # 假设data是一个包含数值的NumPy数组
  3. data = np.array([1, 2, 3, 4, 5])
  4. mean_value = np.mean(data)
  5. print(f"Mean: {mean_value}")

2. 中位数(Median)

中位数是将数据集分为两个相等部分的数值,当数据中存在极端值时,中位数比均值更能代表数据的中心趋势。

  1. median_value = np.median(data)
  2. print(f"Median: {median_value}")

3. 众数(Mode)

众数是数据集中出现次数最多的值。在Python中,SciPy库提供了计算众数的函数。

  1. from scipy import stats
  2. mode_value = stats.mode(data)[0][0]
  3. print(f"Mode: {mode_value}")

4.5.1.3 分散程度

1. 方差(Variance)

方差是每个观测值与均值之差的平方的平均数,用于量化数据与其均值的偏离程度。

  1. variance = np.var(data)
  2. print(f"Variance: {variance}")

2. 标准差(Standard Deviation)

标准差是方差的平方根,与方差一样,用于衡量数据的离散程度,但标准差具有与原始数据相同的单位。

  1. std_dev = np.std(data)
  2. print(f"Standard Deviation: {std_dev}")

4.5.1.4 分布形态

1. 偏度(Skewness)

偏度用于描述数据分布的偏斜方向和程度。正偏态分布表示数据右偏,负偏态分布表示数据左偏。

  1. # 使用SciPy库计算偏度
  2. skewness = stats.skew(data)
  3. print(f"Skewness: {skewness}")

2. 峰度(Kurtosis)

峰度用于描述数据分布的尖峭或扁平程度,与正态分布(峰度为0)相比,高峰度表示数据更集中于均值附近,低峰度则表示数据更分散。

  1. # 使用SciPy库计算峰度,注意:SciPy的峰度计算与某些统计软件(如Excel)的定义不同,可能需要调整
  2. kurtosis = stats.kurtosis(data, fisher=False)
  3. print(f"Kurtosis: {kurtosis}")

4.5.1.5 直方图与概率密度函数

直方图是展示数据分布形态的一种直观方式,通过将数据划分为若干区间(即“桶”),并统计每个区间内的观测值数量来绘制。Python中的Matplotlib库可以方便地绘制直方图。

  1. import matplotlib.pyplot as plt
  2. plt.hist(data, bins=5, edgecolor='black')
  3. plt.title('Histogram of Data')
  4. plt.xlabel('Value')
  5. plt.ylabel('Frequency')
  6. plt.show()

对于连续变量,我们还可以估计其概率密度函数(PDF),虽然实际中我们通常通过样本数据来估计总体分布,但PDF为我们提供了一个理论上的视角来理解数据的分布形态。

  1. # 使用SciPy的norm.pdf函数(假设数据服从正态分布)来估计PDF
  2. # 注意:这里仅为示例,实际中应根据数据选择合适的分布
  3. from scipy.stats import norm
  4. x = np.linspace(min(data)-1, max(data)+1, 100)
  5. y = norm.pdf(x, mean_value, std_dev)
  6. plt.plot(x, y, 'r-', lw=2)
  7. plt.title('Estimated PDF of Data')
  8. plt.xlabel('Value')
  9. plt.ylabel('Probability Density')
  10. plt.show()

4.5.1.6 实际应用与注意事项

单变量统计分析在机器学习项目中有着广泛的应用。例如,在数据预处理阶段,我们可以通过分析单变量的统计特性来识别并处理异常值(如使用IQR规则)、进行特征缩放(如标准化或归一化)以提高模型性能。然而,在应用单变量统计分析时,也需注意以下几点:

  • 数据类型:确保分析的是数值型数据,对于分类数据,应采用不同的分析方法(如频率分布表)。
  • 样本量:小样本量可能导致统计量的估计不准确,尤其是在计算方差、标准差等涉及平方运算的统计量时。
  • 数据分布:不同分布的数据可能需要不同的统计方法或参数调整,如偏度和峰度的计算在不同分布假设下可能有所不同。
  • 上下文理解:统计分析结果应结合具体业务背景进行解读,避免脱离实际意义的机械分析。

综上所述,单变量统计作为数据探索与预处理的重要工具,在Python机器学习项目中扮演着不可或缺的角色。通过深入理解并熟练掌握这些基本概念和方法,我们可以更有效地分析数据、发现规律并为后续的模型构建奠定坚实基础。