Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. Matritsa: shakl, qatorlar va ustunlar
- 2.2. Ma'lumot matritsasi X (n × p)
- 2.3. Transponirlash
- 2.4. Maxsus matritsalar
- 2.5. Kovariatsiya matritsasi
- 2.6. Matritsa sifatida ma'lumot turlari
- 2.7. Matritsa tuzoqlari
- 2.8. Matritsalar — ma'lumot jadvalining matematikasi
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — Matritsa: shakl, qatorlar, ustunlar
- Misol 2 — Maxsus matritsalar
- Misol 3 — Kovariatsiya matritsasi qo'lda
- Misol 4 — Rasm va baholar matritsa sifatida
- 5. To'g'ri va noto'g'ri tushunishlar
- 6. Keng tarqalgan xatolar va yechimlari
- 7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 8. Eng yaxshi amaliyotlar
- 9. Amaliy topshiriq
- Xulosa
10.3-dars: Matritsalar
10-QISM — CHIZIQLI ALGEBRA · 3-dars
1. Kirish va motivatsiya
Matritsa — sonlarning to'rtburchak jadvali: m qator × n ustun. Data Science'da siz matritsa bilan birinchi kundan ishlayapsiz: har bir DataFrame — matritsa (qatorlar — kuzatuvlar, ustunlar — belgilar), har bir oq-qora rasm — piksellar matritsasi, foydalanuvchi × mahsulot baholari — matritsa, korrelyatsiya jadvali 4.9-bob — matritsa. Bu darsda matritsani "shunchaki jadval" dan matematik obyekt darajasiga ko'taramiz.
Matritsani ikki xil o'qish mumkin: (1) qatorlar to'plami — har qator bir kuzatuv vektori 10.1-bob; (2) ustunlar to'plami — har ustun bir belgi vektori. Qaysi o'qishni tanlash — qanday savol berayotganingizga bog'liq: "qaysi mijozlar o'xshash?" — qatorlar; "qaysi belgilar bog'liq?" — ustunlar. Maxsus matritsalar (birlik, diagonal, simmetrik) va kovariatsiya matritsasi — keyingi darslarning (PCA, regressiya) asosiy qurilish bloklari.
Real vaziyat. ML muhandisi 50 000 mijoz × 200 belgili ma'lumotni pandas'da siklda qayta ishlaydi — har mijoz uchun for bilan hisob: 40 daqiqa. Kollegasi butun amalni matritsa ko'rinishida yozadi: standartlashtirish — broadcasting, o'xshashlik — bitta matritsa ko'paytmasi, kovariatsiya — Xc.T @ Xc / (n - 1) (Xc — markazlashtirilgan X). Natija: 2 soniya. Matritsa tilida fikrlash — nafaqat to'g'ri, balki tez kod (2.12 — vektorlashtirish).
Bu darsda matritsalarni o'rganamiz.
Bu darsda:
- Matritsa: shakl, qatorlar va ustunlar
- Ma'lumot matritsasi X (n × p)
- Transponirlash
- Maxsus matritsalar: birlik, diagonal, simmetrik, nol
- Kovariatsiya matritsasi
- Matritsa sifatida ma'lumot turlari (rasm, baholar)
- Matritsa tuzoqlari
- Amaliy: kovariatsiyani qo'lda hisoblash
ℹ Misollar real numpy/pandas bilan (Python 3.14).
2. Nazariya — chuqur tushuntirish
2.1. Matritsa: shakl, qatorlar va ustunlar
A — 2 × 3 matritsa (2 qator, 3 ustun):
[ 1 2 3 ] A[0, :] = [1, 2, 3] — 0-qator (vektor)
A = [ 4 5 6 ] A[:, 1] = [2, 5] — 1-ustun (vektor)
A[1, 2] = 6 — element (qator 1, ustun 2)
A.shape = (2, 3)
Vektor — maxsus matritsa: qator vektor (1 × n), ustun vektor (n × 1)
NumPy: (n,) — 1D massiv (na qator, na ustun!) Matritsa — m × n sonlar jadvali; shape = (m, n) — birinchisi qatorlar, ikkinchisi ustunlar (pandas va numpy'da bir xil). Element A[i, j] — i-qator, j-ustun. Qator va ustun — vektorlar. NumPy'da 1 o'lchamli massiv (n,) — qator ham, ustun ham emas; kerak bo'lsa reshape(-1, 1) (ustun) yoki reshape(1, -1) (qator) — sklearn ko'pincha 2D talab qiladi 2.7-bob.
2.2. Ma'lumot matritsasi X (n × p)
belgi 1 belgi 2 ... belgi p
kuzatuv 1 [ x11 x12 ... x1p ]
kuzatuv 2 [ x21 x22 ... x2p ] X — n × p
...
kuzatuv n [ xn1 xn2 ... xnp ]
y — n uzunlikdagi nishon vektori
ML konventsiyasi: X — katta harf (matritsa), y — kichik (vektor)
sklearn: model.fit(X, y) → X.shape = (n_samples, n_features) Ma'lumot matritsasi X — ML'ning standart kirishi: qatorlar = kuzatuvlar (n), ustunlar = belgilar (p). df.to_numpy() yoki df.values — DataFrame'dan X. Ikki o'qish: qator X[i] — i-kuzatuv vektori (masofa, o'xshashlik — 10.1-10.2); ustun X[:, j] — j-belgi vektori (korrelyatsiya, kovariatsiya). Muhim nisbat: n > p (kuzatuvlar belgilardan ko'p) — klassik statistika holati; p > n (genetika, matn — belgilar ko'p) — maxsus usullar kerak (regularizatsiya).
2.3. Transponirlash
[ 1 2 3 ] [ 1 4 ]
A = [ 4 5 6 ] A.T = [ 2 5 ] (A.T)[i, j] = A[j, i]
[ 3 6 ]
(2 × 3) (3 × 2)
(A.T).T = A, (A + B).T = A.T + B.T, (A @ B).T = B.T @ A.T ← tartib almashadi! Transponirlash — qatorlar va ustunlarni almashtirish: A.T. Ma'nosi Data Science'da: X — "kuzatuvlar qatorlarda", X.T — "belgilar qatorlarda". X.T @ X (p × p) — belgilar orasidagi skalyar ko'paytmalar (kovariatsiya asosi); X @ X.T (n × n) — kuzatuvlar orasidagi skalyar ko'paytmalar (o'xshashlik matritsasi). Ko'paytmaning transponirlanishida tartib almashadi — ko'p isbot va formulalarda uchraydi. pandas: df.T.
2.4. Maxsus matritsalar
NOL: barcha elementlar 0 np.zeros((m, n))
BIRLIK I: diagonalda 1, qolgani 0 (kvadrat) np.eye(n) A @ I = A
DIAGONAL D: faqat diagonalda qiymatlar np.diag([2, 5, 1])
D @ x — har koordinatani o'z soniga ko'paytiradi (masshtablash!)
SIMMETRIK: A = A.T kovariatsiya, korrelyatsiya, masofa
KVADRAT: m = n Birlik matritsa I — "1 soni" ning matritsa ko'rinishi: A @ I = I @ A = A. Diagonal matritsa — har o'qni alohida cho'zadi/qisqartiradi: standartlashtirish (har ustunni o'z SD siga bo'lish) — diagonal matritsaga ko'paytirish. Simmetrik matritsa — A = A.T: kovariatsiya, korrelyatsiya, masofa matritsalari doim simmetrik; ularning xossalari ayniqsa yaxshi (xos qiymatlari haqiqiy, xos vektorlari ortogonal — 10.7). Siyrak (sparse) — ko'p elementi 0: matn, baholar — scipy.sparse bilan saqlanadi.
2.5. Kovariatsiya matritsasi
Xc = X - X.mean(axis=0) ← har ustunni markazlashtirish
C = Xc.T @ Xc / (n - 1) ← p × p, simmetrik
C[j, j] — j-belgi dispersiyasi (diagonal)
C[j, k] — j va k belgilar kovariatsiyasi (10.2: markazlashtirilgan skalyar ko'paytma)
Standartlashtirilgan X uchun: C = korrelyatsiya matritsasi
np.cov(X, rowvar=False) ← ustunlar — o'zgaruvchilar! Kovariatsiya matritsasi — barcha belgi juftliklari kovariatsiyalari bitta matritsada: diagonal — dispersiyalar, diagonaldan tashqari — kovariatsiyalar. Hisoblash — bitta matritsa ko'paytmasi: Xc.T @ Xc / (n - 1). Bu PCA ning 10.9-bob kirishi: uning xos vektorlari — ma'lumotning asosiy yo'nalishlari. Diqqat: np.cov standart holatda qatorlarni o'zgaruvchi deb oladi — ma'lumot matritsasi uchun rowvar=False kerak (yoki pd.DataFrame.cov()).
2.6. Matritsa sifatida ma'lumot turlari
Ko'p ma'lumot turi tabiiy ravishda matritsa: oq-qora rasm — balandlik × kenglik piksel yorqinligi (0-255); rangli — 3 ta matritsa (R, G, B); baholar — foydalanuvchi × mahsulot (ko'pi bo'sh — siyrak; tavsiya tizimlari, 10.10); matn — hujjat × so'z (TF-IDF, 10.2); grafik (tarmoq) — qo'shnilik matritsasi (kim kim bilan bog'langan); vaqt qatorlari — vaqt × ko'rsatkich. Matritsa ko'rinishi bu turlarga bir xil usullarni (SVD, PCA, o'xshashlik) qo'llash imkonini beradi.
2.7. Matritsa tuzoqlari
Asosiy tuzoqlar: qator/ustun adashtirish (np.cov(X) — qatorlarni o'zgaruvchi deb, n × n matritsa! rowvar=False kerak); (n,) va (n, 1) (sklearn 2D talab qiladi; broadcasting kutilmagan (n, n) natija beradi — a.reshape(-1, 1) - b → n × n matritsa); axis ni adashtirish (X.mean(axis=0) — ustunlar o'rtachasi, axis=1 — qatorlar); markazlashtirmasdan kovariatsiya (Xc emas, X bilan — noto'g'ri); katta siyrak matritsani zich qilish (xotira); pandas indeks bilan matritsa amallari (to_numpy() qilib, tartib va ustunlarni tekshiring); transponirlashda ko'paytma tartibi.
2.8. Matritsalar — ma'lumot jadvalining matematikasi
Matritsa: m × n jadval (shape — qatorlar, ustunlar); ma'lumot matritsasi X (n kuzatuv × p belgi) — ML standarti (fit(X, y)); qator — kuzatuv vektori, ustun — belgi vektori; transponirlash (X.T; X.T @ X — belgilar, X @ X.T — kuzatuvlar; (AB).T = B.T A.T); maxsus — birlik, diagonal (masshtablash), simmetrik (kovariatsiya), siyrak; kovariatsiya matritsasi Xc.T @ Xc / (n - 1) — PCA kirishi (rowvar=False!). Rasm, baholar, matn, tarmoq — hammasi matritsa. Keyingi dars — matritsa ko'paytmasi va matritsa chiziqli o'zgartirish sifatida.
3. Tez ma'lumotnoma
import numpy as np
import pandas as pd
X = df.to_numpy() # n × p ma'lumot matritsasi
X.shape # (n, p)
X[i], X[:, j] # i-kuzatuv, j-belgi
X.T # transponirlash
np.eye(3) # birlik
np.diag([2, 5, 1]) # diagonal
np.allclose(C, C.T) # simmetrikmi?
# KOVARIATSIYA
Xc = X - X.mean(axis=0)
C = Xc.T @ Xc / (len(X) - 1) # p × p
np.cov(X, rowvar=False) # bir xil (rowvar=False!)
df.cov(); df.corr()
# SHAKL
v.reshape(-1, 1) # (n,) → (n, 1)
QOIDA: qator — kuzatuv, ustun — belgi · axis=0 — ustunlar · np.cov(rowvar=False)Matritsalar xulosasi
Matritsa — m × n; shape = (qatorlar, ustunlar)
X — n kuzatuv × p belgi (sklearn standarti)
X.T @ X — belgilar orasidagi, X @ X.T — kuzatuvlar orasidagi ko'paytmalar
Birlik (I), diagonal (masshtab), simmetrik (A = A.T), siyrak
Kovariatsiya — Xc.T @ Xc / (n-1); diagonal — dispersiyalar4. Batafsil misollar
Misollar real numpy/pandas bilan (Python 3.14).
Misol 1 — Matritsa: shakl, qatorlar, ustunlar
"""DataFrame → ma'lumot matritsasi: qatorlar va ustunlar (real numpy/pandas)."""
import numpy as np
import pandas as pd
def main() -> None:
df = pd.DataFrame({
"maydon": [65, 80, 45, 120],
"xona": [2, 3, 1, 4],
"yosh": [10, 3, 25, 1],
}, index=["uy1", "uy2", "uy3", "uy4"])
X = df.to_numpy(dtype=float)
print("=== 1. Shakl ===")
print(f" X.shape = {X.shape} (4 kuzatuv × 3 belgi)")
print("\n=== 2. Qator — kuzatuv, ustun — belgi ===")
print(f" X[1] = {X[1]} (uy2)")
print(f" X[:, 0] = {X[:, 0]} (maydon)")
print("\n=== 3. axis ===")
print(f" ustunlar o'rtachasi (axis=0): {X.mean(axis=0)}")
print(f" qatorlar o'rtachasi (axis=1): {np.round(X.mean(axis=1), 2)}")
print("\n=== 4. Transponirlash ===")
print(f" X.T.shape = {X.T.shape}")
print(f" (X.T)[0] = {X.T[0]} (maydon — endi qator)")
print(" ⭐ Qator — kuzatuv, ustun — belgi")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Shakl ===
X.shape = (4, 3) (4 kuzatuv × 3 belgi)
=== 2. Qator — kuzatuv, ustun — belgi ===
X[1] = [80. 3. 3.] (uy2)
X[:, 0] = [ 65. 80. 45. 120.] (maydon)
=== 3. axis ===
ustunlar o'rtachasi (axis=0): [77.5 2.5 9.75]
qatorlar o'rtachasi (axis=1): [25.67 28.67 23.67 41.67]
=== 4. Transponirlash ===
X.T.shape = (3, 4)
(X.T)[0] = [ 65. 80. 45. 120.] (maydon — endi qator)
⭐ Qator — kuzatuv, ustun — belgiNima ko'rsatdi: 2.1, 2.2, 2.3-bo'limlar.
Misol 2 — Maxsus matritsalar
"""Birlik, diagonal (masshtablash), simmetrik matritsalar (real numpy)."""
import numpy as np
def main() -> None:
A = np.array([[1.0, 2.0], [3.0, 4.0]])
print("=== 1. Birlik matritsa ===")
I = np.eye(2)
print(f" A @ I == A: {np.array_equal(A @ I, A)}")
print("\n=== 2. Diagonal — har o'qni masshtablash ===")
D = np.diag([2.0, 0.5])
x = np.array([3.0, 4.0])
print(f" D @ x = {D @ x} (x ni 2 ga, y ni 0.5 ga)")
print("\n=== 3. Standartlashtirish — diagonal matritsa ===")
X = np.array([[10.0, 200.0], [20.0, 400.0], [30.0, 900.0]])
Xc = X - X.mean(axis=0)
S_inv = np.diag(1 / X.std(axis=0))
print(f" Xc @ S_inv:\n{np.round(Xc @ S_inv, 3)}")
print(f" (X - mean) / std bilan bir xil: {np.allclose(Xc @ S_inv, Xc / X.std(axis=0))}")
print("\n=== 4. Simmetrik: A.T @ A ===")
B = A.T @ A
print(f" A.T @ A = {B.tolist()}, simmetrik: {np.allclose(B, B.T)}")
print(" ⭐ Diagonal — masshtab; A.T @ A — doim simmetrik")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Birlik matritsa ===
A @ I == A: True
=== 2. Diagonal — har o'qni masshtablash ===
D @ x = [6. 2.] (x ni 2 ga, y ni 0.5 ga)
=== 3. Standartlashtirish — diagonal matritsa ===
Xc @ S_inv:
[[-1.225 -1.019]
[ 0. -0.34 ]
[ 1.225 1.359]]
(X - mean) / std bilan bir xil: True
=== 4. Simmetrik: A.T @ A ===
A.T @ A = [[10.0, 14.0], [14.0, 20.0]], simmetrik: True
⭐ Diagonal — masshtab; A.T @ A — doim simmetrikNima ko'rsatdi: 2.4-bo'lim.
Misol 3 — Kovariatsiya matritsasi qo'lda
"""Kovariatsiya va korrelyatsiya matritsasi: Xc.T @ Xc / (n-1) (real numpy/pandas)."""
import numpy as np
import pandas as pd
def main() -> None:
rng = np.random.default_rng(0)
n = 500
maydon = rng.normal(70, 20, n)
narx = 1.5 * maydon + rng.normal(0, 15, n)
yosh = rng.normal(15, 8, n)
X = np.column_stack([maydon, narx, yosh])
print("=== 1. Qo'lda ===")
Xc = X - X.mean(axis=0)
C = Xc.T @ Xc / (n - 1)
print(np.round(C, 1))
print("\n=== 2. np.cov: rowvar ===")
print(f" np.cov(X).shape = {np.cov(X).shape} ← xato (qatorlar o'zgaruvchi)")
print(f" np.cov(X, rowvar=False) bilan teng: {np.allclose(C, np.cov(X, rowvar=False))}")
print("\n=== 3. Diagonal — dispersiyalar ===")
print(f" diag(C) = {np.round(np.diag(C), 1)}")
print(f" X.var(ddof=1) = {np.round(X.var(axis=0, ddof=1), 1)}")
print("\n=== 4. Standartlashtirilgan → korrelyatsiya ===")
Z = Xc / X.std(axis=0, ddof=1)
R = Z.T @ Z / (n - 1)
print(np.round(R, 3))
print(f" pandas corr bilan teng: {np.allclose(R, pd.DataFrame(X).corr().to_numpy())}")
print(" ⭐ Kovariatsiya — bitta matritsa ko'paytmasi")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Qo'lda ===
[[ 411.8 619.2 4.2]
[ 619.2 1129.4 3.4]
[ 4.2 3.4 65.4]]
=== 2. np.cov: rowvar ===
np.cov(X).shape = (500, 500) ← xato (qatorlar o'zgaruvchi)
np.cov(X, rowvar=False) bilan teng: True
=== 3. Diagonal — dispersiyalar ===
diag(C) = [ 411.8 1129.4 65.4]
X.var(ddof=1) = [ 411.8 1129.4 65.4]
=== 4. Standartlashtirilgan → korrelyatsiya ===
[[1. 0.908 0.025]
[0.908 1. 0.013]
[0.025 0.013 1. ]]
pandas corr bilan teng: True
⭐ Kovariatsiya — bitta matritsa ko'paytmasiNima ko'rsatdi: 2.5, 2.7-bo'limlar.
Misol 4 — Rasm va baholar matritsa sifatida
"""Rasm va baholar — matritsa; X @ X.T o'xshashlik matritsasi (real numpy)."""
import numpy as np
def main() -> None:
print("=== 1. 'Rasm' — 8×8 piksel matritsasi ===")
rasm = np.zeros((8, 8), dtype=int)
rasm[2:6, 2:6] = 255 # oq kvadrat
for qator in rasm[1:7]:
print(" " + "".join("#" if p > 0 else "." for p in qator))
print(f" shakl {rasm.shape}, o'rtacha yorqinlik {rasm.mean():.1f}")
print("\n=== 2. Baholar: foydalanuvchi × film (0 = baholanmagan) ===")
R = np.array([
[5, 4, 0, 1],
[4, 5, 1, 0],
[0, 1, 5, 4],
[1, 0, 4, 5],
], dtype=float)
print(f" siyraklik: {(R == 0).mean():.0%} bo'sh")
print("\n=== 3. X @ X.T — foydalanuvchilar o'xshashligi ===")
Rn = R / np.linalg.norm(R, axis=1, keepdims=True)
S = Rn @ Rn.T
print(np.round(S, 2))
print(" ⭐ 0-1 va 2-3 foydalanuvchilar — o'xshash guruhlar")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. 'Rasm' — 8×8 piksel matritsasi ===
........
..####..
..####..
..####..
..####..
........
shakl (8, 8), o'rtacha yorqinlik 63.8
=== 2. Baholar: foydalanuvchi × film (0 = baholanmagan) ===
siyraklik: 25% bo'sh
=== 3. X @ X.T — foydalanuvchilar o'xshashligi ===
[[1. 0.95 0.19 0.24]
[0.95 1. 0.24 0.19]
[0.19 0.24 1. 0.95]
[0.24 0.19 0.95 1. ]]
⭐ 0-1 va 2-3 foydalanuvchilar — o'xshash guruhlarNima ko'rsatdi: 2.3, 2.6-bo'limlar.
5. To'g'ri va noto'g'ri tushunishlar
| Noto'g'ri fikr | To'g'risi |
|---|---|
| "shape = (ustun, qator)" | (qator, ustun) |
| "np.cov(X) — belgilar kovariatsiyasi" | rowvar=False kerak |
| "axis=0 — qatorlar bo'yicha natija" | axis=0 — ustunlar natijasi |
| "(n,) — ustun vektor" | 1D; na qator, na ustun |
| "(AB).T = A.T B.T" | B.T A.T |
| "Matritsa — faqat jadval" | Rasm, baholar, tarmoq ham |
| "Kovariatsiya — X.T @ X" | Markazlashtirilgan Xc bilan |
| "Siyrak matritsani zich saqlash mayli" | Xotira tugaydi |
6. Keng tarqalgan xatolar va yechimlari
1. np.cov yo'nalishi
C = np.cov(X) # n × n # ⚠️
C = np.cov(X, rowvar=False) # p × p # ✅2. Markazlashtirmasdan
C = X.T @ X / (n - 1) # ⚠️
Xc = X - X.mean(axis=0); C = Xc.T @ Xc / (n - 1) # ✅3. 1D massivni sklearn'ga
model.fit(maydon, y) # (n,) — xato # ⚠️
model.fit(maydon.reshape(-1, 1), y) # ✅4. Kutilmagan broadcasting
farq = a.reshape(-1, 1) - b # (n, n) matritsa # ⚠️
farq = a - b # (n,) # ✅5. axis xatosi
Xc = X - X.mean(axis=1) # qatorlar o'rtachasi # ⚠️
Xc = X - X.mean(axis=0) # ✅6. Transponirlash tartibi
(A @ B).T == A.T @ B.T # noto'g'ri # ⚠️
(A @ B).T == B.T @ A.T # ✅7. Siyrak matritsa
R = baholar.toarray() # 1 mln × 100k # ⚠️
# scipy.sparse formatida qoldiring # ✅7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 2.3, 2.7-darslar (o'tilgan): shape, reshape
- 4.9-dars (o'tilgan): Kovariatsiya, korrelyatsiya
- 10.2-dars (o'tilgan): Skalyar ko'paytma
- 10.4-dars: Matritsa ko'paytmasi
- 10.9-dars: PCA (kovariatsiya matritsasining xos vektorlari)
8. Eng yaxshi amaliyotlar
X — n × p: qator kuzatuv, ustun belgi.
shape ni har qadamda tekshiring.
axis=0 — ustunlar statistikasi.
np.cov(..., rowvar=False) yoki df.cov().
Kovariatsiyadan oldin markazlashtiring.
Simmetriklikni np.allclose bilan tekshiring.
Siyrak ma'lumot — scipy.sparse.
sklearn uchun 2D (reshape(-1, 1)).
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
1. # 3 × 5 matritsa nechta qator?
2. # A.T shakli (A: 3 × 5)?
3. # X.T @ X shakli (X: 100 × 4)?
4. # X @ X.T shakli?
5. # np.eye(3) @ A?
6. # np.diag([2, 3]) @ [1, 1]?
7. # kovariatsiya matritsasi diagonali?
8. # np.cov(X) (X: 100 × 4) shakli?
9. # X.mean(axis=0) shakli?
10. # A = A.T nima deyiladi?
11. # (AB).T = ?
12. # 80×80 oq-qora rasm — nechta son?Javoblar
- 3
- 5 × 3
- 4 × 4
- 100 × 100
- A
- [2, 3]
- Dispersiyalar
- 100 × 100
- (4,)
- Simmetrik
- B.T @ A.T
- 6400
Vazifa 2: Xatolarni tuzating
1. C = np.cov(X) # X: 1000 × 5, belgilar kovariatsiyasi
2. C = X.T @ X / (len(X) - 1)
3. model.fit(df["maydon"].to_numpy(), y)
4. Xc = X - X.mean(axis=1)
5. Z = (X - X.mean()) / X.std() # har ustun alohidaJavoblar
1. C = np.cov(X, rowvar=False)
2. Xc = X - X.mean(axis=0); C = Xc.T @ Xc / (len(X) - 1)
3. model.fit(df[["maydon"]].to_numpy(), y)
4. Xc = X - X.mean(axis=0)
5. Z = (X - X.mean(axis=0)) / X.std(axis=0)Vazifa 3: Kovariatsiya
Modellang:
- 4 belgili ma'lumot
- Qo'lda kovariatsiya
- np.cov va df.cov bilan solishtirish
- Korrelyatsiya matritsasiga o'tish
Vazifa 4: O'xshashlik matritsasi
Modellang:
- 6 mijoz × 4 belgi
- Standartlashtirish
- X @ X.T (normallashtirilgan)
- Eng o'xshash juftlik
Vazifa 5: Rasm
Modellang:
- 20 × 20 rasm (shakl chizish)
- Transponirlash (aks)
- Diagonal/teskari tartib (burish)
- O'rtacha yorqinlik
Vazifa 6: Integratsiya
Modellang:
- reshape (2.7)
- Korrelyatsiya (4.9)
- Kosinus (10.2)
- Standartlashtirish (6.6)
Vazifa 7: O'ylash
Bir xil ma'lumotni matritsa sifatida ikki xil o'qish mumkin: qatorlar (kuzatuvlar) va ustunlar (belgilar). Nima uchun X.T @ X (p × p) va X @ X.T (n × n) matritsalari bir xil ma'lumotdan turli savollarga javob beradi? Katta ma'lumotda (n = 10 million, p = 100) qaysi birini hisoblash mumkin, qaysi biri imkonsiz — va bu algoritm tanlashga qanday ta'sir qiladi?
Javob
Qisqa javob: X.T @ X — belgilar orasidagi munosabatlar (kovariatsiya — "qaysi belgilar birga o'zgaradi?"); X @ X.T — kuzatuvlar orasidagi munosabatlar (o'xshashlik — "qaysi mijozlar o'xshash?"). n = 10 mln, p = 100 da X.T @ X — 100 × 100 (10 ming son, oson); X @ X.T — 10 mln × 10 mln (100 trillion son — imkonsiz).
1. Ikki matritsa
| X.T @ X | X @ X.T | |
|---|---|---|
| Shakl | p × p | n × n |
| Savol | Belgilar bog'liqligi | Kuzatuvlar o'xshashligi |
| Qo'llanish | PCA, regressiya | Klasterlash, kernel usullar |
| n = 10 mln, p = 100 | 10 ming element | 10^14 element |
2. Algoritm tanloviga ta'siri
- Regressiya, PCA — p × p bilan ishlaydi: katta n ga yaxshi masshtablanadi
- Kernel SVM, to'liq masofa matritsasi — n × n: katta n da imkonsiz
- Shuning uchun katta ma'lumotda: chiziqli modellar, mini-batch, taxminiy eng yaqin qo'shnilar
3. Qiziq bog'liqlik
- Ikkala matritsaning nol bo'lmagan xos qiymatlari bir xil (SVD, 10.8)
- p > n bo'lganda (genetika) aksincha — n × n kichikroq, uni ishlatish qulay
4. Data Scientist qanday
- Algoritm tanlashdan oldin qaysi matritsa kerakligini tushunadi
- Xotira bahosini hisoblaydi (elementlar soni × 8 bayt)
- Katta n da juftlik matritsalaridan qochadi
- Kichik o'lchamni tanlaydi (p × p yoki n × n)
5. Xulosa
- Bir ma'lumot — ikki nuqtai nazar (belgilar va kuzatuvlar)
- X.T @ X — belgilar, X @ X.T — kuzatuvlar
- Matritsa o'lchami algoritm masshtablanishini belgilaydi
- Kichik tomondagi matritsa bilan ishlash — amaliy qoida
Nimani mustahkamlaydi: 2.2, 2.3-bo'limlar.
Xulosa
Bu darsda matritsalarni o'rgandik.
Eng muhim uch fikr:
Ma'lumot matritsasi. Matritsa — m × n jadval (
shape— qatorlar, ustunlar). X — n kuzatuv × p belgi (sklearn standarti): qator — kuzatuv vektori, ustun — belgi vektori;axis=0— ustunlar statistikasi. 1D massiv (n,) ≠ ustun (n, 1).Transponirlash va maxsus matritsalar. X.T — qator/ustun almashadi; X.T @ X — belgilar orasidagi, X @ X.T — kuzatuvlar orasidagi ko'paytmalar; (AB).T = B.T A.T. Birlik (A @ I = A), diagonal (har o'qni masshtablash — standartlashtirish), simmetrik (A = A.T — kovariatsiya, korrelyatsiya), siyrak (matn, baholar).
Kovariatsiya matritsasi. C = Xc.T @ Xc / (n - 1): diagonal — dispersiyalar, qolgani — kovariatsiyalar; standartlashtirilgan X da — korrelyatsiya.
np.cov(X, rowvar=False)! Bu PCA ning kirishi 10.9-bob.
Keyingi darsda matritsa ko'paytmasini o'rganamiz: qoidasi va shakl sharti, matritsa — chiziqli o'zgartirish (aylantirish, cho'zish, proyeksiya), ko'paytmalar zanjiri va neyron tarmoq qatlami.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!