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

5.8-dars: Heatmap (issiqlik xaritasi)

5-QISM — VIZUALIZATSIYA · 8-dars


1. Kirish va motivatsiya

4.9-darsda korrelyatsiya matritsasini o'rgandik — ko'p o'zgaruvchi orasidagi aloqa jadval sifatida. Lekin 10 ustunli matritsa — 100 son; jadval bilan naqshni ko'rish qiyin. Heatmap (issiqlik xaritasi) — matritsani rang bilan ko'rsatadi: har katak qiymati rang bilan (kuchli — to'q, kuchsiz — och), naqsh bir qarashda ko'rinadi. Data Science'da eng ko'p ishlatilishi — korrelyatsiya matritsasi (sns.heatmap(df.corr(), annot=True)): qaysi o'zgaruvchilar bog'liq (to'q qizil/ko'k), qaysilari mustaqil (och) — bir qarashda. Nega muhim? (1) Naqsh — ko'p sonni rang bilan (matritsa naqshi); (2) Korrelyatsiya — o'zgaruvchi aloqasi (feature tanlash — 20-qism); (3) Zich ma'lumot — katta matritsa bir grafikda. Bu dars heatmap'ni o'rgatadi — matritsani rang bilan.

Heatmap (issiqlik xaritasi) — matritsani rang bilan: sns.heatmap(matritsa) (Seaborn — 5.7), korrelyatsiya (df.corr() — 4.9; eng ko'p), annot=True (katakda son), cmap= (rang xaritasi — coolwarm musbat/manfiy), vmin/vmax (rang chegarasi), naqsh (to'q — kuchli, och — kuchsiz; bir qarashda). Foydalanish: korrelyatsiya, matritsa naqshi, zich ma'lumot. Bu 5.7 (Seaborn), 4.9 (korrelyatsiya matritsasi) bilan bog'liq. Heatmap — matritsa rang bilan. Korrelyatsiya. Naqsh.

Real vaziyat. Data Scientist uy narxi ma'lumotida 8 xususiyat (maydon, xonalar, yosh, joylashuv, ...) — qaysilar narx bilan bog'liq? Korrelyatsiya matritsasi (df.corr() — 4.9): 8×8 = 64 son (jadval — naqsh ko'rinmaydi). Heatmap (sns.heatmap(df.corr(), annot=True, cmap="coolwarm")): har katak rang (to'q qizil — kuchli musbat, to'q ko'k — kuchli manfiy, och — kuchsiz); bir qarashda: narx maydon bilan to'q qizil (0.85 — kuchli), yosh bilan to'q ko'k (-0.6 — teskari), joylashuv id bilan och (0.02 — mustaqil). Data Scientist naqshni ko'rdi (qaysi xususiyat muhim — feature tanlash 20-qism; maydon/yosh — model uchun; id — tashla). Heatmap ko'p sonni rang bilan (matritsa naqshi — bir qarashda). Heatmap — korrelyatsiya naqshi.

Bu darsda heatmap'ni o'rganamiz.

Bu darsda:

  • Heatmap nima (matritsa rang bilan)
  • Korrelyatsiya heatmap (df.corr())
  • annot, cmap (son, rang)
  • vmin/vmax (rang chegarasi)
  • Heatmap o'qish (naqsh)
  • Heatmap amaliyoti
  • Heatmap tuzoqlari
  • Amaliy: heatmap modeli

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


2. Nazariya — chuqur tushuntirish

2.1. Heatmap nima (matritsa rang bilan)

Rang bilan:

python
import seaborn as sns

# Heatmap — matritsani rang bilan (to'q — katta, och — kichik)
sns.heatmap(matritsa)

# Har katak qiymati rang bilan → naqsh bir qarashda

Heatmap nima (matritsa rang bilan) — rang: heatmap (issiqlik xaritasi) — 2D matritsani rang bilan ko'rsatadi (sns.heatmap(matritsa) — 5.7 Seaborn; har katak qiymati rangga — to'q katta, och kichik); naqsh bir qarashda (100 son jadval — naqsh ko'rinmas; rang — darhol). Sabab: ko'p son (matritsa — 8×8=64; jadval o'qish qiyin) → rang (naqsh vizual — to'q/och guruh); "rang idrok" (miya rangni sondan tez). Matritsa (2D — qator×ustun), rang (qiymat → rang), naqsh (guruh, aloqa). Heatmap — matritsa rang bilan (naqsh bir qarashda). Matritsa. Rang.

2.2. Korrelyatsiya heatmap (df.corr())

Eng ko'p:

python
import seaborn as sns

# Korrelyatsiya matritsasi 4.9-bob → heatmap (eng ko'p ishlatilishi)
korr = df.corr()   # -1..+1 matritsa
sns.heatmap(korr, annot=True, cmap="coolwarm")
#   to'q qizil — kuchli musbat, to'q ko'k — kuchli manfiy, och — kuchsiz

Korrelyatsiya heatmap (df.corr()) — eng ko'p: heatmap Data Science'da eng ko'p korrelyatsiya matritsasi uchun (df.corr() — 4.9; -1..+1); sns.heatmap(df.corr(), annot=True, cmap="coolwarm") (to'q qizil — kuchli musbat ~+1, to'q ko'k — kuchli manfiy ~-1, och/oq — kuchsiz ~0). Sabab: ko'p o'zgaruvchan aloqasi (10 ustun — 100 juftlik; jadval qiyin) → rang (qaysi bog'liq — to'q; mustaqil — och; bir qarashda); feature tanlash (model uchun — 20-qism; bog'liq xususiyat, ortiqcha tashla). coolwarm (musbat/manfiy — qizil/ko'k; korrelyatsiya ideal), diagonal (o'zi bilan — 1.0; to'q). Korrelyatsiya heatmap — df.corr() + annot + coolwarm (eng ko'p). Korrelyatsiya. coolwarm.

2.3. annot, cmap (son, rang)

annot, cmap — asosiy parametrlar: annot=True (har katakda son — rang + aniq qiymat; fmt=".2f" — format), cmap= (rang xaritasi — "coolwarm" musbat/manfiy, "viridis" ketma-ket, "YlOrRd" issiqlik), linewidths= (katak orasi chiziq — ajratish), cbar= (rang shkalasi — yon panel). Sabab: annot — rang taxminiy, son aniq (ikkalasi — rang naqsh + son qiymat); cmap — ma'noli rang (korrelyatsiya — divergent coolwarm (0 markaz); ketma-ket — viridis (0'dan katta)). annot (son), cmap (rang turi), fmt (son format), linewidths (ajratish). annot, cmap — son + rang xaritasi. annot. cmap.

2.4. vmin/vmax (rang chegarasi)

vmin/vmax (rang chegarasi) — rang masshtabi: vmin=/vmax= (rang eng kichik/katta qiymat — masshtab qat'iy); center= (rang markazi — 0; divergent cmap). Sabab: heatmap rangni avtomatik masshtablaydi (min-max — ma'lumotga qarab); lekin taqqoslash uchun qat'iy kerak (ikki heatmap — bir masshtab; vmin=-1, vmax=1 korrelyatsiya — doimiy); center=0 (korrelyatsiya — 0 oq/markaz; musbat/manfiy simmetrik). vmin=-1, vmax=1, center=0 (korrelyatsiya standart). vmin/vmax (chegara), center (markaz). vmin/vmax — rang masshtabi (qat'iy). Masshtab. center.

2.5. Heatmap o'qish (naqsh)

Heatmap o'qish (naqsh) — talqin: rang (to'q — kuchli/katta, och — kuchsiz/kichik; cmap'ga qarab), guruh (yaqin to'q kataklar — bog'liq guruh; klaster), diagonal (korrelyatsiya — 1.0 to'q; o'zi bilan), satr/ustun (bir o'zgaruvchi boshqalar bilan — qator/ustun bo'ylab). Sabab: heatmap naqsh uchun (aniq son emas — annot; balki guruh, aloqa); "qaysi bog'liq" (to'q — kuchli), "qaysi mustaqil" (och), "guruh" (to'q blok — o'xshash o'zgaruvchilar). Talqin: to'q (kuchli), och (kuchsiz), blok (guruh), diagonal (o'zi). Heatmap o'qish — rang, guruh, naqsh (talqin). Naqsh. Guruh.

2.6. Heatmap amaliyoti

Heatmap amaliyoti: df.corr() (korrelyatsiya — 4.9; eng ko'p); sns.heatmap(korr, annot=True, cmap="coolwarm", vmin=-1, vmax=1, center=0) (son + divergent + qat'iy masshtab); fmt=".2f" (son format); linewidths=0.5 (katak ajratish); plt.figure(figsize=(10,8)) (katta matritsa — katta o'lcham); talqin (to'q — bog'liq; och — mustaqil; blok — guruh). Tuzoqlar: cmap noto'g'ri (korrelyatsiya — divergent), annot ko'p (katta matritsa — o'qib bo'lmas), masshtab (vmin/vmax — taqqoslash), sababiyat (korrelyatsiya ≠ sabab — 4.10). Amaliyot — corr, heatmap, coolwarm, talqin. Korrelyatsiya. Naqsh.

2.7. Heatmap tuzoqlari

Heatmap asosiy tuzoqlari: cmap noto'g'ri (korrelyatsiya (-1..+1) — divergent (coolwarm — 0 markaz oq); ketma-ket (viridis) — 0 markaz emas, noto'g'ri idrok); annot ko'p (katta matritsa (20×20) — annot=True son o'qib bo'lmas; katta — annot'siz, faqat rang); masshtab yo'q (vmin/vmax yo'q — avtomatik (ma'lumot min-max); ikki heatmap taqqoslash — turli masshtab, aldash; qat'iy — vmin=-1, vmax=1); sababiyat (korrelyatsiya heatmap — aloqa, sabab EMAS — 4.10; to'q qizil ≠ sabab); diagonal chalg'ish (korrelyatsiya diagonal — 1.0 (o'zi bilan; doim to'q; ma'nosiz); e'tibor — diagonaldan tashqari); yarim matritsa (korrelyatsiya simmetrik (yuqori = pastki); mask — yarim ko'rsatish; ortiqcha yarmi olib tashlash); rang idrok (rang — taxminiy (aniq son — annot); faqat rang — noaniq); o'lcham (katta matritsa — figsize katta; kichik — katak/yorliq siqiladi). Sabab: heatmap rang/masshtab/talqin nozik (cmap, masshtab, sababiyat — xato idrok). Yechim: divergent cmap, qat'iy masshtab, katta annot'siz, korrelyatsiya ≠ sabab. Tuzoqlar — cmap, annot, masshtab, sababiyat.

2.8. Heatmap — matritsa naqshini rang bilan

Heatmap asosiy g'oyasi — matritsa naqshini rang bilan: 2D matritsa (ko'p son — jadval o'qish qiyin) → rang (naqsh vizual — bir qarashda); Data Science'da eng ko'p korrelyatsiya matritsasi uchun 4.9-bob. sns.heatmap(df.corr(), annot=True, cmap="coolwarm", vmin=-1, vmax=1, center=0) — korrelyatsiya (to'q qizil kuchli musbat, to'q ko'k manfiy, och kuchsiz), son (annot), divergent (coolwarm — 0 markaz), qat'iy masshtab (vmin/vmax/center). Talqin: to'q (bog'liq), och (mustaqil), blok (guruh), diagonal (o'zi — 1.0). Foydalanish: korrelyatsiya (o'zgaruvchan aloqa — feature tanlash 20-qism), matritsa naqshi (guruh, klaster), zich ma'lumot (katta matritsa bir grafikda). Naqsh (rang — aniq son emas; annot — aniq). Tuzoqlar: cmap (divergent korrelyatsiya), annot (katta — o'qib bo'lmas), masshtab (qat'iy), sababiyat (aloqa ≠ sabab — 4.10). Bu 5.7 (Seaborn) ustida va 4.9 (korrelyatsiya matritsa), 4.10 (sababiyat) bilan. Heatmap — matritsa naqshini rang bilan (korrelyatsiya — eng ko'p). Matritsa. Naqsh. Korrelyatsiya.


3. Tez ma'lumotnoma

python
import seaborn as sns
import matplotlib.pyplot as plt

# KORRELYATSIYA HEATMAP (eng ko'p ishlatilishi):
korr = df.corr()   # -1..+1 matritsa (4.9)
sns.heatmap(korr, annot=True, cmap="coolwarm", vmin=-1, vmax=1, center=0)
#   to'q qizil — kuchli musbat · to'q ko'k — manfiy · och — kuchsiz

# PARAMETRLAR:
annot=True        # katakda son (rang + aniq qiymat)
fmt=".2f"         # son format
cmap="coolwarm"   # rang (divergent — korrelyatsiya) · viridis (ketma-ket)
vmin=-1, vmax=1   # rang masshtabi (qat'iy — taqqoslash)
center=0          # rang markazi (0 — korrelyatsiya)
linewidths=0.5    # katak ajratish

# KATTA MATRITSA:
plt.figure(figsize=(12, 10))   # katta o'lcham
sns.heatmap(korr, cmap="coolwarm")   # annot'siz (o'qib bo'lmas)

TALQIN: to'q (bog'liq) · och (mustaqil) · blok (guruh) · diagonal (o'zi=1)
QOIDA: divergent cmap · qat'iy masshtab · korrelyatsiya ≠ sabab (4.10)

Heatmap xulosasi

Heatmap — matritsa naqshini rang bilan (bir qarashda)
Korrelyatsiya — df.corr() + heatmap (eng ko'p; feature tanlash)
annot/cmap — son + rang (coolwarm divergent)
vmin/vmax/center — qat'iy masshtab (taqqoslash)
Talqin — to'q (bog'liq), och (mustaqil), aloqa ≠ sabab

4. Batafsil misollar

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

Misol 1 — Korrelyatsiya heatmap

python
"""Korrelyatsiya heatmap (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)
    n = 100
    maydon = np.random.normal(80, 20, n)
    narx = maydon * 3 + np.random.normal(0, 10, n)   # bog'liq
    yosh = np.random.normal(15, 5, n)                 # mustaqil
    df = pd.DataFrame({"maydon": maydon, "narx": narx, "yosh": yosh})

    print("=== 1. Korrelyatsiya matritsasi ===")
    korr = df.corr().round(2)
    print(korr.to_string())

    print("\n=== 2. Heatmap ===")
    fig, ax = plt.subplots()
    sns.heatmap(korr, annot=True, cmap="coolwarm", vmin=-1, vmax=1, ax=ax)
    print(f"  kataklar (matritsa): {korr.shape}")

    print("\n=== 3. Talqin ===")
    print(f"  maydon-narx: {korr.loc['maydon', 'narx']} (kuchli — to'q qizil)")
    print(f"  maydon-yosh: {korr.loc['maydon', 'yosh']} (kuchsiz — och)")

    print("\n=== 4. Diagonal ===")
    print(f"  maydon-maydon: {korr.loc['maydon', 'maydon']} (o'zi — 1.0)")
    plt.close("all")
    print("  ⭐ Heatmap — korrelyatsiya naqshi (rang)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Korrelyatsiya matritsasi ===
        maydon  narx  yosh
maydon    1.00  0.99  0.08
narx      0.99  1.00  0.08
yosh      0.08  0.08  1.00

=== 2. Heatmap ===
  kataklar (matritsa): (3, 3)

=== 3. Talqin ===
  maydon-narx: 0.99 (kuchli — to'q qizil)
  maydon-yosh: 0.08 (kuchsiz — och)

=== 4. Diagonal ===
  maydon-maydon: 1.0 (o'zi — 1.0)
  ⭐ Heatmap — korrelyatsiya naqshi (rang)

Nima ko'rsatdi: 2.1, 2.2-bo'limlar.

Misol 2 — annot va cmap

python
"""Heatmap annot va cmap (real seaborn)."""

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:
    korr = pd.DataFrame(
        [[1.0, 0.8, -0.3], [0.8, 1.0, -0.5], [-0.3, -0.5, 1.0]],
        columns=["a", "b", "c"], index=["a", "b", "c"],
    )

    print("=== 1. annot=True (son) ===")
    fig, ax = plt.subplots()
    sns.heatmap(korr, annot=True, cmap="coolwarm", vmin=-1, vmax=1, ax=ax)
    print(f"  matnlar (annot): {len(ax.texts) > 0}")

    print("\n=== 2. cmap coolwarm (divergent) ===")
    print("  to'q qizil (+1), to'q ko'k (-1), oq (0)")

    print("\n=== 3. Musbat/manfiy ===")
    print(f"  a-b: {korr.loc['a', 'b']} (musbat — qizil)")
    print(f"  b-c: {korr.loc['b', 'c']} (manfiy — ko'k)")

    print("\n=== 4. vmin/vmax (masshtab) ===")
    print("  vmin=-1, vmax=1 (korrelyatsiya — qat'iy)")
    plt.close("all")
    print("  ⭐ annot (son) + cmap (rang)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. annot=True (son) ===
  matnlar (annot): True

=== 2. cmap coolwarm (divergent) ===
  to'q qizil (+1), to'q ko'k (-1), oq (0)

=== 3. Musbat/manfiy ===
  a-b: 0.8 (musbat — qizil)
  b-c: -0.5 (manfiy — ko'k)

=== 4. vmin/vmax (masshtab) ===
  vmin=-1, vmax=1 (korrelyatsiya — qat'iy)
  ⭐ annot (son) + cmap (rang)

Nima ko'rsatdi: 2.3, 2.4-bo'limlar.

Misol 3 — Naqsh o'qish

python
"""Heatmap naqsh o'qish (real pandas)."""

import numpy as np
import pandas as pd


def main() -> None:
    np.random.seed(0)
    n = 200
    # bog'liq guruh: x1, x2 (o'xshash); mustaqil: z
    x1 = np.random.normal(0, 1, n)
    x2 = x1 * 0.9 + np.random.normal(0, 0.3, n)
    z = np.random.normal(0, 1, n)
    df = pd.DataFrame({"x1": x1, "x2": x2, "z": z})

    korr = df.corr().round(2)

    print("=== 1. Korrelyatsiya matritsasi ===")
    print(korr.to_string())

    print("\n=== 2. Bog'liq guruh (to'q blok) ===")
    print(f"  x1-x2: {korr.loc['x1', 'x2']} (kuchli — to'q blok)")

    print("\n=== 3. Mustaqil (och) ===")
    print(f"  x1-z: {korr.loc['x1', 'z']} (kuchsiz — och)")

    print("\n=== 4. Talqin ===")
    print("  to'q blok = bog'liq guruh; och = mustaqil")
    print("  ⭐ Heatmap — naqsh (guruh, mustaqil)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Korrelyatsiya matritsasi ===
      x1    x2     z
x1  1.00  0.96 -0.06
x2  0.96  1.00 -0.00
z  -0.06 -0.00  1.00

=== 2. Bog'liq guruh (to'q blok) ===
  x1-x2: 0.96 (kuchli — to'q blok)

=== 3. Mustaqil (och) ===
  x1-z: -0.06 (kuchsiz — och)

=== 4. Talqin ===
  to'q blok = bog'liq guruh; och = mustaqil
  ⭐ Heatmap — naqsh (guruh, mustaqil)

Nima ko'rsatdi: 2.5-bo'lim.

Misol 4 — Katta matritsa (annot'siz)

python
"""Katta matritsa heatmap (real seaborn)."""

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)
    # 8 ustunli matritsa
    data = np.random.normal(0, 1, (100, 8))
    df = pd.DataFrame(data, columns=[f"x{i}" for i in range(8)])
    korr = df.corr()

    print("=== 1. Katta matritsa ===")
    print(f"  o'lcham: {korr.shape} ({korr.size} son)")

    print("\n=== 2. Katta o'lcham (figsize) ===")
    fig, ax = plt.subplots(figsize=(10, 8))
    sns.heatmap(korr, cmap="coolwarm", vmin=-1, vmax=1, ax=ax)
    print(f"  o'lcham (dyuym): {fig.get_size_inches().tolist()}")

    print("\n=== 3. annot'siz (o'qib bo'lmas) ===")
    print("  katta matritsa — faqat rang (son o'qib bo'lmas)")

    print("\n=== 4. Diagonal ===")
    diagonal = np.diag(korr.values)
    print(f"  diagonal (o'zi): {[round(v, 1) for v in diagonal[:3]]}...")
    plt.close("all")
    print("  ⭐ Katta matritsa — rang (annot'siz)")


if __name__ == "__main__":
    main()

Natijaning muhim qismi:

text
=== 1. Katta matritsa ===
  o'lcham: (8, 8) (64 son)

=== 2. Katta o'lcham (figsize) ===
  o'lcham (dyuym): [10.0, 8.0]

=== 3. annot'siz (o'qib bo'lmas) ===
  katta matritsa — faqat rang (son o'qib bo'lmas)

=== 4. Diagonal ===
  diagonal (o'zi): [np.float64(1.0), np.float64(1.0), np.float64(1.0)]...
  ⭐ Katta matritsa — rang (annot'siz)

Nima ko'rsatdi: 2.6, 2.7-bo'limlar.


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

Noto'g'ri fikr To'g'risi
"Heatmap har matritsa" Ha, lekin korrelyatsiya eng ko'p
"cmap muhim emas" Divergent (korrelyatsiya)
"annot doim" Katta matritsa — o'qib bo'lmas
"masshtab avtomatik OK" vmin/vmax (taqqoslash)
"to'q qizil = sabab" Aloqa (sabab emas — 4.10)
"diagonal muhim" 1.0 (o'zi — ma'nosiz)
"rang = aniq son" Taxminiy (annot — aniq)
"viridis korrelyatsiya" coolwarm (divergent)

6. Keng tarqalgan xatolar va yechimlari

1. cmap noto'g'ri (korrelyatsiya)

python
sns.heatmap(df.corr(), cmap="viridis")   # 0 markaz emas          # ⚠️
sns.heatmap(df.corr(), cmap="coolwarm", center=0)   # divergent   # ✅

2. annot katta matritsa

python
sns.heatmap(korr_20x20, annot=True)   # 400 son (o'qib bo'lmas)   # ⚠️
sns.heatmap(korr_20x20, cmap="coolwarm")   # faqat rang           # ✅

3. Masshtab yo'q

python
sns.heatmap(df.corr())   # avtomatik (taqqoslash xato)            # ⚠️
sns.heatmap(df.corr(), vmin=-1, vmax=1, center=0)   # qat'iy      # ✅

4. Sababiyat

python
# to'q qizil → "sabab" (xato)                                      # ⚠️
# to'q qizil → aloqa (sabab emas — 4.10)                          # ✅

5. Kichik o'lcham (katta matritsa)

python
sns.heatmap(korr_20x20)   # yorliq siqiladi                        # ⚠️
plt.figure(figsize=(14, 12)); sns.heatmap(...)   # katta          # ✅

6. Diagonal e'tibor

python
# diagonal 1.0 → "kuchli" (o'zi bilan — ma'nosiz)                  # ⚠️
# diagonaldan tashqari (haqiqiy aloqa)                             # ✅

7. fmt unutish

python
sns.heatmap(korr, annot=True)   # 0.847291... (uzun)              # ⚠️
sns.heatmap(korr, annot=True, fmt=".2f")   # 0.85                 # ✅

7. Integratsiya — bu bilim qayerda kerak bo'ladi

  • 5.7-dars (o'tilgan): Seaborn (heatmap)
  • 4.9-dars (o'tilgan): Korrelyatsiya matritsasi
  • 4.10-dars (o'tilgan): Korrelyatsiya ≠ sabab
  • 5.10-dars: Ko'p grafik (subplots)
  • 20-qism (reja): Feature tanlash (korrelyatsiya)

8. Eng yaxshi amaliyotlar

  1. Korrelyatsiya — df.corr() + heatmap.

  2. cmap — divergent (coolwarm, center=0).

  3. Masshtab — vmin=-1, vmax=1.

  4. annot — kichik matritsa (fmt=".2f").

  5. Katta matritsa — annot'siz (faqat rang).

  6. o'lcham — figsize (katta matritsa).

  7. Talqin — aloqa (sabab emas — 4.10).

  8. Diagonal — o'zi (1.0 — e'tibor bermang).


9. Amaliy topshiriq

Vazifa 1: Bashorat qiling

python
1.  # Heatmap nima?
2.  # Eng ko'p ishlatilishi?
3.  # df.corr() nima?
4.  # annot nima?
5.  # cmap coolwarm?
6.  # vmin/vmax nima?
7.  # to'q qizil?
8.  # och rang?
9.  # diagonal nima?
10. # katta matritsa annot?
11. # to'q qizil = sabab?
12. # nega heatmap muhim?
Javoblar
  1. Matritsa rang bilan (naqsh)
  2. Korrelyatsiya matritsasi
  3. Korrelyatsiya matritsasi (-1..+1)
  4. Katakda son (rang + aniq)
  5. Divergent (musbat/manfiy)
  6. Rang masshtabi (qat'iy)
  7. Kuchli musbat (~+1)
  8. Kuchsiz (~0)
  9. O'zi bilan (1.0 — ma'nosiz)
  10. Yo'q (o'qib bo'lmas — faqat rang)
  11. Yo'q (aloqa — 4.10)
  12. Ko'p sonni rang bilan (naqsh)

Vazifa 2: Xatolarni tuzating

python
1.  sns.heatmap(df.corr(), cmap="viridis")

2.  sns.heatmap(korr_20x20, annot=True)

3.  sns.heatmap(df.corr())   # masshtab

4.  # to'q qizil → sabab

5.  sns.heatmap(korr, annot=True)   # fmt
Javoblar
python
1.  cmap="coolwarm", center=0 (divergent)

2.  cmap="coolwarm" (annot'siz)

3.  vmin=-1, vmax=1, center=0

4.  aloqa (sabab emas — 4.10)

5.  fmt=".2f"

Vazifa 3: Heatmap

Modellang:

  1. Matritsa rang bilan
  2. Naqsh
  3. Korrelyatsiya
  4. Bir qarashda

Vazifa 4: Parametrlar

Modellang:

  1. annot (son)
  2. cmap (rang)
  3. vmin/vmax (masshtab)
  4. center (markaz)

Vazifa 5: Talqin

Modellang:

  1. To'q (bog'liq)
  2. Och (mustaqil)
  3. Blok (guruh)
  4. Aloqa ≠ sabab

Vazifa 6: Integratsiya

Modellang:

  1. df.corr()
  2. Feature tanlash
  3. Seaborn
  4. Naqsh

Vazifa 7: O'ylash

Heatmap korrelyatsiya matritsasini rang bilan ko'rsatadi — ko'p o'zgaruvchi aloqasini bir qarashda. Lekin "to'q qizil" (kuchli korrelyatsiya) sababiyatni anglatmaydi 4.10-bob, va yashirin o'zgaruvchi ikki mustaqil o'zgaruvchini bog'liq ko'rsatishi mumkin. Nima uchun heatmap "gipoteza generatori" (tekshirish emas), va Data Scientist heatmap'dan qanday to'g'ri (va noto'g'ri) foydalanadi?

Javob

Qisqa javob: Heatmap korrelyatsiyani rang bilan (ko'p aloqa — bir qarashda), lekin gipoteza generatori (tekshirish emas), chunki to'q qizil ≠ sabab 4.10-bob, yashirin o'zgaruvchi aldaydi; Data Scientist to'g'ri (kashfiyot — qaysi o'rganish) va noto'g'ri (xulosa — sabab) ishlatadi: (1) heatmap ko'rsatadi — ko'p o'zgaruvchan korrelyatsiya (100 juftlik — rang; qaysi bog'liq (to'q), mustaqil (och)); bir qarashda (jadval qiyin); (2) korrelyatsiya ≠ sabab 4.10-bob — to'q qizil (kuchli aloqa) sabab emas (A→B, B→A, yoki C→ikkalasi; yashirin o'zgaruvchi — muzqaymoq/cho'kish ~ yoz); heatmap aloqani ko'rsatadi (sabab emas); (3) yashirin o'zgaruvchi — ikki mustaqil o'zgaruvchi (C ikkalasiga ta'sir — soxta korrelyatsiya; heatmap to'q, lekin bevosita emas); (4) chiziqli faqat — df.corr() (Pearson — chiziqli; nochiziqli (U shakl) — och, lekin kuchli aloqa; heatmap o'tkazib yuboradi — 4.9). "Nega gipoteza generatori": (a) kashfiyot — heatmap qiziq aloqa ko'rsatadi ("x-y to'q — nega?"; gipoteza — o'rganish yo'nalishi); (b) tekshirish emas — gipoteza eksperiment (nazorat tajriba — 4.10) yoki statistik test (gipoteza tekshirish — 4.12) bilan; heatmap boshlanish (yakun emas); (c) filtr — ko'p o'zgaruvchi (100 — hammasi tekshirib bo'lmas); heatmap saralaydi (qaysi to'q — birinchi o'rgan); (d) model uchun — feature tanlash (bog'liq xususiyat — model; ortiqcha (bir-biri bilan to'q — multikollinearlik) — tashla; 20-qism). "To'g'ri foydalanish": (1) kashfiyot (qaysi o'zgaruvchi bog'liq — o'rganish); (2) feature tanlash (model — bog'liq xususiyat; ortiqcha tashla); (3) EDA (ma'lumot tanish — birinchi qadam; 9-qism); (4) gipoteza (qiziq aloqa — keyin tekshir). "Noto'g'ri foydalanish": (1) sabab xulosa (to'q qizil → "sabab"; yo'q — 4.10); (2) chiziqli faraz (Pearson — nochiziqli o'tkazib; scatter bilan tekshir — 5.4); (3) yashirin o'zgaruvchi (soxta korrelyatsiya — C tekshir); (4) tasodifiy (ko'p juftlik — ba'zi tasodifiy to'q; p-qiymat — 4.12). Saboqlar: heatmap kashfiyot (gipoteza — o'rganish yo'nalishi), tekshirish emas (eksperiment/test); korrelyatsiya ≠ sabab (to'q ≠ sabab); yashirin o'zgaruvchi, chiziqli (nozik); to'g'ri (EDA, feature) noto'g'ri (sabab xulosa). To'g'ri: heatmap — aloqa kashfiyoti (gipoteza generatori; EDA, feature tanlash); tekshirish — eksperiment/test; sabab EMAS 4.10-bob. Muvozanat: heatmap kuchli (ko'p aloqa — bir qarashda) + cheklov (aloqa, sabab emas; chiziqli; kashfiyot). Bu Data Science tanqidiy fikr asosiy (heatmap — kashfiyot vosita; sabab emas — eksperiment; EDA/feature — to'g'ri; sabab xulosa — noto'g'ri). Heatmap — gipoteza generatori (kashfiyot, tekshirish emas).

1. Nega gipoteza generatori

  • Kashfiyot (qiziq aloqa — o'rganish yo'nalishi)
  • Tekshirish emas (eksperiment/test — 4.10, 4.12)
  • Filtr (ko'p o'zgaruvchi — qaysi birinchi)
  • Boshlanish (yakun emas)

2. To'g'ri vs noto'g'ri

To'g'ri Noto'g'ri
Kashfiyot (aloqa) Sabab xulosa
Feature tanlash Chiziqli faraz
EDA (tanish) Yashirin o'zgaruvchi
Gipoteza Tasodifiy to'q

3. Cheklovlar

  • Korrelyatsiya ≠ sabab (4.10)
  • Chiziqli faqat (Pearson — 4.9)
  • Yashirin o'zgaruvchi (soxta)
  • Tasodifiy (ko'p juftlik)

4. Saboqlar

  1. Kashfiyot (gipoteza generatori)
  2. Tekshirish emas (eksperiment/test)
  3. Korrelyatsiya ≠ sabab (to'q ≠ sabab)
  4. To'g'ri (EDA/feature), noto'g'ri (sabab)

5. Xulosa

  1. Heatmap — aloqa kashfiyoti (gipoteza generatori)
  2. Tekshirish emas (eksperiment/test)
  3. Sabab EMAS (4.10 — yashirin o'zgaruvchi, chiziqli)
  4. To'g'ri (EDA, feature tanlash), noto'g'ri (sabab xulosa)

Nimani mustahkamlaydi: 2.5, 2.7-bo'limlar.


Xulosa

Bu darsda heatmap'ni o'rgandik.

Eng muhim uch fikr:

  1. Heatmap va korrelyatsiya. Heatmap (issiqlik xaritasi) — 2D matritsani rang bilan (sns.heatmap(matritsa) — 5.7; to'q katta, och kichik; naqsh bir qarashda). Data Science'da eng ko'p korrelyatsiya matritsasi uchun (df.corr() — 4.9): sns.heatmap(df.corr(), annot=True, cmap="coolwarm", vmin=-1, vmax=1, center=0) (to'q qizil kuchli musbat, to'q ko'k manfiy, och kuchsiz; feature tanlash — 20-qism).

  2. Parametrlar va masshtab. annot=True (katakda son — rang + aniq; fmt=".2f"), cmap= (rang xaritasi — korrelyatsiya divergent coolwarm + center=0; ketma-ket viridis), vmin/vmax (rang masshtabi — qat'iy; taqqoslash — korrelyatsiya -1..+1). Katta matritsa — annot'siz (faqat rang — o'qib bo'lmas), figsize katta.

  3. Naqsh va talqin. Talqin: to'q (bog'liq), och (mustaqil), blok (guruh — o'xshash o'zgaruvchi), diagonal (o'zi — 1.0; e'tibor bermang). Heatmap — matritsa naqshini rang bilan (korrelyatsiya — eng ko'p; kashfiyot/gipoteza generatori — tekshirish emas). Tuzoqlar: cmap (divergent korrelyatsiya), annot (katta — o'qib bo'lmas), masshtab (qat'iy), sababiyat (aloqa ≠ sabab — 4.10; to'q qizil ≠ sabab), chiziqli (Pearson — nochiziqli o'tkazib yuboradi).

Keyingi darsda taqsimot grafiklari (KDE, violin)ni o'rganamiz: ma'lumot taqsimotini silliq egri bilan ko'rsatish — histogram 5.5-bobdan chiroyliroq, guruh taqqoslash (violinplot — box + shakl).

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
5.8-dars: Heatmap (issiqlik xaritasi) — IlmHamroh