Рівночастотне групування в python


У статистиці групування – це процес розміщення числових значень у групи .

Найпоширеніша форма кластеризації відома як кластеризація однакової ширини , у якій ми ділимо набір даних на k груп однакової ширини.

Менш поширена форма кластеризації відома як рівночастотна кластеризація , у якій ми ділимо набір даних на k груп, усі з яких мають однакову кількість частот.

Цей підручник пояснює, як виконати рівночастотну кластеризацію в python.

Рівночастотне групування в Python

Припустимо, у нас є набір даних, що містить 100 значень:

 import numpy as np
import matplotlib.pyplot as plt

#create data
np.random.seed(1)
data = np.random.randn(100)

#view first 5 values
data[:5]

array([ 1.62434536, -0.61175641, -0.52817175, -1.07296862, 0.86540763])

Групування однакової ширини:

Якщо ми створимо гістограму для відображення цих значень, Python за умовчанням використовуватиме групування однакової ширини:

 #create histogram with equal-width bins
n, bins, patches = plt.hist(data, edgecolor='black')
plt.show()

#display bin boundaries and frequency per bin 
bins, n

(array([-2.3015387 , -1.85282729, -1.40411588, -0.95540447, -0.50669306,
        -0.05798165, 0.39072977, 0.83944118, 1.28815259, 1.736864,
         2.18557541]),
 array([ 3., 1., 6., 17., 19., 20., 14., 12., 5., 3.]))

Кожна група має однакову ширину приблизно 0,4487, але кожна група не містить однакову кількість спостережень. Наприклад:

  • Перший бін простягається від -2,3015387 до -1,8528279 і містить 3 спостереження.
  • Другий діапазон простирається від -1,8528279 до -1,40411588 і містить 1 спостереження.
  • Третій бін простягається від -1,40411588 до -0,95540447 і містить 6 спостережень.

І так далі.

Рівночастотне групування:

Щоб створити сегменти, що містять однакову кількість спостережень, ми можемо використати таку функцію:

 #define function to calculate equal-frequency bins 
def equalObs(x, nbin):
    nlen = len(x)
    return np.interp(np.linspace(0, nlen, nbin + 1),
                     np.arange(nlen),
                     np.sort(x))

#create histogram with equal-frequency bins 
n, bins, patches = plt.hist(data, equalObs(data, 10), edgecolor='black')
plt.show()

#display bin boundaries and frequency per bin 
bins, n

(array([-2.3015387 , -0.93576943, -0.67124613, -0.37528495, -0.20889423,
         0.07734007, 0.2344157, 0.51292982, 0.86540763, 1.19891788,
         2.18557541]),
 array([10., 10., 10., 10., 10., 10., 10., 10., 10., 10.])) 

Приклад рівночастотного групування в Python

Кожна група не однакова за шириною, але кожна група містить однакову кількість спостережень. Наприклад:

  • Перший бін простягається від -2,3015387 до -0,93576943 і містить 10 спостережень.
  • Другий бак простягається від -0,93576943 до -0,67124613 і містить 10 спостережень.
  • Третій ящик простягається від -0,67124613 до -0,37528495 і містить 10 спостережень.

І так далі.

З гістограми ми бачимо, що кожен контейнер явно не має однакової ширини, але кожен контейнер містить однакову кількість спостережень, що підтверджується тим фактом, що висота кожного контейнера однакова.

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *