機器學習 - 均值、中位數、眾數



均值、中位數和眾數是用於描述資料集中心趨勢的統計量度。在機器學習中,這些度量用於理解資料的分佈並識別異常值。在這裡,我們將探討均值、中位數和眾數的概念及其在 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
廣告