fa
Feedback
Eldor’s AI Lab

Eldor’s AI Lab

رفتن به کانال در Telegram

🚀 Eldor’s AI Lab – Sun’iy intellektni chuqur va amaliy o‘rganish! 🔹 AI va ML nazariyasi 🔹 Kod va amaliy mashg‘ulotlar 🔹 Dasturlash bo‘yicha maslahatlar 🔹 Ilmiy maqolalar va eng so‘nggi yangiliklar 💡 AIni o‘rganishni istaysizmi? Let's go!

نمایش بیشتر
کشور مشخص نشده استدسته بندی مشخص نشده است
376
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-27 روز
-230 روز
آرشیو پست ها
📌 1.2-dars: Vektor amallari — Deep Learning Mathematics 🧮 Qo‘shish, ayirish, skalyar ko‘paytma, uzunlik va norma turlari (L1, L2, L∞) @EldorML Bugungi darsda vektor amallarini o‘rganamiz — bu Deep Learning matematik poydevori. Har bir neyron, har bir parameter, har bir gradient — aslida vektordir! 💠 Vektorlarni qo‘shish va ayirish

import numpy as np

v1 = np.array([2, 3])
v2 = np.array([1, 4])

print("Qo‘shish:", v1 + v2)
print("Ayirish:", v1 - v2)
📘 Har bir komponent bo‘yicha qo‘shish/ayirish. Geometrik jihatdan — yo‘nalishli ko‘chish. 💠 Skalyar ko‘paytma (dot product)

a = np.array([2, 5, 3])
b = np.array([4, 1, 2])

print(np.dot(a, b))
📘 O‘xshashlik va burchakni bildiradi. 🧠 Deep Learningda — signal va parametrlarning weighted sum hisoblanadi. 💠 Vektor uzunligi (magnitude)

v = np.array([3, 4])
print(np.linalg.norm(v))
📘 Bu vektorning kuchi yoki masshtabi. 🧠 Modelda normalizatsiya uchun ishlatiladi. 💠 Norma turlari: L1, L2, L∞

v = np.array([3, -4, 5])
print("L1:", np.linalg.norm(v, 1))
print("L2:", np.linalg.norm(v, 2))
print("L∞:", np.linalg.norm(v, np.inf))
📘 * L1 (Manhattan): |v₁| + |v₂| + |v₃| * L2 (Euclidean): √(v₁² + v₂² + v₃²) * L∞ (Chebyshev): max(|vᵢ|) 💠 Geometrik ko‘rinish

import matplotlib.pyplot as plt
v1 = np.array([2,1])
v2 = np.array([1,3])

plt.quiver(0,0,v1[0],v1[1],angles='xy',scale_units='xy',scale=1,color='r',label='v₁')
plt.quiver(0,0,v2[0],v2[1],angles='xy',scale_units='xy',scale=1,color='b',label='v₂')
plt.legend(); plt.grid(True); plt.show()
📘 Vektorlar fazoda yo‘nalish va uzunlik orqali ifodalanadi. 🎯 Xulosa: ✅ Vektor amallari — neyron tarmoqlarning matematik asosi ✅ Normlar — parametrlarni nazorat qiladi ✅ L1, L2, L∞ — modelni barqaror va kuchli qiladi 🤝 Video dars: 🎥 YouTube havola 🖥️ Colab kod: 📂 Colab havola 📘 Kursdagi barcha darslar: Kursga havola 🚨 Videolar tayyorgarliksiz yozilgan, nutqda xatolar bo‘lishi mumkin. Uzr so‘rayman 🙏 @EldorML

📌 1.1-dars: Hamma narsa — vektor 🧠 Scalars, Vectors, Matrices, Tensors va Ma’lumotlarni Raqamli Ifodalash @EldorML Bugungi darsda MLdagi eng asosiy tushunchani o‘rganamiz: har qanday ma’lumot (rasm, tovush, matn) aslida raqamli vektor ko‘rinishida ifodalanadi! 💠 Scalar — yagona qiymat

a = 5
b = 3.14
📘 Scalar — bitta son. Masalan: 5 kg yoki 3.14 rad. 💠 Vector — yo‘nalishga ega raqamlar to‘plami

import numpy as np
v = np.array([2, 3, 5])
print(v.shape)
📘 [2, 3, 5] — 3 o‘lchovli vektor. 💠 Matrix — vektorlarning jadvali

M = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(M.shape)
📘 2D tuzilma — rasm yoki jadval kabi ma’lumotlarni ifodalaydi. 💠 Tensor — ko‘p o‘lchovli ma’lumot

T = np.random.rand(2,3,4)
print(T.shape)
📘 Tensor — ko‘p o‘lchovli massiv. Masalan, rasm (balandlik × kenglik × rang). 🖼️ Rasm → vektor

from PIL import Image
import requests, numpy as np
from io import BytesIO

url = "https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Black_and_white_cat.jpg/320px-Black_and_white_cat.jpg"
img = Image.open(BytesIO(requests.get(url).content)).resize((64,64))
arr = np.array(img)
print(arr.shape)
print(arr.flatten()[:10])
📘 Har bir piksel — raqam. Rasm → tensor → vektor. 🎵 Tovush → vektor

import librosa, matplotlib.pyplot as plt, librosa.display

y, sr = librosa.load("https://www2.cs.uic.edu/~i101/SoundFiles/BabyElephantWalk60.wav")
librosa.display.waveshow(y, sr=sr)
plt.title("Tovush to‘lqini")
plt.show()
📘 Har bir amplituda qiymati — tovushning raqamli ifodasi. 📝 Matn → vektor

from sklearn.feature_extraction.text import TfidfVectorizer
docs = ["AI ajoyib", "Men AI o‘rganayapman"]
X = TfidfVectorizer().fit_transform(docs)
print(X.toarray())
📘 Har bir so‘z — raqamli o‘lchov (TF-IDF yoki embedding). 🎯 Xulosa: ✅ Rasm — 3D tensor ✅ Tovush — 1D signal ✅ Matn — 1D vektor Hammasi raqamlarga aylantiriladi va modelga shunday kiradi! 🤝 Video dars: 🎥 YouTube havola 🖥️ Colab kod: 📂 Colab havola 📘 Kursdagi barcha darslar: Kursga havola 🚨 Videolar tayyorgarliksiz yozilgan, nutqda xatolar bo‘lishi mumkin. Uzr so‘rayman 🙏 @EldorML

📢 Do‘stlar! Nihoyat navbat yetdi. Yangi kursni boshlaymiz! 💡 Bu safar sizlar bilan Deep Learning Matematikasi: Intensiv Kursni o‘rganamiz! Bu kurs — “Maths for Deep Learning” deb nomlangan ilg‘or kursning to‘liq, o‘zbekcha va tushunarli talqini bo‘ladi 🇺🇿 📘 Kursda quyidagi asosiy yo‘nalishlarni bosqichma-bosqich o‘rganamiz: - Vektorlar, matritsalar, va ularning geometrik ma’nosi - Gradient descent, backpropagation, va optimization algoritmlari - Ehtimollik va information theory asoslari - Convolution va attention mexanizmlari - Transformer va diffusion modellarining matematik intuitiv tahlili - Training stability, normalization, va regularization g‘oyalari 🧠 Kurs faqat formulalar emas, balki intuitiv tushuncha va geometrik tasavvur orqali chuqur o‘rganish uchun mo‘ljallangan. 📅 Kurs davomiyligi: Bu kurs 4 haftalik emas. Undagi mavzular murakkabroq va kengroq. Shuning uchun, taxminan 2–3 oy davom etadi. Lekin men hammasini eng oson va intuitiv shaklda tushuntirishga harakat qilaman 💪 📖 Shu o‘rinda, uzr so‘rayman: kursdagi terminlarning ayrimlari ingliz tilidan to‘liq o‘zbekchaga tarjima qilish oson emas. Shunday bo‘lsa-da, har bir atamani sizga eng yaqin va tushunarli shaklda izohlab berishga harakat qildim 🙏 👉 Kurs rejasi: Kurs rejasiga havola @EldorML

🎉 Hurmatli do‘stlar! Hammani tabriklayman! Python Intensiv Kursimiz yakunlandi! 🚀 Sizlarning faolligingiz va doimiy qo‘llab-quvvatlashingiz tufayli kursni muvaffaqiyatli tugatdik. Har biringiz bu safarning muhim qismisiz, rahmat sizlarga! 🙌 📚 Agar do‘stlaringiz ham Python o‘rganishni istasa, mana barcha materiallar bir joyda jamlangan: 📝 Maqolalar va videolar: Python Intensiv Kursi ✅ Ushbu materiallar yordamida siz do‘stlaringiz bilan Python dasturlash tilini o‘rganishingiz mumkin bo‘ladi. ✨ Yangi intensiv kursni tez orada boshlaymiz: Math for Deep Learning 💬 Takliflaringizni izohlarda yozib qoldiring. Bu men uchun juda muhim! @EldorML

📌 4.5-dars: Amaliy mashq – Dataset tozalash va grafiklar chizish 🐍 @EldorML 🎉 Tabriklaymiz! Siz Python intensiv kursining to‘rtinchi haftasini yakunlayapsiz 👏 Endi esa ma’lumotlar bilan tahlilchi kabi ishlashni o‘rganamiz! 📊 Bu safar siz seaborn kutubxonasidagi tips datasetidan foydalanib, ma’lumotlarni tozalash, transformatsiya qilish va vizualizatsiya amaliyotini bajarasiz. 🎯 Vazifa: Pandas va Matplotlib/Seaborn yordamida ma’lumotlarni tayyorlash, tozalash va 5 xil grafik chizish. 🧩 Topshiriqlar: - Datasetni yuklang va tahlil qiling (`info()`, `describe()`) - Categorical ustunlarni aniqlang va to‘g‘ri turlarga o‘tkazing - tip_percent ustunini yarating (foizli choychaqa) - 0 dan 50% gacha bo‘lmagan qiymatlarni tozalang (outlierlarni olib tashlang) - 5 ta grafik chizing: 📈 Histogram (`total_bill`) 📦 Boxplot (`tip_percent` – `day`) 🔵 Scatter (`total_bill` vs `tip`) 🟩 Barplot (`day` – o‘rtacha tip`) 🔥 Heatmap (korrelyatsiya jadvali) ✅ Natijada siz: - Pandas bilan ma’lumotlarni tozalashni - Outlier va NaN qiymatlarni boshqarishni - Seaborn yordamida chiroyli grafiklar chizishni - CSV bilan ishlashni o‘rganasiz. 🚀 ⚠️ Bonus: Lunch va Dinner o‘rtasida choychaqa foizini taqqoslang — kim ko‘proq beradi? 🍽️ 🖥️ Batafsil topshiriq: 4.5 Amaliy mashq – Dataset tozalash va grafiklar chizish 📚 Python kursi rejasi: Kursga havola @EldorML

📌 4.3–4.4-darslar: Matplotlib, Seaborn va Datetime — Ma’lumotlarni Vizualizatsiya Qilish va Sana/Vaqt bilan Ishlash 🐍 @EldorML Bugungi darsda vizualizatsiya va sana/vaqt bilan ishlashni o‘rganamiz — bu Data Science yo‘lida juda muhim bosqich! 💠 Matplotlib asoslari Pythondagi eng mashhur grafik kutubxona! 👉 Kutubxonani import qilish:

import matplotlib.pyplot as plt
import numpy as np
👉 Oddiy grafik:

y = np.array([5, 8, 12, 7, 10])
x = np.arange(len(y))
plt.plot(x, y)
plt.title('Chiziqli Grafik')
plt.show()
👉 Grafik turlari: * plt.scatter() — nuqtali grafik * plt.bar() — ustunli grafik * plt.hist() — gistogramma * plt.pie() — doira diagramma 🍩 👉 Grafikni bezash:

plt.plot(x, y, color='purple', marker='o', linestyle='--', linewidth=2)
plt.grid(True)
👉 Bir nechta grafikni bitta oynada:

fig, axs = plt.subplots(2, 2)
axs[0, 0].plot(x, y)
axs[1, 1].hist(y)
plt.tight_layout()
plt.show()
💠 Seaborn — Chiroyli va Statistik Grafiklar 👉 Kutubxonani import qilish:

import seaborn as sns
import pandas as pd
👉 Namunaviy DataFrame:

data = {
    'Ism': ['Ali', 'Vali', 'Aziza', 'Dilshod', 'Malika', 'Javohir'],
    'Yosh': [23, 25, 22, 27, 24, 26],
    'Daromad': [3.2, 4.5, 2.8, 5.1, 3.9, 4.2],
    'Jins': ['Erkak', 'Erkak', 'Ayol', 'Erkak', 'Ayol', 'Erkak']
}
df = pd.DataFrame(data)
👉 Asosiy grafiklar:

sns.scatterplot(data=df, x='Yosh', y='Daromad', hue='Jins', style='Jins')
sns.boxplot(data=df, x='Jins', y='Daromad')
👉 Seaborn ichki dataset:

tips = sns.load_dataset('tips')
sns.heatmap(tips.corr(numeric_only=True), annot=True, cmap='coolwarm')
👉 Uslublash:

sns.set_style('darkgrid')
plt.title('Choy miqdori va umumiy hisob o‘rtasidagi bog‘liqlik')
plt.show()
📅 Datetime — Sana/Vaqt bilan Ishlash 👉 Import va hozirgi vaqt:

import datetime
hozir = datetime.datetime.now()
print('Hozirgi vaqt:', hozir)
👉 Sana yaratish:

sana = datetime.datetime(2025, 10, 10, 14, 30)
print(sana.strftime('%d-%m-%Y %H:%M'))
👉 Vaqt farqi:

tugilgan = datetime.datetime(1995, 6, 1)
farq = hozir - tugilgan
print('Yosh (kunlarda):', farq.days)
👉 Pandas bilan datetime:

import pandas as pd
sana_seriya = pd.to_datetime(['2025-01-01','2025-02-10','2025-03-20'])
ma_lumot = pd.Series([10,15,7], index=sana_seriya)
ma_lumot.plot(title='Sana bo‘yicha ma’lumotlar')
plt.show()
🎯 Xulosa ✅ Matplotlib — asosiy vizualizatsiya vositasi ✅ Seaborn — chiroyli statistik grafiklar ✅ Datetime — vaqt bilan ishlash uchun asosiy modul 🤝 Video dars: 🎥 YouTube havola 🖥️ Colab kod: 📂 Colab havola 📘 Kursdagi barcha darslar: Kursga havola 🚨 Videolar tayyorgarliksiz yozilgan, nutqda xatolar bo‘lishi mumkin. Uzr so‘rayman 🙏 @EldorML

📌 4.2-dars: Pandas — Jadval ko‘rinishidagi ma’lumotlar bilan ishlash 🐍 @EldorML Pythonda Pandas kutubxonasi yordamida jadval (DataFrame) ko‘rinishidagi ma’lumotlar bilan ishlashni o‘rganamiz. Pandas — bu Data Science, tahlil, va ma’lumotlar tozalash jarayonlarining yuragi ❤️. 💠 Pandas asoslari 👉 Kutubxonani import qilish:

import pandas as pd
👉 Oddiy DataFrame yaratish:

df = pd.DataFrame({
    'Ism': ['Ali', 'Vali', 'Gulnoza'],
    'Yosh': [23, 25, 21],
    'Shahar': ['Toshkent', 'Samarqand', 'Buxoro']
})
print(df)
👉 Fayldan o‘qish:

df = pd.read_csv('students.csv')
💠 DataFrame bilan amaliy ishlar ✅ Dastlabki qatorlar: df.head() ✅ Ma’lumot turi: df.info() ✅ Statistika: df.describe() ✅ Ustun tanlash: df['Ism'], df[['Ism','Yosh']] ✅ Qator tanlash: df.iloc[0], df.loc[1,'Yosh'] 💠 Filtrlash, tartiblash va guruhlash (amaliy misollar) 📍 23 yoshdan katta talabalar:

talabalar = df[df['Yosh'] > 23]
print(talabalar)
📍 Yosh bo‘yicha tartiblash (kichikdan kattaga):

df.sort_values(by='Yosh', ascending=True, inplace=True)
print(df[['Ism','Yosh']])
📍 Shahar bo‘yicha o‘rtacha yoshni topish:

print(df.groupby('Shahar')['Yosh'].mean())
📍 Eng yuqori ball olgan talaba:

print(df.loc[df['Ball'].idxmax()])
📍 Faqat Toshkentdagi talabalar:

print(df[df['Shahar'] == 'Toshkent'])
💠 Yo‘q qiymatlar (NaN) bilan ishlash va ma’lumotlarni eksport qilish 📍 Yo‘q qiymatlar sonini tekshirish:

print(df.isnull().sum())
📍 Bo‘sh qiymatlarni to‘ldirish:

df['Ball'].fillna(df['Ball'].mean(), inplace=True)
📍 Bo‘sh qatorlarni o‘chirish:

df.dropna(inplace=True)
📍 Natijani yangi faylga yozish:

df.to_csv('yangi_talabalar.csv', index=False)
✅ Endi yangi_talabalar.csv faylida tozalangan va tayyor ma’lumotlar saqlanadi. 🎯 Xulosa * Pandas — Excelni Python ichida ishlatish kabi qulay 🔥 * Jadvalni filtrlash, tahlil qilish va eksport qilish uchun mukammal vosita * Data Scientist uchun eng zarur kutubxonalardan biri 💪 🚨 Videolar tayyorgarliksiz yozilgan, nutqda xatolar bo‘lishi mumkin. Uzr so‘rayman. 🤝 Video dars: 🎥 YouTube havola 🖥️ Colab kod: 📂 Colab havola 📘 Kursdagi barcha darslar: Kursga havola @EldorML

📌 4.1-dars: NumPy — Ma’lumotlar bilan ishlashning asosi 🐍 @EldorML Pythonda NumPy kutubxonasi yordamida massivlar, vektorlar va matritsalar bilan ishlashni o‘rganamiz. NumPy — bu ma’lumotlar tahlili, sun’iy intellekt, va ilmiy hisoblashlar uchun eng muhim vositalardan biridir. ⚡️ 💠 NumPy asoslari 👉 NumPy kutubxonasini import qilish:

import numpy as np
👉 Oddiy massiv yaratish:

arr = np.array([1, 2, 3, 4])
print(arr)
👉 Nol va birlik massivlar:

np.zeros((2,3))
np.ones((3,3))
np.eye(4)
👉 Ketma-ketliklar va random sonlar:

np.arange(0,10,2)
np.linspace(0,1,5)
np.random.randint(0,10,(3,3))
shape, ndim, size, dtype yordamida massiv haqida ma’lumot olish mumkin. ✅ reshape, flatten, T bilan o‘lchamni o‘zgartirish mumkin. 💠 Matematik va statistik amallar

arr = np.array([[1,2,3],[4,5,6]])
print(np.sum(arr))   # 21
print(np.mean(arr))  # 3.5
print(np.std(arr))   # Standart og‘ish
print(np.max(arr))   # Eng katta qiymat
np.where, np.clip, np.unique, np.sort — shartli va maxsus amallar uchun juda qulay. ✅ np.linalg.inv, np.dot, np.linalg.det — matritsa amallari uchun ishlatiladi. 💠 Amaliy mashq 0 dan 10 gacha random sonlar yarating. 5 dan kichiklarini 0, 5 dan kattalarini 1 qilib o‘zgartiring:

arr = np.random.randint(0,11,20)
print("Asl:", arr)
arr = np.where(arr < 5, 0, 1)
print("O‘zgartirilgan:", arr)
🎯 Xulosa - NumPy → tez va samarali hisoblash vositasi - Pandas, Scikit-learn, TensorFlow — barchasi NumPy asosida ishlaydi - Har qanday data scientist uchun zarur bilim 🔥 🚨 Videolar tayyorgarliksiz qilinmoqda, nutqda tutilishlar bo‘lishi mumkin. Uzr so‘rayman. 🤝 Video Dars: 🎥 YouTube havola 🖥️ Colab kod: 📂 Colab havola 🖥️ Python kurs rejasi: Kursga havola @EldorML

📢 Aziz do‘stlar! Afsuski, gripp bo‘lib qoldim 🤒. Shu sababli bu haftadagi kursimiz biroz kechikadi. Noqulaylik uchun uzr so‘rayman va tushunganingiz uchun rahmat 🙏.

📌 3.7-dars: Yakuniy loyiha – Mini API Client 🐍 @EldorML 🎉 Tabriklaymiz! Siz Python intensiv kursining uchinchi haftasini muvaffaqiyatli yakunlamoqdasiz. 👏 Endi o‘rgangan bilimlaringizni amaliy loyiha orqali mustahkamlash vaqti keldi. 📌 Ushbu loyiha ixtiyoriy: bajarish yoki bajarmaslik o‘zingizga bog‘liq. Lekin sinab ko‘rsangiz, uchinchi hafta mavzularini puxta o‘zlashtirasiz. 🎯 Vazifa: OOP, decorator, generator, virtual environment, test, requests va JSON bilimlaringizni qo‘llab, Mini API Client yarating. 🧩 Topshiriqlar: - ApiClient klassi tuzib, APIdan ma’lumot oling - Meros olish va polymorphism asosida turli clientlar (WeatherClient, CryptoClient) yarating - Decorator orqali API chaqiruvi vaqtini o‘lchang - Generator yordamida JSON ro‘yxatini elementma-element chiqaring - requests yordamida APIdan ma’lumot olib, data.json faylga yozing va qayta o‘qing - unittest yoki pytest yordamida kamida 3 ta test yozing - Virtual environment va requirements.txt ni ishlating ✅ Bu loyiha orqali siz: - OOP (class, object, inheritance, polymorphism) - Decorators & Generators - Virtual environment & paketlar - Test yozish (unittest, pytest) - Web requests & JSON bilan ishlash bo‘yicha bilimlaringizni bir loyihada qo‘llaysiz. 🚀 ⚠️ Batafsil: Topshiriq uchun havola 🖥️ Python kurs rejasi: Kursga havola @EldorML

📌 3.5–3.6-dars: Web so‘rovlar va JSON fayllar 🐍 @EldorML Pythonda requests kutubxonasi orqali internetdan ma’lumot olib kelish va API chaqirishni, json moduli orqali esa ma’lumotlarni faylga yozish va o‘qishni o‘rganamiz. 🌐📂 💠 Web so‘rovlar (requests) 👉 Internet va APIdan ma’lumot olish uchun ishlatiladi.

import requests

# GET so‘rovi
res = requests.get("https://jsonplaceholder.typicode.com/posts/1")
print(res.json())

# POST so‘rovi
url = "https://jsonplaceholder.typicode.com/posts"
data = {"title": "Salom", "body": "Bu test", "userId": 1}
res = requests.post(url, json=data)
print(res.json())
✅ status_code bilan javob holatini tekshirish muhim. ✅ timeout va xatoliklarni (404, connection error) boshqarishni unutmang. 💠 JSON bilan ishlash 👉 Ma’lumotlarni faylga yozish va fayldan o‘qish uchun ishlatiladi.

import json

# JSON yozish
ma_data = {"ism": "Eldor", "yosh": 25}
with open("data.json", "w", encoding="utf-8") as f:
    json.dump(ma_data, f, ensure_ascii=False, indent=4)

# JSON o‘qish
with open("data.json", "r", encoding="utf-8") as f:
    data = json.load(f)
print(data)
✅ encoding="utf-8" yozish o‘zbekcha harflar uchun muhim. ✅ Xato formatdagi JSON fayllar uchun try/except ishlatish kerak. 🎯 Xulosa: - requests → internet va API bilan ishlash - json → ma’lumotlarni faylga yozish/o‘qish - Edge cases → timeout, 404, JSONDecodeError, Unicode muammolari 🚨 Videolar tayyorgarliksiz qilinmoqda, nutqda tutilishlar bo‘lishi mumkin. Uzr so‘rayman. 🤝 Video Dars: YouTube havola 🖥️ Colab code: Colab havola 🖥️ Python kurs rejasi: Kursga havola @EldorML

📌 3.3–3.4-dars: Virtual environment va Test yozish 🐍 @EldorML Pythonda Virtual environment loyihalar orasida kutubxonalarni alohida boshqarish imkonini beradi. Test yozish (unittest, pytest) esa kodimiz to‘g‘ri ishlayotganini tekshirishga yordam beradi. 💠 Virtual environment (venv) 👉 Har bir loyiha uchun alohida muhit yaratish mumkin. Syntax:

# Virtual muhit yaratish
python -m venv myenv  

# Linux/Mac
source myenv/bin/activate  

# Windows
myenv\Scripts\activate  

# Paket o‘rnatish
pip install numpy  

# requirements.txt yaratish
pip freeze > requirements.txt  
✅ Loyihangiz boshqa loyihalardan mustaqil ishlaydi. 💠 unittest (standart test kutubxona) 👉 Funksiyalarni tekshirish uchun ishlatiladi.

import unittest  

def add(x, y):  
    return x + y  

class TestMath(unittest.TestCase):  
    def test_add(self):  
        self.assertEqual(add(2, 3), 5)  
        self.assertNotEqual(add(2, 2), 5)  

if __name__ == '__main__':  
    unittest.main()  
💠 pytest (qulayroq usul) 👉 Oddiy assert bilan test yoziladi.

def add(x, y):  
    return x + y  

def test_add():  
    assert add(2, 3) == 5  
    assert add(2, 2) != 5  
Terminalda ishga tushirish:

pytest test_math.py
🎯 Xulosa: - venv → loyihangizni izolyatsiya qiladi - pip → paketlarni boshqaradi - unittest/pytest → kodning to‘g‘riligini tekshiradi 🚨 Videolar tayyorgarliksiz qilinmoqda, nutqda tutilishlar bo‘lishi mumkin. Uzr so‘rayman. 🤝 Video Dars: YouTube havola 🖥️ Colab code: Colab havola 🖥️ Python kurs rejasi: Kursga havola @EldorML

📌 3.2-dars: Decorators va Generators 🐍 @EldorML Pythonda Decorators (dekoratorlar) va Generators (generatorlar) — kodni ixcham va samarali yozishga yordam beradigan ikki muhim tushuncha. 💠 Decorators (Dekoratorlar) 👉 Funksiyaga qo‘shimcha imkoniyat qo‘shish uchun ishlatiladi. Syntax:

@dekorator_nomi
def funksiya_nomi():
    pass

def salom_dekorator(func):
    def wrapper():
        print("Assalomu alaykum!")
        func()
        print("Xayr!")
    return wrapper

@salom_dekorator
def ism_ber():
    print("Mening ismim Eldor")

ism_ber()
✅ Funksiyani oldidan va keyin kod bajarish mumkin. 💠 Parametrli Decorator 👉 Dekorator funksiyani necha marta ishlatishni boshqarishi mumkin.

def takrorla(n):
    def dekorator(func):
        def wrapper(*args, **kwargs):
            for _ in range(n):
                func(*args, **kwargs)
        return wrapper
    return dekorator

@takrorla(3)
def salom(ism):
    print(f"Salom, {ism}!")

salom("Madina")
💠 Generators (Generatorlar) 👉 Xotirani tejab, qiymatlarni ketma-ket qaytaradi. yield kalit so‘zi ishlatiladi. Syntax:

def generator_funksiyasi():
    yield qiymat1
    yield qiymat2

def sanash():
    for i in range(1, 4):
        yield i

for son in sanash():
    print(son)
✅ Natija: 1 2 3 💠 next() bilan Generator 👉 Har chaqirilganda keyingi qiymatni qaytaradi.

def generator():
    yield "bir"
    yield "ikki"
    yield "uch"

g = generator()
print(next(g))
print(next(g))
print(next(g))
💠 Generator Expression 👉 List comprehension kabi, ammo generator hosil qiladi.

kvadratlar = (x**2 for x in range(5))
print(list(kvadratlar))   # [0, 1, 4, 9, 16]
🎯 Xulosa: - Dekoratorlar → funksiyalarga qo‘shimcha imkoniyat qo‘shadi - Generatorlar → xotirani tejaydi va qiymatlarni qadam-baqadam qaytaradi 🚨 Videolar tayyorgarliksiz qilinmoqda, shu sabab nutqda tutilishlar bo‘lishi mumkin. Buning uchun uzr so‘rayman. 🤝 Video Dars: YouTube havola 🖥️ Colab code: Colab havola 🖥️ Python kurs rejasi: Kursga havola @EldorML

📌 3.1-dars: OOP (Class, Object, Inheritance, Polymorphism) 🐍 @EldorML Pythonda Obyektga Yo‘naltirilgan Dasturlash (OOP) — katta loyihalarda kodni tartibli, qayta foydalaniladigan va oson boshqariladigan qilish uchun asosiy uslub hisoblanadi. 💠 Class & Object 👉 Klass — reja (retsept), obyekt — undan yaratilgan haqiqiy narsa.

class Car:                       # Klass yaratish
    def __init__(self, brand, model):   # Konstruktor
        self.brand = brand
        self.model = model

    def drive(self):              # Oddiy (instance) metod
        print(f"{self.brand} {self.model} haydalyapti 🚗")

car1 = Car("Toyota", "Corolla")   # Obyekt yaratish
car1.drive()
💠 Inheritance (Meros olish) 👉 Bola klass ota klassdan xususiyat va metodlarni oladi.

class Animal:
    def speak(self):
        print("Hayvon tovush chiqaryapti")

class Dog(Animal):                 # Meros olish
    def speak(self):               # Metodni qayta yozish
        print("Vov-vov!")

dog = Dog()
dog.speak()
💠 Polymorphism (Ko‘p shakllilik) 👉 Bir xil metod turli obyektlarda turlicha ishlaydi.

class Cat:
    def sound(self):
        return "Miyov"

class Dog:
    def sound(self):
        return "Vov-vov"

for animal in [Cat(), Dog()]:
    print(animal.sound())
💠 Instance, Classmethod & Staticmethod 👉 self → obyekt darajasida, cls → klass darajasida, staticmethod → yordamchi funksiya.

class Car:
    total_cars = 0

    def __init__(self, brand):
        self.brand = brand
        Car.total_cars += 1

    def info(self):                   # Instance method (self)
        return f"Brend: {self.brand}"

    @classmethod
    def get_total_cars(cls):          # Class method (cls)
        return f"Jami mashinalar: {cls.total_cars}"

    @staticmethod
    def car_types():                  # Static method
        return ["Sedan", "SUV", "Coupe"]

car1 = Car("Toyota")
print(car1.info())
print(Car.get_total_cars())
print(Car.car_types())
💠 Getter & Setter 👉 Xususiyatlarni xavfsiz olish va o‘zgartirish uchun.

class Car:
    def __init__(self, year):
        self._year = year

    @property
    def year(self):             # Getter
        return self._year

    @year.setter
    def year(self, new_year):   # Setter
        if new_year < 1886:
            print("❌ Mashina yili noto‘g‘ri!")
        else:
            self._year = new_year

car = Car(2020)
print(car.year)
car.year = 2025
💠 Encapsulation (Inkapsulyatsiya) 👉 Public, Protected, Private orqali ma’lumotni himoya qilish.

class Car:
    def __init__(self):
        self.brand = "Toyota"        # Public
        self._engine = "V6"          # Protected
        self.__secret_code = "123"   # Private

    def show_secret(self):
        print(self.__secret_code)

car = Car()
print(car.brand)       # Public
print(car._engine)     # Protected (tavsiya qilinmaydi)
car.show_secret()      # Private ga klass ichidan kirish
🎯 Xulosa: - Klass va obyekt — asosiy qurilish g‘ishtlari - Meros olish — kodni qayta ishlatish - Polimorfizm — metodlarning turlicha ishlashi - Instance, Classmethod, Staticmethod — farqlarini tushunish - Getter/Setter — xususiyatlarni boshqarish - Inkapsulyatsiya — ma’lumotni himoya qilish 🚨 Videolar tayyorgarliksiz qilinmoqda, shu sabab nutqda tutilishlar bo‘lishi mumkin. Buning uchun uzr so‘rayman. 🤝 Video Dars: YouTube havola 🖥️ Colab code: Colab havola 🖥️ Python kurs rejasi: Kursga havola @EldorML

📌 2.7-dars: Yakuniy loyiha – Oddiy Calculator App va CSV fayl o‘qish 🐍 @EldorML 🎉 Tabriklaymiz! Siz Python intensiv kursining ikkinchi haftasini muvaffaqiyatli yakunlamoqdasiz. 👏 Endi o‘rgangan bilimlaringizni amaliy loyiha orqali mustahkamlash vaqti keldi. 📌 Ushbu loyiha ixtiyoriy: bajarish yoki bajarmaslik o‘zingizga bog‘liq. Lekin sinab ko‘rsangiz, ikkinchi hafta mavzularini puxta o‘zlashtirasiz. 🎯 Vazifa: Oddiy Calculator App tuzing va CSV fayldan ma’lumot o‘qishni mashq qiling. Talablar: - Funksiya yozib, ikki son va amal turini hisoblang (+, −, \*, /) - Xatoliklarni try-except bilan boshqaring (0 ga bo‘lish holati va boshqalar) - Foydalanuvchi input orqali ma’lumot kiritsin - csv modulidan foydalanib, fayldagi ma’lumotlarni ekranga chiqaring - Qo‘shimcha: list comprehension orqali CSV ma’lumotlarini qayta ishlash ✅ Bu loyiha orqali siz: - Funksiya va parametrlar - Exception handling - List comprehension - Fayllar bilan ishlash (CSV) bo‘yicha o‘rganganlaringizni bir loyihada qo‘llaysiz. ⚠️ Batafsil: Topshiriq uchun havola 🖥️ Python kurs rejasi: Kursga havola @EldorML

📌 2.5–2.6-dars: Exception Handling va List Comprehension 🐍 @EldorML Pythonda kodni yanada ishonchli va ixcham qilish uchun xatoliklarni boshqarish va list comprehension ishlatiladi. 💠 Exception Handling (xatoliklarni ushlash) 👉 Dastur xato bo'lsa ham to'xtab qolmasligi uchun ishlatiladi. Sintaksis:

try:
    # xato bo'lishi mumkin bo'lgan kod
except XatolikNomi:
    # xato bo'lganda bajariladigan kod
else:
    # xato bo'lmasa ishlaydi
finally:
    # har doim bajariladi
Misol:

try:
    son = int("abc")
except ValueError:
    print("Xatolik: son kiritilmadi!")
finally:
    print("Dastur tugadi")
📌 Ko'p ishlatiladigan xatoliklar: * ZeroDivisionError → nolga bo'lish * ValueError → noto'g'ri qiymat * FileNotFoundError → fayl topilmadi 💠 List Comprehension 👉 Ro'yxatlar yaratishning ixcham va tezkor usuli. Sintaksis:

[ifoda for element in kolleksiya if shart]
Misollar:

# Oddiy
kvadratlar = [x*x for x in range(1, 6)]

# Shart bilan
juftlar = [x for x in range(10) if x % 2 == 0]

# Ichma-ich
juftliklar = [(x, y) for x in range(2) for y in range(3)]
🎯 Xulosa: * try-except → xatoliklarni ushlab dastur to'xtashini oldini oladi * else → faqat xato bo'lmasa ishlaydi * finally → doim bajariladi (masalan, fayl yopish) * list comprehension → kodni qisqa va o'qilishi oson qiladi 🚨 Videolar tayyorgarliksiz qilinmoqda, shu sabab nutqda tutilishlar bo‘lishi mumkin. Buning uchun uzr so‘rayman. 🤝 Video Dars: YouTube havola 🖥️ Colab code: Colab havola 🖥️ Python kurs rejasi: Kursga havola @EldorML

📌 2.3–2.4-dars: Modullar va Fayllar bilan ishlash 🐍 @EldorML Pythonda tayyor kutubxonalar va fayllar bilan ishlash — loyihalar bilan ishlashda juda muhim. 💠 Modullarni ulash Oddiy qilib aytganda, modul — bu kodlarni alohida faylga joylashtirish va kerakli joyda chaqirib ishlatish imkoniyati. 👉 import kalit so‘zi orqali kutubxonalarni chaqiramiz.

import math
import random
💠 math moduli 👉 Matematik hisob-kitoblar uchun.

print(math.sqrt(16))   # 4.0
print(math.pow(2, 3))  # 8.0
print(math.pi)         # 3.1415...
💠 random moduli 👉 Tasodifiy son va tanlovlar uchun.

print(random.random())      # 0..1 oralig‘ida son
print(random.randint(1,10)) # 1 dan 10 gacha butun son
print(random.choice(["olma", "banan", "gilos"])) # tasodifiy tanlov
💠 Fayllar bilan ishlash (txt) ✅ with open → xavfsiz va avtomatik yopiladi:

with open("matn.txt", "w") as f:
    f.write("Salom, Python!")

with open("matn.txt", "r") as f:
    print(f.read())
✅ open + close → faylni qo‘l bilan yopish kerak:

f = open("matn.txt", "w")
f.write("Salom, Python!")
f.close()

f = open("matn.txt", "r")
print(f.read())
f.close()
💠 CSV fayllar bilan ishlash 👉 Jadval ko‘rinishidagi ma’lumotlar uchun.

import csv

with open("talabalar.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(["Ism", "Yosh"])
    writer.writerow(["Ali", 20])

with open("talabalar.csv", "r") as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
🎯 Xulosa: * math → matematik funksiyalar * random → tasodifiy son va tanlovlar * txt → oddiy matn fayllari bilan ishlash * csv → jadval ko‘rinishidagi fayllar bilan ishlash 🚨 Videolar tayyorgarliksiz qilinmoqda, shu sabab nutqda tutilishlar bo‘lishi mumkin. Buning uchun uzr so‘rayman. 🤝 Video Dars: YouTube havola 🖥️ Colab code: Colab havola 🖥️ Python kurs rejasi: Kursga havola @EldorML

📌 2.2-dars: Lambda, *args, **kwargs va kengaytirilgan funksiyalar 🐍 @EldorML Pythonda funksiyalar yanada kuchliroq bo'lishi uchun bir nechta qo'shimcha imkoniyatlar mavjud. 💠 Lambda funksiyalar 👉 Qisqa, anonim (nom berilmagan) funksiyalar.

kvadrat = lambda x: x * x
print(kvadrat(5)) # 25
💠 *args 👉 Funksiyaga istalgancha argument berish mumkin, ular tuple sifatida saqlanadi.

def yigindi(*sonlar):
    return sum(sonlar)

print(yigindi(1, 2, 3, 4)) # 10
💠 **kwargs 👉 Kalit-qiymat juftliklari orqali cheksiz parametr qabul qiladi (dict ko'rinishida).

def info(**talaba):
    print(talaba)

info(ism="Ali", yosh=20, kurs=2)
# {'ism': 'Ali', 'yosh': 20, 'kurs': 2}
💠 Ichki (nested) funksiyalar 👉 Funksiya ichida funksiya yaratish mumkin.

def tashqi():
    def ichki():
        print("Ichki funksiya")
    ichki()
💠 Funksiyalarni uzatish va qaytarish 👉 Funksiya boshqa funksiyaga argument bo'lishi yoki uni natija sifatida qaytarishi mumkin.

def bajarish(funksiya, x):
    return funksiya(x)

def kvadrat(n):
    return n * n

print(bajarish(kvadrat, 5)) # 25
🎯 Xulosa: - Lambda → qisqa va sodda funksiyalar uchun - *args → cheksiz oddiy argumentlar - **kwargs → cheksiz kalit-qiymat argumentlari - Nested functions → kodni modular qilish uchun - Funksiyalarni uzatish/qaytarish → funksiyalarni obyekt sifatida ishlatish imkoniyati 🚨 Videolar tayyorgarliksiz qilinmoqda, shu sabab nutqda tutilishlar bo'lishi mumkin. Buning uchun uzr so'rayman. 🤝 Video Dars: YouTube havola 🖥️ Colab code: Colab havola 🖥️ Python kurs rejasi: Kursga havola @EldorML

📌 2.1-dars: Funksiyalar va Parametrlar 🐍 @EldorML Pythonda kodni tartibli va qayta ishlatiladigan qilish uchun funksiyalar ishlatiladi. 💠 Funksiya yaratish Funksiya yaratish uchun def kalit so‘zi ishlatiladi, undan keyin funksiya nomi va qavslar yoziladi. Qavs ichida parametrlar bo‘lishi mumkin. So‘ngra ikki nuqta “:” qo‘yiladi va keyingi qatorlarda kod yoziladi.

def salom():
    print("Salom, Python!")
💠 Funksiyani chaqirish Funksiyani chaqirish uchun uning nomi va qavslar yoziladi:

salom()
💠 Parametrlar va argumentlar

def salom_ber(ism):
    print("Salom,", ism)

salom_ber("Ali")   # Salom, Ali
salom_ber("Madina") # Salom, Madina
💠 Bir nechta parametrlar

def hisobla(a, b):
    print("Yig‘indi:", a + b)

hisobla(3, 5)   # Yig‘indi: 8
💠 Default parametr (standart qiymat)

def salom_ber(ism="Dunyo"):
    print("Salom,", ism)

salom_ber()        # Salom, Dunyo
salom_ber("Eldor") # Salom, Eldor
💠 Qiymat qaytarish (return)

def kvadrat(x):
    return x * x

print(kvadrat(5))  # 25
🎯 Xulosa: * Funksiyalar → kodni qayta ishlatish va tartiblash uchun * Parametrlar → tashqaridan ma’lumot qabul qilish uchun * Default parametr → argument berilmasa ham ishlaydi * return → natijani tashqariga qaytaradi 🚨 Videolar tayyorgarliksiz qilinmoqda, shu sabab nutqda tutilishlar bo‘lishi mumkin. Buning uchun uzr so‘rayman. 🤝 Video Dars: YouTube havola 🖥️ Colab code: Colab havola 🖥️ Python kurs rejasi: Kursga havola @EldorML

📌 1.7-dars: Yakuniy loyiha – Oddiy Talaba Ma’lumot Tizimi 🐍 @EldorML 🎉 Tabriklaymiz! Siz Python intensiv kursining birinchi haftasini muvaffaqiyatli yakunladingiz. 👏 Endi bilimlaringizni sinab ko‘rish va mustahkamlash vaqti keldi. 📌 Ushbu loyiha ixtiyoriy — bajarish yoki bajarmaslik o‘zingizga bog‘liq. Lekin sinab ko‘rsangiz, birinchi hafta mavzularini takrorlab olasiz. 🎯 Vazifa: Oddiy Talaba Ma’lumot Tizimi yarating. Talablar: - O‘zgaruvchilar orqali ism, yosh va boshqa ma’lumotlarni saqlang - List ichida baholarni saqlang ([85, 90, 78]) - Dictionary ichida umumiy ma’lumot bo‘lsin: ism, yosh, kurs, fakultet, baholar, stipendiya - for sikli yordamida baholarni chiqaring - if-else bilan o‘rtacha bahoni baholang: - >= 86 → A’lochi talaba - 71–85 → Yaxshi talaba - Aks holda → O‘rtacha talaba - Set yordamida noyob baholarni ajrating - while sikli bilan yangi baholar qo‘shing, stop yozilganda to‘xtasin ✅ Bu loyiha orqali siz: - O‘zgaruvchilar - List, Dictionary, Set - for/while sikllari - if-else shartlari bo‘yicha o‘rganganlaringizni bitta amaliy loyihada qo‘llab ko‘rasiz. ⚠️ Batafsil: Topshiriq uchun havola 🖥️ Python kurs rejasi: Kursga havola @EldorML