2-bo‘lim
Ish muhitini sozlash
Python, virtual muhit, kutubxonalar va Jupyter Notebook ni o'rnatish hamda birinchi kodni ishga tushirish.
Ushbu bo‘lim mundarijasi
Mashinali o'qitish uchun bir nechta vosita kerak. Ularni bir marta to'g'ri sozlab olsak, keyingi bo'limlar silliq ketadi.
Python o'rnatish #
python --version
Python 3.12.4
Agar Python o'rnatilmagan bo'lsa, python.org dan yuklab oling.
O'rnatuvchining birinchi ekranida "Add Python to PATH" katagini
albatta belgilang. Aks holda terminalda python buyrug'i ishlamaydi.
Unutgan bo'lsangiz - o'rnatuvchini qayta ishga tushirib, "Modify" ni tanlang.
anaconda.com - Python va barcha ML kutubxonalari bir paketda keladi.
| Toza Python | Anaconda | |
|---|---|---|
| Hajmi | ~30 MB | ~500 MB |
| Kutubxonalar | Qo'lda o'rnatiladi | Tayyor |
| Boshlovchi uchun | O'rtacha | Osonroq |
| Nazorat | To'liq | Kamroq |
Ushbu darslikda toza Python ishlatiladi - u qanday ishlashini yaxshiroq tushunasiz.
Virtual muhit #
Har bir loyiha uchun alohida muhit yaratish - majburiy odat.
mkdir ml-loyiham
cd ml-loyiham
# Muhit yaratish
python -m venv muhit
# Faollashtirish - Windows
muhit\Scripts\activate
# Faollashtirish - macOS, Linux
source muhit/bin/activate
(muhit) C:\Users\husanboy\ml-loyiham>
Qavs ichidagi (muhit) - muhit faol ekanini bildiradi.
# Chiqish
deactivate
A loyihasi scikit-learn 1.2 ni, B loyihasi scikit-learn 1.5 ni
talab qiladi. Global o'rnatishda bu ikkisi bir vaqtda tura olmaydi.
Virtual muhit har bir loyihaga o'z kutubxonalar to'plamini beradi.
muhit/ ni Git ga qo'shmang# .gitignore
muhit/
venv/
__pycache__/
*.pyc
.ipynb_checkpoints/
O'rniga bog'liqliklar ro'yxatini saqlang:
pip freeze > requirements.txt
Kutubxonalarni o'rnatish #
pip install numpy pandas matplotlib seaborn scikit-learn jupyter
| Kutubxona | Vazifasi |
|---|---|
| NumPy | Tez massivlar va matematik amallar |
| Pandas | Jadval ko'rinishidagi ma'lumot bilan ishlash |
| Matplotlib | Grafiklar chizish |
| Seaborn | Matplotlib ustidagi chiroyli statistik grafiklar |
| scikit-learn | Asosiy ML algoritmlari |
| Jupyter | Interaktiv daftar muhiti |
# Tekshirish
pip list
Package Version
--------------- -------
jupyter 1.0.0
matplotlib 3.9.0
numpy 2.0.0
pandas 2.2.2
scikit-learn 1.5.0
seaborn 0.13.2
pip freeze > requirements.txt
numpy==2.0.0
pandas==2.2.2
scikit-learn==1.5.0
Boshqa kompyuterda:
pip install -r requirements.txt
Bu "menda ishlaydi, sizda ishlamaydi" muammosini oldini oladi.
Jupyter Notebook #
Ma'lumot tahlili uchun eng qulay muhit: kodni qismlarga bo'lib ishga tushirasiz va natijani darhol ko'rasiz.
jupyter notebook
Brauzerda http://localhost:8888 ochiladi.
Foydali tugmalar #
| Tugma | Amal |
|---|---|
| Shift + Enter | Katakni ishga tushirish va keyingisiga o'tish |
| Ctrl + Enter | Ishga tushirish, shu yerda qolish |
| Alt + Enter | Ishga tushirish va yangi katak qo'shish |
| Esc keyin A | Yuqoriga katak qo'shish |
| Esc keyin B | Pastga katak qo'shish |
| Esc keyin D D | Katakni o'chirish |
| Esc keyin M | Matn (Markdown) katagiga aylantirish |
| Esc keyin Y | Kod katagiga aylantirish |
Jupyter da kataklarni istalgan tartibda ishga tushirish mumkin. Bu qulay, lekin xavfli: yuqoridan pastga qayta ishga tushirganda kod ishlamay qolishi mumkin.
Ishni tugatgach har doim Kernel → Restart & Run All qiling. Agar xatosiz o'tsa - daftar haqiqatan ishlaydi.
Muqobil muhitlar #
| Muhit | Xususiyati |
|---|---|
| Jupyter Notebook | Klassik, brauzerda |
| JupyterLab | Zamonaviyroq, ko'p oynali |
| VS Code | .ipynb fayllarni to'g'ridan-to'g'ri ochadi |
| Google Colab | Bulutda, bepul GPU, o'rnatish shart emas |
| Kaggle Notebooks | Bulutda, ma'lumotlar to'plamlari bilan |
Kompyuteringiz kuchsiz bo'lsa yoki hech nima o'rnatmoqchi bo'lmasangiz - bu eng oson yo'l. Brauzer va Google hisobi yetarli.
Bepul GPU ham beriladi - neyron tarmoqlar uchun juda foydali.
Birinchi kod #
Yangi daftar yarating va sinab ko'ring:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import sklearn
print("NumPy: ", np.__version__)
print("Pandas: ", pd.__version__)
print("scikit-learn:", sklearn.__version__)
NumPy: 2.0.0
Pandas: 2.2.2
scikit-learn: 1.5.0
To'liq ishlaydigan misol #
Hamma narsa to'g'ri sozlanganini tekshirish uchun:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
# Sun'iy ma'lumot yaratamiz: uy maydoni va narxi
np.random.seed(42)
maydon = np.random.uniform(40, 150, 50).reshape(-1, 1)
narx = maydon.flatten() * 8 + np.random.normal(0, 60, 50) + 100
# Modelni o'qitamiz
model = LinearRegression()
model.fit(maydon, narx)
bashorat = model.predict(maydon)
print(f"Koeffitsiyent: {model.coef_[0]:.2f}")
print(f"Kesishma: {model.intercept_:.2f}")
print(f"Aniqlik (R2): {model.score(maydon, narx):.3f}")
Koeffitsiyent: 7.94
Kesishma: 107.31
Aniqlik (R2): 0.947
plt.figure(figsize=(8, 5))
plt.scatter(maydon, narx, alpha=0.7, label="Haqiqiy narxlar")
plt.plot(maydon, bashorat, color="red", linewidth=2, label="Model bashorati")
plt.xlabel("Maydon (m2)")
plt.ylabel("Narx (mln so'm)")
plt.title("Uy maydoni va narxi bog'liqligi")
plt.legend()
plt.grid(alpha=0.3)
plt.show()
Yuqoridagi 10 satr kod - to'liq ML modeli. Siz:
- Ma'lumot bergansiz
- Model uni o'zi tahlil qilgan
- Bog'liqlikni topgan
- Endi yangi uy uchun narx aytishi mumkin
yangi_uy = np.array([[85]])
print(f"Bashorat: {model.predict(yangi_uy)[0]:.0f} mln so'm")
Bashorat: 782 mln so'm
Loyiha tuzilishi #
ml-loyiham/
├── muhit/ # virtual muhit (Git ga kirmaydi)
├── malumotlar/
│ ├── xom/ # o'zgartirilmagan asl fayllar
│ └── tayyor/ # tozalangan ma'lumot
├── daftarlar/
│ ├── 01-tahlil.ipynb
│ └── 02-model.ipynb
├── manba/
│ ├── tayyorlash.py
│ └── model.py
├── modellar/ # saqlangan modellar
├── .gitignore
├── requirements.txt
└── README.md
malumotlar/xom/ papkasidagi fayllarni hech qachon o'zgartirmang.
Har qanday tozalash natijasi tayyor/ ga saqlansin. Xato qilsangiz,
har doim boshidan boshlash imkoni bo'ladi.
Foydali sozlamalar #
import pandas as pd
# Barcha ustunlarni ko'rsatish
pd.set_option('display.max_columns', None)
pd.set_option('display.width', 200)
# Kasr sonlarni chiroyli ko'rsatish
pd.set_option('display.float_format', '{:.2f}'.format)
# Grafiklarni daftar ichida ko'rsatish (eski versiyalarda kerak)
%matplotlib inline
# Ogohlantirishlarni yashirish
import warnings
warnings.filterwarnings('ignore')
filterwarnings('ignore') qulay, lekin muhim xabarlarni ham yashiradi.
Faqat aniq bir turdagi ogohlantirishni yashiring:
warnings.filterwarnings('ignore', category=FutureWarning)
- Python o'rnating va
python --versionbilan tekshiring. ml-loyihampapkasini yarating va virtual muhit oching.- Muhitni faollashtiring va kutubxonalarni o'rnating.
pip freeze > requirements.txtqiling va faylni oching.- Jupyter Notebook ni ishga tushiring.
- Yangi daftar yarating va versiyalarni chop etuvchi kodni yozing.
- Yuqoridagi chiziqli regressiya misolini to'liq ishga tushiring.
np.random.seed(42)niseed(7)ga o'zgartiring - natija boshqacha bo'lishini ko'ring.- Yuqoridagi loyiha tuzilishini yarating va
.gitignoreyozing. - Google Colab da ham xuddi shu kodni ishga tushirib ko'ring.
Xulosa #
- Har bir loyiha uchun virtual muhit yarating:
python -m venv muhit. - Asosiy kutubxonalar: NumPy, Pandas, Matplotlib, scikit-learn.
requirements.txtbog'liqliklarni aniq versiyalar bilan saqlaydi.- Jupyter Notebook - kodni qismlarga bo'lib ishlatish uchun ideal.
- Ishni tugatgach Restart & Run All bilan tekshiring.
- Google Colab - o'rnatishsiz va bepul GPU bilan ishlash imkoni.
- Xom ma'lumotni hech qachon o'zgartirmang - alohida papkada saqlang.
muhit/,__pycache__/,.ipynb_checkpoints/ni.gitignorega qo'ying.
Keyingi bo'limda NumPy bilan tanishamiz.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
Xatolik topdingizmi?
Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.