IlmHamroh
Data Science va sun'iy intellekt/Vizualizatsiya9/14-dars18 daqiqa
Mundarija (22)

5.9-dars: Taqsimot grafiklari (KDE, violin)

5-QISM — VIZUALIZATSIYA · 9-dars


1. Kirish va motivatsiya

5.5-darsda histogram — taqsimotni ustunlar bilan (bin) ko'rsatadi. Lekin histogram bin soniga bog'liq (bin o'zgarsa — shakl o'zgaradi), va guruhlarni ustma-ust taqqoslash qiyin. Taqsimot grafiklari — silliqroq, aniqroq alternativalar: KDE (kernel density estimation — silliq zichlik egrisi, bin'siz), violin plot (box plot + KDE — median + tarqoqlik + shakl), ECDF (empirik taqsimot funksiyasi — foiz). Data Scientist guruhlarni taqqoslaganda (masalan, 3 shahar maoshi) violin plot bir grafikda median, tarqoqlik va shaklni ko'rsatadi — box plotdan boyroq. Nega muhim? (1) Silliq — KDE bin'siz (shakl aniq); (2) Guruh taqqoslash — violin (median + shakl); (3) Taqsimot shakli — bir/ikki cho'qqi (modallik). Bu dars taqsimot grafiklarini o'rgatadi — silliq va boy.

Taqsimot grafiklari — silliq/boy taqsimot: KDE (sns.kdeplot — silliq zichlik egri, bin'siz; 5.5 histogram silliq varianti), violin plot (sns.violinplot — box + KDE; median + tarqoqlik + shakl), ECDF (sns.ecdfplot — empirik taqsimot; foiz), guruh (hue= — ustma-ust taqqoslash), modallik (bir/ikki cho'qqi — shakl). Foydalanish: silliq taqsimot, guruh taqqoslash, shakl. Bu 5.5 (histogram), 5.6 (box plot), 5.7 (Seaborn) bilan bog'liq. Taqsimot grafiklari — KDE, violin. Silliq. Guruh.

Real vaziyat. Data Scientist 3 shahar maoshini taqqoslamoqchi. Histogram 5.5-bob: 3 ta alohida grafik (ustma-ust — chalkash); bin'ga bog'liq (shakl o'zgaradi). Box plot 5.6-bob: median + tarqoqlik (lekin shakl yo'q — bir/ikki cho'qqi ko'rinmaydi). Violin plot (sns.violinplot(data=df, x="shahar", y="maosh")): har shahar uchun box + KDE (median chiziq + quti + silliq shakl — keng qism ko'p ma'lumot); bir grafikda 3 shahar (median, tarqoqlik, shakl — Toshkent ikki cho'qqi (ikki guruh!), Samarqand bir cho'qqi). Data Scientist shaklni ko'rdi (box plot yashirgan — ikki guruh; violin ochdi). Violin — box + shakl (boy taqqoslash). Taqsimot grafiklari — silliq, boy.

Bu darsda taqsimot grafiklarini o'rganamiz.

Bu darsda:

  • KDE (silliq zichlik egrisi)
  • Violin plot (box + KDE)
  • ECDF (empirik taqsimot)
  • Guruh taqqoslash (hue)
  • Modallik (bir/ikki cho'qqi)
  • Taqsimot amaliyoti
  • Taqsimot tuzoqlari
  • Amaliy: taqsimot modeli

ℹ Misollar real seaborn/scipy bilan (Agg — grafik xususiyatlari matn bilan tekshiriladi) ishlaydi.


2. Nazariya — chuqur tushuntirish

2.1. KDE (silliq zichlik egrisi)

Bin'siz silliq:

python
import seaborn as sns

# KDE — silliq zichlik egrisi (histogram silliq varianti, bin'siz)
sns.kdeplot(data)

# histogram + KDE (birga)
sns.histplot(data, kde=True)

KDE (silliq zichlik egri) — bin'siz: KDE (Kernel Density Estimation) — taqsimotni silliq egri bilan (sns.kdeplot(data) — 5.7; histogram 5.5-bob silliq varianti, bin'siz); sns.histplot(data, kde=True) (histogram + KDE birga). Sabab: histogram bin'ga bog'liq (bin soni o'zgarsa — shakl o'zgaradi; sun'iy pog'ona); KDE silliq (har nuqta atrofida "kernel" — Gauss; yig'indi — silliq egri; bin yo'q). Zichlik (y — ehtimollik zichligi; egri osti yuza = 1; foiz emas). KDE (silliq — shakl aniq), histogram (pog'ona — bin). bw_adjust (silliqlik — katta silliq, kichik tafsilot). KDE — silliq zichlik egri (bin'siz). Silliq. Zichlik.

2.2. Violin plot (box + KDE)

Box + shakl:

python
import seaborn as sns

# Violin — box plot + KDE (median + tarqoqlik + shakl)
sns.violinplot(data=df, x="shahar", y="maosh")

# har "violin": median chiziq + quti (IQR) + silliq shakl (KDE)

Violin plot (box + KDE) — median + shakl: violin plot (sns.violinplot — 5.7) — box plot 5.6-bob + KDE 2.1-bob birga (median chiziq + quti IQR + silliq shakl — KDE ikki tomon oyna); box plotdan boyroq (shakl — bir/ikki cho'qqi). Sabab: box plot 5.6-bob — median, IQR, outlier (lekin shakl yo'q — ikki cho'qqi ko'rinmas); violin shakl qo'shadi (KDE — keng qism ko'p ma'lumot; ikki cho'qqi — ikki guruh). x=/y= (guruh — har violin), hue= (ichki bo'linish), split=True (ikki guruh — yarim/yarim). Violin (box + shakl — boy), box (sodda — median/IQR). Violin plot — box + KDE (median + tarqoqlik + shakl). Box. Shakl.

2.3. ECDF (empirik taqsimot)

ECDF (empirik taqsimot funksiyasi) — foiz: sns.ecdfplot(data) — har qiymat uchun "shu qiymatdan kichik foiz" (0'dan 1'gacha o'suvchi egri; pog'ona/silliq). Sabab: histogram/KDE — zichlik (qancha); ECDF — jami foiz ("70'dan past necha foiz?" — to'g'ridan o'qish; median — 0.5 chiziq; persentil — 4.4); bin'siz (har nuqta — aniq; histogram pog'ona yo'q). Median (y=0.5), persentil (y=0.25 — Q1), taqqoslash (ikki ECDF — qaysi o'ngda — katta). ECDF — jami foiz (persentil o'qish; bin'siz). Foiz. Persentil.

2.4. Guruh taqqoslash (hue)

Guruh taqqoslash (hue) — ustma-ust: Seaborn taqsimot grafiklari hue= (guruh — rang; ustma-ust bir grafikda); KDE (sns.kdeplot(data=df, x="maosh", hue="shahar") — 3 egri ustma-ust), violin (x="shahar" — yonma-yon), histplot (hue= + multiple="stack"/"dodge"). Sabab: histogram 5.5-bob — guruh ustma-ust chalkash (ustunlar to'sadi); KDE silliq egri (ustma-ust — aniq; 3 egri ko'rinadi); violin yonma-yon (har guruh — alohida violin). KDE hue (silliq — eng yaxshi ustma-ust), violin (yonma-yon — box + shakl). Guruh taqqoslash — hue (KDE ustma-ust, violin yonma-yon). Guruh. Ustma-ust.

2.5. Modallik (bir/ikki cho'qqi)

Modallik (bir/ikki cho'qqi) — taqsimot shakli: unimodal (bir cho'qqi — bir guruh; normal — 4.6), bimodal (ikki cho'qqi — ikki guruh aralash!), multimodal (ko'p cho'qqi). Sabab: taqsimot shakli muhim (ikki cho'qqi — ma'lumot ikki guruh aralash; masalan, erkak/ayol bo'y — ikki cho'qqi; o'rtacha — noto'g'ri (ikki guruh orasida hech kim)); box plot yashiradi (median — ikki cho'qqi orasida), KDE/violin ochadi (ikki cho'qqi ko'rinadi). Bir cho'qqi (bir guruh — o'rtacha ma'noli), ikki cho'qqi (ikki guruh — ajrat!). Modallik — cho'qqi soni (bir/ikki guruh; KDE ochadi). Cho'qqi. Guruh.

2.6. Taqsimot amaliyoti

Taqsimot grafiklari amaliyoti: bir o'zgaruvchi (sns.histplot(kde=True) — histogram + KDE; yoki kdeplot — silliq); guruh (sns.kdeplot(hue=) — ustma-ust silliq; violinplot(x=, y=) — yonma-yon box + shakl); foiz (sns.ecdfplot — persentil o'qish); modallik (KDE/violin — bir/ikki cho'qqi; ikki guruh ajrat). Tuzoqlar: KDE kichik namuna (aldash — silliqlik soxta), KDE chegara (0'dan past — manfiy narx; clip=), violin kichik namuna (shakl ishonchsiz), bimodal o'rtacha (ikki guruh — o'rtacha ma'nosiz). Amaliyot — KDE, violin, ECDF, modallik. Silliq. Guruh.

2.7. Taqsimot tuzoqlari

Taqsimot grafiklari asosiy tuzoqlari: KDE kichik namuna (KDE — silliq, lekin kichik namuna (n<30) — silliqlik soxta (aslida kam ma'lumot; egri aldaydi); katta namuna yoki histogram); KDE chegara (KDE egri chegaradan chiqadi (masalan, narx — 0'dan past; yosh — manfiy); clip=(0, None) yoki cut=0 — chegara; aks holda noto'g'ri (manfiy zichlik)); bw (silliqlik) (bw_adjust — katta (juda silliq — tafsilot yo'qoladi), kichik (juda tafsilot — shovqin); standart odatda yaxshi); violin kichik namuna (violin — KDE'ga tayanadi; kichik namuna — shakl ishonchsiz; box plot afzal); bimodal o'rtacha (ikki cho'qqi — ikki guruh aralash; o'rtacha/median ma'nosiz (ikki guruh orasida); ajrat — KDE/violin ko'rsatadi); ECDF talqin (ECDF — jami foiz (zichlik emas); o'qish boshqacha — y=foiz, x=qiymat); histogram vs KDE (histogram — haqiqiy hisob (bin); KDE — model (silliqlash — faraz); KDE chiroyli, lekin histogram xom; ikkalasi); rang ustma-ust (KDE hue — ko'p guruh (5+) — egrilar chalkash; kam guruh). Sabab: KDE/violin model (silliqlash — faraz; namuna/chegara/silliqlik nozik). Yechim: katta namuna, chegara clip, bimodal ajrat, histogram bilan tekshir. Tuzoqlar — kichik namuna, chegara, bimodal, model.

2.8. Taqsimot grafiklari — silliq va boy taqsimot

Taqsimot grafiklari asosiy g'oyasi — silliq va boy taqsimot: histogram (5.5 — bin, pog'ona, guruh chalkash) o'rniga silliqroq/boyroq (KDE — silliq; violin — box + shakl). KDE (kdeplot — silliq zichlik egri, bin'siz; histogram silliq varianti), violin plot (violinplot — box 5.6-bob + KDE; median + IQR + shakl), ECDF (ecdfplot — jami foiz; persentil o'qish), guruh (hue= — ustma-ust KDE, yonma-yon violin; histogramdan yaxshi taqqoslash), modallik (bir/ikki cho'qqi — bir/ikki guruh; KDE/violin ochadi, box yashiradi). Foydalanish: silliq taqsimot (KDE — shakl aniq, bin'siz), guruh taqqoslash (violin — median + shakl bir grafikda), taqsimot shakli (modallik — ikki guruh ajrat). Tuzoqlar: KDE kichik namuna (silliqlik soxta), chegara (clip), violin kichik (ishonchsiz), bimodal o'rtacha (ma'nosiz — ajrat), KDE model (histogram haqiqiy). Bu 5.5 (histogram), 5.6 (box plot) ustida va 5.7 (Seaborn), 4.4 (persentil), 4.6 (normal) bilan. Taqsimot grafiklari — silliq (KDE) va boy (violin) taqsimot. Silliq. Boy. Shakl.


3. Tez ma'lumotnoma

python
import seaborn as sns

# KDE (silliq zichlik egrisi — bin'siz):
sns.kdeplot(data)              # silliq egri
sns.histplot(data, kde=True)   # histogram + KDE

# VIOLIN (box + KDE — median + tarqoqlik + shakl):
sns.violinplot(data=df, x="shahar", y="maosh")   # yonma-yon
#   median chiziq + quti (IQR) + silliq shakl (KDE)

# ECDF (jami foiz — persentil o'qish):
sns.ecdfplot(data)   # y=foiz (0..1), x=qiymat; median=0.5

# GURUH taqqoslash (hue):
sns.kdeplot(data=df, x="maosh", hue="shahar")    # ustma-ust silliq
sns.violinplot(data=df, x="shahar", y="maosh")   # yonma-yon

# MODALLIK (shakl):
#   bir cho'qqi — bir guruh (o'rtacha ma'noli)
#   ikki cho'qqi — IKKI GURUH aralash (o'rtacha ma'nosiz — ajrat!)

QOIDA: KDE katta namuna · chegara clip · violin kichik ishonchsiz · bimodal ajrat

Taqsimot grafiklari xulosasi

KDE — silliq zichlik egrisi (bin'siz; histogram silliq varianti)
Violin — box + KDE (median + IQR + shakl; box'dan boy)
ECDF — jami foiz (persentil o'qish)
Guruh — hue (KDE ustma-ust, violin yonma-yon)
Modallik — bir/ikki cho'qqi (KDE ochadi, box yashiradi)

4. Batafsil misollar

Misollar real seaborn/scipy bilan (Agg — grafik xususiyatlari matn bilan tekshiriladi) ishlaydi.

Misol 1 — KDE (silliq egri)

python
"""KDE silliq zichlik egrisi (real seaborn/numpy)."""

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns


def main() -> None:
    np.random.seed(0)
    ball = np.random.normal(70, 10, 1000)

    print("=== 1. KDE (silliq egri) ===")
    fig, ax = plt.subplots()
    sns.kdeplot(ball, ax=ax)
    print(f"  egri chizig'i: {len(ax.lines)}")

    print("\n=== 2. Zichlik (egri ostidagi yuza=1) ===")
    x = ax.lines[0].get_xdata()
    y = ax.lines[0].get_ydata()
    yuza = np.trapezoid(y, x)
    print(f"  egri ostidagi yuza: {yuza.round(2)} (~1.0)")

    print("\n=== 3. Cho'qqi (mode atrofida) ===")
    choqqi_x = x[np.argmax(y)]
    print(f"  cho'qqi x: {choqqi_x.round(0)} (~70 — o'rtacha)")

    print("\n=== 4. histogram + KDE ===")
    fig2, ax2 = plt.subplots()
    sns.histplot(ball, kde=True, ax=ax2)
    print(f"  KDE chizig'i bor: {len(ax2.lines) > 0}")
    plt.close("all")
    print("  ⭐ KDE — silliq zichlik egrisi (bin'siz)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. KDE (silliq egri) ===
  egri chizig'i: 1

=== 2. Zichlik (egri ostidagi yuza=1) ===
  egri ostidagi yuza: 1.0 (~1.0)

=== 3. Cho'qqi (mode atrofida) ===
  cho'qqi x: 69.0 (~70 — o'rtacha)

=== 4. histogram + KDE ===
  KDE chizig'i bor: True
  ⭐ KDE — silliq zichlik egrisi (bin'siz)

Nima ko'rsatdi: 2.1-bo'lim.

Misol 2 — Violin plot (guruh)

python
"""Violin plot: box + KDE (real seaborn/pandas)."""

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns


def main() -> None:
    np.random.seed(0)
    df = pd.DataFrame({
        "shahar": ["T"] * 100 + ["S"] * 100 + ["B"] * 100,
        "maosh": np.concatenate([
            np.random.normal(500, 80, 100),
            np.random.normal(400, 60, 100),
            np.random.normal(600, 100, 100),
        ]),
    })

    print("=== 1. Violin plot (yonma-yon) ===")
    fig, ax = plt.subplots()
    sns.violinplot(data=df, x="shahar", y="maosh", ax=ax)
    print(f"  violinlar (guruh): {len(ax.collections) >= 3}")

    print("\n=== 2. Guruh medianlari ===")
    medianlar = df.groupby("shahar")["maosh"].median().round(0)
    print(f"  {medianlar.to_dict()}")

    print("\n=== 3. Box + shakl ===")
    print("  violin — median + IQR + silliq shakl (KDE)")

    print("\n=== 4. Box'dan boy ===")
    print("  box: median/IQR; violin: + shakl (cho'qqi)")
    plt.close("all")
    print("  ⭐ Violin — box + KDE (median + shakl)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Violin plot (yonma-yon) ===
  violinlar (guruh): True

=== 2. Guruh medianlari ===
  {'B': 592.0, 'S': 401.0, 'T': 508.0}

=== 3. Box + shakl ===
  violin — median + IQR + silliq shakl (KDE)

=== 4. Box'dan boy ===
  box: median/IQR; violin: + shakl (cho'qqi)
  ⭐ Violin — box + KDE (median + shakl)

Nima ko'rsatdi: 2.2-bo'lim.

Misol 3 — Bimodal (ikki cho'qqi)

python
"""Bimodal taqsimot: ikki cho'qqi (real numpy/scipy)."""

import numpy as np
from scipy import stats


def main() -> None:
    np.random.seed(0)
    # ikki guruh aralash: erkak (175) + ayol (162) bo'y
    erkak = np.random.normal(175, 6, 500)
    ayol = np.random.normal(162, 6, 500)
    boy = np.concatenate([erkak, ayol])

    print("=== 1. Aralash taqsimot ===")
    print(f"  jami: {len(boy)} kishi (2 guruh)")

    print("\n=== 2. O'rtacha (aldamchi) ===")
    print(f"  o'rtacha bo'y: {boy.mean().round(1)} (~168 — hech kim!)")

    print("\n=== 3. Ikki cho'qqi (KDE topadi) ===")
    kde = stats.gaussian_kde(boy)
    x = np.linspace(150, 190, 200)
    y = kde(x)
    # lokal maksimumlar (cho'qqilar)
    choqqilar = [round(x[i]) for i in range(1, len(y) - 1)
                 if y[i] > y[i - 1] and y[i] > y[i + 1]]
    print(f"  cho'qqilar: {choqqilar} (2 guruh — 162, 175)")

    print("\n=== 4. Xulosa ===")
    print("  bimodal — ikki guruh (o'rtacha ma'nosiz, ajrat!)")
    print("  ⭐ Bimodal — KDE ikki cho'qqi (box yashiradi)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Aralash taqsimot ===
  jami: 1000 kishi (2 guruh)

=== 2. O'rtacha (aldamchi) ===
  o'rtacha bo'y: 168.2 (~168 — hech kim!)

=== 3. Ikki cho'qqi (KDE topadi) ===
  cho'qqilar: [163, 171] (2 guruh — 162, 175)

=== 4. Xulosa ===
  bimodal — ikki guruh (o'rtacha ma'nosiz, ajrat!)
  ⭐ Bimodal — KDE ikki cho'qqi (box yashiradi)

Nima ko'rsatdi: 2.5-bo'lim.

Misol 4 — ECDF (persentil)

python
"""ECDF: jami foiz (real seaborn/numpy)."""

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns


def main() -> None:
    np.random.seed(0)
    ball = np.random.normal(70, 10, 1000)

    print("=== 1. ECDF ===")
    fig, ax = plt.subplots()
    sns.ecdfplot(ball, ax=ax)
    print(f"  egri chizig'i: {len(ax.lines)}")

    print("\n=== 2. Median (y=0.5) ===")
    median = np.median(ball)
    print(f"  median (50%): {median.round(0)} (~70)")

    print("\n=== 3. Persentil o'qish ===")
    p25 = np.percentile(ball, 25)
    p75 = np.percentile(ball, 75)
    print(f"  25% (y=0.25): {p25.round(0)}")
    print(f"  75% (y=0.75): {p75.round(0)}")

    print("\n=== 4. Tushuntirish ===")
    print("  ECDF: y=jami foiz, x=qiymat (persentil to'g'ridan)")
    plt.close("all")
    print("  ⭐ ECDF — jami foiz (persentil o'qish)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. ECDF ===
  egri chizig'i: 1

=== 2. Median (y=0.5) ===
  median (50%): 69.0 (~70)

=== 3. Persentil o'qish ===
  25% (y=0.25): 63.0
  75% (y=0.75): 76.0

=== 4. Tushuntirish ===
  ECDF: y=jami foiz, x=qiymat (persentil to'g'ridan)
  ⭐ ECDF — jami foiz (persentil o'qish)

Nima ko'rsatdi: 2.3-bo'lim.


5. To'g'ri va noto'g'ri tushunishlar

Noto'g'ri fikr To'g'risi
"KDE = histogram" Silliq (bin'siz), histogram model emas
"KDE doim aniq" Kichik namuna aldash
"violin = box" Box + shakl (boy)
"bir cho'qqi doim" Ikki cho'qqi — ikki guruh
"bimodal o'rtacha OK" Ma'nosiz (ajrat)
"ECDF = histogram" Jami foiz (persentil)
"KDE chegara yo'q" Chegaradan chiqadi (clip)
"KDE haqiqiy hisob" Model (silliqlash — faraz)

6. Keng tarqalgan xatolar va yechimlari

1. KDE kichik namuna

python
sns.kdeplot(kichik_10)   # silliqlik soxta                        # ⚠️
sns.histplot(kichik_10)   # xom (aniqroq)                          # ✅

2. KDE chegara

python
sns.kdeplot(narx)   # 0'dan past chiqadi (manfiy narx)            # ⚠️
sns.kdeplot(narx, clip=(0, None))   # chegara                     # ✅

3. Violin kichik namuna

python
sns.violinplot(data=kichik)   # shakl ishonchsiz                  # ⚠️
sns.boxplot(data=kichik)   # box (soddaroq — ishonchli)          # ✅

4. Bimodal o'rtacha

python
boy.mean()   # 168 (hech kim — 2 guruh orasida)                  # ⚠️
# KDE — 2 cho'qqi (ajrat: erkak/ayol)                            # ✅

5. Guruh histogram (chalkash)

python
sns.histplot(data=df, x="x", hue="g")   # ustunlar to'sadi       # ⚠️
sns.kdeplot(data=df, x="x", hue="g")   # silliq (aniq)           # ✅

6. KDE model (haqiqiy deb)

python
# KDE silliq → "haqiqiy taqsimot" (model)                        # ⚠️
# histogram bilan tekshir (KDE — silliqlash faraz)               # ✅

7. bw noto'g'ri

python
sns.kdeplot(data, bw_adjust=5)   # juda silliq (tafsilot yo'q)    # ⚠️
sns.kdeplot(data)   # standart (odatda yaxshi)                    # ✅

7. Integratsiya — bu bilim qayerda kerak bo'ladi

  • 5.5-dars (o'tilgan): Histogram (taqsimot)
  • 5.6-dars (o'tilgan): Box plot (median/IQR)
  • 5.7-dars (o'tilgan): Seaborn
  • 4.6-dars (o'tilgan): Normal taqsimot
  • 9-qism (reja): EDA (taqsimot tekshirish)

8. Eng yaxshi amaliyotlar

  1. KDE — silliq taqsimot (katta namuna).

  2. Violin — guruh (median + shakl).

  3. ECDF — persentil o'qish.

  4. Guruh — KDE ustma-ust (hue).

  5. Modallik — bir/ikki cho'qqi (guruh).

  6. Bimodal — ajrat (o'rtacha ma'nosiz).

  7. KDE chegara — clip (narx/yosh).

  8. KDE — model (histogram bilan tekshir).


9. Amaliy topshiriq

Vazifa 1: Bashorat qiling

python
1.  # KDE nima?
2.  # KDE bin'simi?
3.  # violin nima?
4.  # violin vs box?
5.  # ECDF nima?
6.  # hue nima?
7.  # bir cho'qqi?
8.  # ikki cho'qqi?
9.  # bimodal o'rtacha?
10. # KDE kichik namuna?
11. # KDE chegara?
12. # nega taqsimot grafiklari?
Javoblar
  1. Silliq zichlik egrisi
  2. Bin'siz (silliq)
  3. Box + KDE (median + shakl)
  4. Box + shakl (boy)
  5. Jami foiz (persentil)
  6. Guruh (ustma-ust/yonma-yon)
  7. Bir guruh (o'rtacha ma'noli)
  8. Ikki guruh (aralash)
  9. Ma'nosiz (ajrat)
  10. Silliqlik soxta (histogram)
  11. Chegaradan chiqadi (clip)
  12. Silliq va boy taqsimot

Vazifa 2: Xatolarni tuzating

python
1.  sns.kdeplot(kichik_10)

2.  sns.kdeplot(narx)   # 0'dan past

3.  sns.violinplot(data=kichik)

4.  boy.mean()   # bimodal

5.  sns.histplot(data=df, x="x", hue="g")   # chalkash
Javoblar
python
1.  sns.histplot(kichik_10) (xom)

2.  clip=(0, None)

3.  sns.boxplot(data=kichik)

4.  KDE — 2 cho'qqi (ajrat)

5.  sns.kdeplot(...) (silliq)

Vazifa 3: KDE

Modellang:

  1. Silliq egri
  2. Bin'siz
  3. Zichlik
  4. Cho'qqi

Vazifa 4: Violin

Modellang:

  1. Box + KDE
  2. Median
  3. Shakl
  4. Guruh

Vazifa 5: Modallik

Modellang:

  1. Bir cho'qqi
  2. Ikki cho'qqi
  3. Ikki guruh
  4. Ajrat

Vazifa 6: Integratsiya

Modellang:

  1. Histogram (5.5)
  2. Box plot (5.6)
  3. Seaborn
  4. EDA

Vazifa 7: O'ylash

Violin plot box plot va KDE'ni birlashtiradi — median, tarqoqlik va shaklni bir grafikda ko'rsatadi. Ayniqsa bimodal (ikki cho'qqi) taqsimotni ochib beradi — buni box plot va o'rtacha yashiradi. Nima uchun "o'rtacha bir son taqsimotni yashiradi" muammosi Data Science'da xavfli, va nima uchun taqsimotni ko'rish (bir son emas) tanqidiy muhim?

Javob

Qisqa javob: Violin box + KDE (median + tarqoqlik + shakl — bir grafikda; bimodal ochadi); "o'rtacha bir son taqsimotni yashiradi" xavfli, taqsimotni ko'rish tanqidiy muhim, chunki: (1) bir son yo'qotadi — o'rtacha (yoki median) — bir son (taqsimot shakli yo'qoladi — tarqoqlik, cho'qqi, outlier, egrilik); "168 sm o'rtacha bo'y" (bimodal — erkak 175 + ayol 162; hech kim 168 emas!; ikki guruh orasida); (2) bimodal xavfi — ikki cho'qqi (ikki guruh aralash) — o'rtacha ma'nosiz (guruhlar orasida); box plot yashiradi (median — cho'qqilar orasida), KDE/violin ochadi (ikki cho'qqi); (3) Anscombe/Datasaurus — turli taqsimot bir xil statistika (o'rtacha, std — bir; shakl butunlay boshqa; 5.4 Anscombe; faqat son — aldash); (4) qaror — o'rtacha asosida qaror (mahsulot "o'rtacha mijoz uchun" — bimodal — ikki segment; hech biriga to'g'ri kelmaydi). "Nega xavfli": (a) soxta umumlashtirish — bir son hammani ifodalaydi deb faraz (taqsimot keng/bimodal — bir son yolg'on); (b) guruh yashirin — bimodal (ikki guruh — jins, hudud) — o'rtacha bitta (guruhni yashiradi; ajratish kerak); (c) outlier — o'rtacha outlierdan ta'sirlanadi (median yaxshiroq — 4.2; lekin median ham shaklni yashiradi); (d) qaror xatosi — o'rtachaga asoslangan qaror (bimodalda — noto'g'ri segment). "Nega taqsimot ko'rish": (1) shakl (bir/ikki cho'qqi, egrilik, tarqoqlik — bir son yo'q); (2) guruh (bimodal — ajrat; segmentatsiya); (3) outlier (chetki — box/scatter; o'rtacha yashiradi); (4) faraz tekshirish (normal — 4.6; model faraz — taqsimot ko'r); (5) Datasaurus (bir statistika — turli shakl; ko'r — ishon). "Yechim": (1) taqsimot grafiki (histogram 5.5, KDE, violin — shakl); (2) bir son + tarqoqlik (o'rtacha + std/IQR — kam; lekin shakl emas); (3) guruh ajrat (bimodal — segment; har guruh alohida); (4) ko'r, keyin hisobla (grafik birinchi — EDA 9-qism). Saboqlar: bir son taqsimotni yashiradi (shakl, guruh, outlier); bimodal xavfli (ikki guruh — o'rtacha ma'nosiz); Datasaurus (bir statistika — turli shakl); taqsimot ko'r (grafik — shakl, guruh, faraz). To'g'ri: taqsimot ko'r (histogram/KDE/violin — shakl, cho'qqi, outlier); bir son yetmaydi (o'rtacha — yashiradi); bimodal ajrat (ikki guruh); EDA (grafik birinchi). Muvozanat: bir son (qisqa — hisobot) + taqsimot (shakl — haqiqat; grafik). Bu Data Science tanqidiy fikr asosiy (bir son aldaydi — taqsimot ko'r; bimodal ajrat; Datasaurus — ko'r ishon; EDA). Violin/KDE — taqsimot ko'rish (bir son yashirganni ochadi).

1. Nega bir son xavfli

  • Shakl yo'qoladi (tarqoqlik, cho'qqi, outlier)
  • Bimodal (ikki guruh — o'rtacha ma'nosiz)
  • Datasaurus (bir statistika — turli shakl)
  • Qaror xatosi (o'rtacha asosida — noto'g'ri segment)

2. Nega taqsimot ko'rish

  • Shakl (bir/ikki cho'qqi, egrilik)
  • Guruh (bimodal — ajrat)
  • Outlier (chetki — o'rtacha yashiradi)
  • Faraz (normal — model; taqsimot ko'r)

3. Bir son vs taqsimot

Bir son (o'rtacha) Taqsimot (grafik)
Qisqa (hisobot) Shakl (haqiqat)
Yashiradi (guruh) Ochadi (bimodal)
Aldash (Datasaurus) Ko'r (ishon)

4. Saboqlar

  1. Bir son yashiradi (shakl, guruh, outlier)
  2. Bimodal xavfli (ikki guruh — ajrat)
  3. Datasaurus (bir statistika — turli shakl)
  4. Taqsimot ko'r (grafik birinchi — EDA)

5. Xulosa

  1. O'rtacha (bir son) taqsimotni yashiradi (shakl, guruh)
  2. Bimodal xavfli (ikki guruh — o'rtacha ma'nosiz)
  3. Violin/KDE ochadi (ikki cho'qqi — box yashiradi)
  4. Taqsimot ko'r (grafik — shakl, guruh, faraz; EDA)

Nimani mustahkamlaydi: 2.2, 2.5-bo'limlar.


Xulosa

Bu darsda taqsimot grafiklarini o'rgandik.

Eng muhim uch fikr:

  1. KDE va violin. KDE (sns.kdeplot — silliq zichlik egri, bin'siz; histogram 5.5-bob silliq varianti; histplot(kde=True) — birga; egri osti yuza=1). Violin plot (sns.violinplot — box 5.6-bob + KDE; median chiziq + quti IQR + silliq shakl; box plotdan boyroq — shakl ko'rsatadi; x=/y=/hue= guruh — yonma-yon).

  2. ECDF va guruh. ECDF (sns.ecdfplot — jami foiz; y=foiz 0..1, x=qiymat; median y=0.5, persentil o'qish — 4.4; bin'siz). Guruh taqqoslash (hue= — KDE ustma-ust silliq (histogramdan aniq), violin yonma-yon; guruh bir grafikda).

  3. Modallik va shakl. Modallik — cho'qqi soni: bir cho'qqi (bir guruh — o'rtacha ma'noli), ikki cho'qqi (bimodal — ikki guruh aralash; o'rtacha ma'nosiz — ajrat; box yashiradi, KDE/violin ochadi). Taqsimot grafiklari — silliq (KDE) va boy (violin) taqsimot (shakl, guruh — bir son yashirganni ochadi). Tuzoqlar: KDE kichik namuna (silliqlik soxta — histogram), chegara (clip — narx/yosh), violin kichik (ishonchsiz — box), bimodal o'rtacha (ma'nosiz — ajrat), KDE model (histogram — haqiqiy).

Keyingi darsda ko'p grafik (subplots)ni o'rganamiz: bir figurada bir necha grafik — yonma-yon taqqoslash (plt.subplots(2, 2) — 4 panel; 5.1 figure/axes).

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!