机器学习 - 均值、中位数、众数



均值、中位数和众数是用于描述数据集中心趋势的统计量度。在机器学习中,这些度量用于理解数据的分布并识别异常值。在这里,我们将探讨均值、中位数和众数的概念及其在 Python 中的实现。

均值

“均值”是数据集的平均值。它是通过将数据集中所有值相加然后除以观察次数来计算的。均值是一个有用的中心趋势度量,因为它对异常值敏感,这意味着极值会显著影响均值。

在 Python 中,我们可以使用 NumPy 库计算均值,该库提供了一个名为 mean() 的函数。

中位数

“中位数”是数据集中中间的值。它是通过按顺序排列数据集中的值并找到位于中间的值来计算的。如果数据集中有偶数个值,则中位数是两个中间值的平均值。

中位数是一个有用的中心趋势度量,因为它不受异常值的影响,这意味着极值不会显著影响中位数的值。

在 Python 中,我们可以使用 NumPy 库计算中位数,该库提供了一个名为 median() 的函数。

众数

“众数”是数据集中最常见的值。它是通过找到数据集中出现频率最高的值来计算的。如果有多个值出现频率相同,则该数据集被称为双峰、三峰或多峰。

众数是一个有用的中心趋势度量,因为它可以识别数据集中最常见的值。但是,对于值范围很广的数据集或没有重复值的数据集,它不是一个好的中心趋势度量。

在 Python 中,我们可以使用 SciPy 库计算众数,该库提供了一个名为 mode() 的函数。

Python 实现

让我们来看一个使用 NumPy 和 Pandas 在 Python 中为薪资表计算均值、中位数和众数的示例:

import numpy as np
import pandas as pd
# create a sample salary table
salary = pd.DataFrame({
   'employee_id': ['001', '002', '003', '004', '005', '006', '007',
   '008', '009', '010'],
   'salary': [50000, 65000, 55000, 45000, 70000, 60000, 55000, 45000,
   80000, 70000]
})

# calculate mean
mean_salary = np.mean(salary['salary'])
print('Mean salary:', mean_salary)

# calculate median
median_salary = np.median(salary['salary'])
print('Median salary:', median_salary)

# calculate mode
mode_salary = salary['salary'].mode()[0]
print('Mode salary:', mode_salary)

输出

执行此代码后,您将获得以下输出:

Mean salary: 59500.0
Median salary: 57500.0
Mode salary: 45000
广告