Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. scikit-learn API
- 2.2. O'qitish/test bo'lish
- 2.3. Datasetlar (load_iris)
- 2.4. Model o'qitish va bashorat
- 2.5. Aniqlikni o'lchash (accuracy)
- 2.6. Model tanlovi
- 2.7. Overfitting (yodlash)
- 2.8. ML ish oqimi
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — O'qitish/test bo'lish
- Misol 2 — Model o'qitish va baholash
- Misol 3 — Model tanlovi (taqqoslash)
- Misol 4 — Amaliy: gul tasnifi (to'liq)
- 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
25.2-dars: scikit-learn — birinchi model
25-QISM — ML VA AI · 2-dars
1. Kirish va motivatsiya
25.1 da ML tushunchasini ko'rdik. Endi amaliy model quramiz: real ma'lumotda o'qitish, bashorat, aniqlik. Lekin muhim savol: model yangi ma'lumotda qancha yaxshi ishlaydi? Agar o'qitgan ma'lumotda test qilsak — aldanamiz (model o'sha ma'lumotni "yodlagan"). Model ko'rmagan ma'lumotda sinash kerak.
scikit-learn — Python'ning asosiy ML kutubxonasi: yuzlab model (klassifikatsiya, regressiya, guruhlash), bir xil API (fit/predict/score), ma'lumot tayyorlash. Eng muhim amaliyot: o'qitish/test bo'lish (train_test_split) — ma'lumotni o'qitish (train) va sinov (test) qismlarga bo'lish; model train'da o'rganadi, test'da baholanadi (ko'rmagan ma'lumot). Bu haqiqiy aniqlikni o'lchaydi (yodlash emas). scikit-learn — ML boshlovchisining birinchi vositasi.
Real vaziyat. Bir jamoa model qurdi — o'qitgan ma'lumotda 99% aniq! Xursand bo'ldi. Lekin real ishda 60% edi. Sabab: model ma'lumotni yodlagan (overfitting), yangi ma'lumotda ishlamasdi. train_test_split qo'llandi: test'da (ko'rmagan) 75% — haqiqiy aniqlik. Model tuzatildi. O'qitish/test bo'lish — ishonchli ML ning asosi.
Bu darsda scikit-learn bilan birinchi real modelni quramiz.
Bu darsda:
- scikit-learn API (fit/predict/score)
- O'qitish/test bo'lish (train_test_split)
- Datasetlar (load_iris)
- Model o'qitish va bashorat
- Aniqlikni o'lchash (accuracy)
- Model tanlovi
- Overfitting (yodlash)
- Amaliy: gul tasnifi
ℹ Misollarda scikit-learn (
random_state=42) bilan sinaladi.
2. Nazariya — chuqur tushuntirish
2.1. scikit-learn API
Barcha model — bir xil API:
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier()
model.fit(X_train, y_train) # o'qitish
model.predict(X_test) # bashorat
model.score(X_test, y_test) # aniqlik scikit-learn API — barcha model bir xil (izchil): fit(X, y) (o'qitish), predict(X) (bashorat), score(X, y) (baholash). Model almashtirish oson (DecisionTreeClassifier → LogisticRegression — bir xil API). Bu ML ni osonlashtiradi: bir kod, ko'p model. random_state=42 — takrorlanuvchi natija (tasodifiylikni qotirish). scikit-learn — izchil va sodda.
2.2. O'qitish/test bo'lish
Ma'lumotni ikki qismga:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42
)
# 70% o'qitish, 30% test (ko'rmagan ma'lumot) O'qitish/test bo'lish (train_test_split) — ma'lumotni o'qitish (train — model o'rganadi) va test (model ko'rmaydi — baholash) qismlarga bo'lish. test_size=0.3 (30% test), random_state=42 (takrorlanuvchi). Sabab: model o'qitgan ma'lumotni "yodlashi" mumkin — ko'rmagan (test) ma'lumotda haqiqiy aniqlik. Bu ML ning eng muhim amaliyoti. Bo'lmasdan baholash — aldanish.
2.3. Datasetlar (load_iris)
scikit-learn tayyor datasetlar:
from sklearn.datasets import load_iris
X, y = load_iris(return_X_y=True)
# X: gul o'lchovlari (150 namuna, 4 xususiyat)
# y: gul turi (0, 1, 2 — 3 sinf) scikit-learn tayyor datasetlar (o'rganish uchun): load_iris (gul turi — 150 namuna, 4 o'lchov, 3 sinf — klassik), load_diabetes (regressiya), load_digits (raqam rasmi). return_X_y=True — X (feature) va y (label) alohida. Bu o'rganishda qulay (real, toza ma'lumot). Real loyihada — o'z ma'lumotingiz (CSV, 24.6). O'rganish uchun tayyor.
2.4. Model o'qitish va bashorat
To'liq jarayon:
model = DecisionTreeClassifier(random_state=42)
model.fit(X_train, y_train) # train'da o'rgan
pred = model.predict(X_test) # test'da bashorat
# pred: har test namunasi uchun bashorat qilingan sinf Jarayon: fit(X_train, y_train) (train'da o'rgan — faqat train), predict(X_test) (test'da bashorat — ko'rmagan ma'lumot). pred — har test namunasi uchun bashorat. Muhim: model faqat train'da o'rganadi (test'ni ko'rmaydi — halol baholash). Keyin bashoratni haqiqiy javob (y_test) bilan solishtirib aniqlikni o'lchaymiz.
2.5. Aniqlikni o'lchash (accuracy)
Model qancha yaxshi:
from sklearn.metrics import accuracy_score
pred = model.predict(X_test)
accuracy_score(y_test, pred) # to'g'ri bashorat ulushi
model.score(X_test, y_test) # bir xil (qulay) Aniqlik (accuracy) — to'g'ri bashorat ulushi: accuracy_score(y_test, pred) (haqiqiy vs bashorat) yoki model.score(X_test, y_test) (bir xil). 1.0 = 100% to'g'ri, 0.75 = 75%. Test'da o'lchash muhim (train'da — aldanish). Aniqlik — klassifikatsiya asosiy o'lchovi (regressiyada R^2, 25.4). Bu model qancha ishonchli. Baholash — ML ning muhim qismi.
2.6. Model tanlovi
Turli model, bir xil API:
from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
# bir xil fit/predict/score — almashtirish oson scikit-learn ko'p model (bir xil API): DecisionTreeClassifier (qaror daraxti — tushunarli), LogisticRegression (chiziqli — tez), RandomForestClassifier (ko'p daraxt — kuchli, 25.6), KNeighborsClassifier (qo'shni). Har biri fit/predict/score — almashtirish oson (bir qator). Turli model turli ma'lumotga mos — sinab ko'rish (qaysi yaxshiroq). Model tanlovi — tajriba.
2.7. Overfitting (yodlash)
Model ma'lumotni yodlasa:
Overfitting: train'da 99%, test'da 60%
(model ma'lumotni yodlagan, umumlashtirmagan)
Yaxshi model: train'da 90%, test'da 88%
(yaqin — umumlashtirgan)Overfitting (ortiqcha moslashish) — model o'qitgan ma'lumotni yodlagan (naqshni emas): train'da yuqori, test'da past aniqlik. Sabab: model juda murakkab (ma'lumotga aniq moslashgan) yoki kam ma'lumot. Belgi: train >> test aniqlik. Yechim: soddaroq model, ko'proq ma'lumot, tartiblash (regularization). Aksincha underfitting (kam o'rganish — ikkalasida past). Maqsad: umumlashtirish (yangi ma'lumotda ishlash).
2.8. ML ish oqimi
scikit-learn ML ish oqimi: 1) ma'lumot (feature X, label y), 2) bo'lish (train_test_split — train/test), 3) model tanla, 4) o'qit (fit(X_train, y_train)), 5) bashorat (predict(X_test)), 6) bahola (score(X_test, y_test) — test'da), 7) yaxshila (model, ma'lumot). Muhim: test'da baholash (train emas — overfittingni sezish). Bu izchil jarayon — barcha ML loyihasining asosi. 25.3–25.6 shu ustida quriladi.
3. Tez ma'lumotnoma
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
# 1. ma'lumot:
X, y = load_iris(return_X_y=True)
# 2. bo'lish (train/test):
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42
)
# 3-4. model o'qitish:
model = DecisionTreeClassifier(random_state=42)
model.fit(X_train, y_train)
# 5. bashorat:
pred = model.predict(X_test)
# 6. baholash (TEST'da):
accuracy_score(y_test, pred)
model.score(X_test, y_test)
# overfitting: train >> test → yodlaganscikit-learn xulosasi
API: fit/predict/score (barcha model) · train_test_split: train/test bo'lish
Test'da baholash (train emas — aldanmaslik) · accuracy (to'g'ri ulush)
Overfitting: train>>test (yodlagan) · random_state: takrorlanuvchi4. Batafsil misollar
Misollarda scikit-learn (
random_state=42— takrorlanuvchi) bilan sinaladi.
Misol 1 — O'qitish/test bo'lish
"""train_test_split: ma'lumotni train/test qismlarga; test — model ko'rmagan ma'lumot."""
import warnings
warnings.filterwarnings("ignore")
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
def main() -> None:
print("=== 1. Dataset yuklash (iris) ===")
X, y = load_iris(return_X_y=True)
print(f" namunalar: {X.shape[0]}, xususiyatlar: {X.shape[1]}")
print(f" sinflar: {sorted(set(int(v) for v in y))}")
print("\n=== 2. train_test_split (70/30) ===")
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42
)
print(f" train namunalari: {X_train.shape[0]}")
print(f" test namunalari: {X_test.shape[0]}")
print("\n=== 3. Nega bo'lish kerak ===")
print(" model train'da o'rganadi")
print(" test'da baholanadi (ko'rmagan — halol)")
print("\n=== 4. random_state (takrorlanuvchi) ===")
print(f" random_state=42 → har doim bir xil bo'lish")
print(f" test ulushi: {round(X_test.shape[0] / X.shape[0], 2)}")
print(" ⭐ train_test_split — haqiqiy aniqlik uchun")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Dataset yuklash (iris) ===
namunalar: 150, xususiyatlar: 4
sinflar: [0, 1, 2]
=== 2. train_test_split (70/30) ===
train namunalari: 105
test namunalari: 45
=== 3. Nega bo'lish kerak ===
model train'da o'rganadi
test'da baholanadi (ko'rmagan — halol)
=== 4. random_state (takrorlanuvchi) ===
random_state=42 → har doim bir xil bo'lish
test ulushi: 0.3
⭐ train_test_split — haqiqiy aniqlik uchunNima ko'rsatdi: 2.2, 2.3-bo'limlar.
Misol 2 — Model o'qitish va baholash
"""fit (train'da o'rgan); predict (test'da bashorat); accuracy_score (test aniqlik)."""
import warnings
warnings.filterwarnings("ignore")
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
def main() -> None:
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
print("=== 1. Model o'qitish (fit) ===")
model = DecisionTreeClassifier(random_state=42)
model.fit(X_train, y_train)
print(" model train'da o'rgandi")
print("\n=== 2. Bashorat (predict) ===")
pred = model.predict(X_test)
print(f" dastlabki 5 bashorat: {pred[:5].tolist()}")
print(f" haqiqiy 5: {y_test[:5].tolist()}")
print("\n=== 3. Aniqlik (test'da) ===")
acc = accuracy_score(y_test, pred)
print(f" test aniqligi: {round(acc, 3)}")
print("\n=== 4. Train vs test (overfitting tekshiruvi) ===")
train_acc = model.score(X_train, y_train)
test_acc = model.score(X_test, y_test)
print(f" train: {round(train_acc, 3)}, test: {round(test_acc, 3)}")
print(f" yaqin → yaxshi umumlashtirgan")
print(" ⭐ fit → predict → accuracy (test'da baholash)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Model o'qitish (fit) ===
model train'da o'rgandi
=== 2. Bashorat (predict) ===
dastlabki 5 bashorat: [1, 0, 2, 1, 1]
haqiqiy 5: [1, 0, 2, 1, 1]
=== 3. Aniqlik (test'da) ===
test aniqligi: 1.0
=== 4. Train vs test (overfitting tekshiruvi) ===
train: 1.0, test: 1.0
yaqin → yaxshi umumlashtirgan
⭐ fit → predict → accuracy (test'da baholash)Nima ko'rsatdi: 2.4, 2.5, 2.7-bo'limlar.
Misol 3 — Model tanlovi (taqqoslash)
"""turli model bir xil API: DecisionTree, LogisticRegression, RandomForest — taqqoslash."""
import warnings
warnings.filterwarnings("ignore")
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
def main() -> None:
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
print("=== 1. Uch model (bir xil API) ===")
modellar = {
"DecisionTree": DecisionTreeClassifier(random_state=42),
"LogisticRegression": LogisticRegression(max_iter=1000, random_state=42),
"RandomForest": RandomForestClassifier(random_state=42),
}
print("\n=== 2. Har birini o'qit va bahola ===")
for nom, model in modellar.items():
model.fit(X_train, y_train)
acc = model.score(X_test, y_test)
print(f" {nom}: {round(acc, 3)}")
print("\n=== 3. Model almashtirish oson ===")
print(" bir xil fit/predict/score — bir qator o'zgarish")
print("\n=== 4. Feature muhimligi (DecisionTree) ===")
dt = modellar["DecisionTree"]
print(f" xususiyat muhimligi: {[round(float(x), 2) for x in dt.feature_importances_]}")
print(" ⭐ turli model — sinab, eng yaxshini tanla")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Uch model (bir xil API) ===
=== 2. Har birini o'qit va bahola ===
DecisionTree: 1.0
LogisticRegression: 1.0
RandomForest: 1.0
=== 3. Model almashtirish oson ===
bir xil fit/predict/score — bir qator o'zgarish
=== 4. Feature muhimligi (DecisionTree) ===
xususiyat muhimligi: [0.0, 0.02, 0.89, 0.09]
⭐ turli model — sinab, eng yaxshini tanlaNima ko'rsatdi: 2.1, 2.6-bo'limlar.
Misol 4 — Amaliy: gul tasnifi (to'liq)
Real ML: gul o'lchovlaridan turini bashorat — to'liq jarayon (bo'lish, o'qitish, baholash, bashorat). Bu — birinchi amaliy ML modelining namunasi.
"""to'liq ML: iris, bo'lish, o'qitish, baholash, yangi gul bashorati."""
import warnings
warnings.filterwarnings("ignore")
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
def main() -> None:
print("=== 1. Ma'lumot (iris) ===")
data = load_iris()
X, y = data.data, data.target
print(f" {X.shape[0]} gul, {X.shape[1]} o'lchov")
print(f" turlar: {list(data.target_names)}")
print("\n=== 2. Bo'lish va o'qitish ===")
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
model = RandomForestClassifier(random_state=42)
model.fit(X_train, y_train)
print(f" {X_train.shape[0]} gul bilan o'qitildi")
print("\n=== 3. Baholash (test'da) ===")
acc = model.score(X_test, y_test)
print(f" test aniqligi: {round(acc, 3)}")
print("\n=== 4. Yangi gul bashorati ===")
yangi_gul = [[5.1, 3.5, 1.4, 0.2]] # o'lchovlar
bashorat = model.predict(yangi_gul)[0]
print(f" o'lchovlar {yangi_gul[0]} → tur: {data.target_names[bashorat]}")
print(" ⭐ to'liq ML — ma'lumot → model → bashorat")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Ma'lumot (iris) ===
150 gul, 4 o'lchov
turlar: [np.str_('setosa'), np.str_('versicolor'), np.str_('virginica')]
=== 2. Bo'lish va o'qitish ===
105 gul bilan o'qitildi
=== 3. Baholash (test'da) ===
test aniqligi: 1.0
=== 4. Yangi gul bashorati ===
o'lchovlar [5.1, 3.5, 1.4, 0.2] → tur: setosa
⭐ to'liq ML — ma'lumot → model → bashoratNima ko'rsatdi: 2.1–2.8-bo'limlar.
5. To'g'ri va noto'g'ri tushunishlar
| Noto'g'ri fikr | To'g'risi |
|---|---|
| "Train'da baholash yetarli" | Test'da (ko'rmagan) |
| "Yuqori train aniqlik — yaxshi" | Test aniqlik muhim |
| "Bir model yetarli" | Sinab taqqosla |
| "Overfitting yaxshi (99%)" | Yodlash (test past) |
| "random_state keraksiz" | Takrorlanuvchi natija |
| "Har model boshqa API" | Bir xil (fit/predict/score) |
| "Test'ni o'qitishga" | Test — faqat baholash |
| "Aniqlik — yagona o'lchov" | Boshqa ham (25.4) |
6. Keng tarqalgan xatolar va yechimlari
1. Train'da baholash
model.fit(X, y); model.score(X, y) # ⚠️ aldanish
# train_test_split, test'da bahola # ✅2. Test'ni o'qitishga aralashtirish
model.fit(X_test, y_test) # ⚠️ test o'qitishda
model.fit(X_train, y_train) # ✅ faqat train3. random_statesiz (takrorlanmaydi)
train_test_split(X, y) # har safar boshqa # ⚠️
train_test_split(X, y, random_state=42) # ✅4. Overfittingni sezmaslik
# train 99%, test 60% — e'tiborsiz # ⚠️
# train vs test taqqosla (yaqinmi?) # ✅5. X shakl noto'g'ri
model.predict([5.1, 3.5]) # 1D # ⚠️
model.predict([[5.1, 3.5]]) # 2D # ✅6. Bir model bilan cheklanish
# faqat DecisionTree # ⚠️
# bir necha sinab taqqosla # ✅7. Ma'lumotni tozalamaslik
model.fit(iflos_X, y) # yomon model # ⚠️
# avval tozala 24.8-bob # ✅7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 25.1-dars (o'tilgan): ML tushunchasi — asos
- 25.3-dars: Ma'lumot tayyorlash — model uchun
- 25.4-dars: Model baholash — chuqurroq
- 25.6-dars: Ansambl — RandomForest
- 24-qism (o'tilgan): Ma'lumot tahlili — ML ma'lumoti
8. Eng yaxshi amaliyotlar
Doim
train_test_split(test'da bahola).Test'ni faqat baholashga (o'qitishga emas).
random_state(takrorlanuvchi).Train vs test taqqosla (overfitting).
Bir necha model sinab taqqosla.
X2D shakl (namuna × feature).Ma'lumotni avval tozala 24.8-bob.
Aniqlik + boshqa o'lchov 25.4-bob.
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
1. # scikit-learn API nima?
2. # train_test_split nima?
3. # nega bo'lish kerak?
4. # test_size nima?
5. # random_state nima?
6. # fit nima?
7. # predict nima?
8. # accuracy nima?
9. # qayerda baholash?
10. # overfitting nima?
11. # overfitting belgisi?
12. # model almashtirish oson-mi?Javoblar
- Bir xil fit/predict/score (barcha model)
- Ma'lumotni train/test qismlarga bo'lish
- Ko'rmagan ma'lumotda baholash (halol)
- Test ulushi (0.3 = 30%)
- Takrorlanuvchi natija
- O'qitish (train'da)
- Bashorat (test'da)
- To'g'ri bashorat ulushi
- Test'da (train emas)
- Model ma'lumotni yodlagan
- Train >> test aniqlik
- Ha (bir xil API)
Vazifa 2: Xatolarni tuzating
1. model.fit(X, y); model.score(X, y) # test'da
2. model.fit(X_test, y_test) # X_train
3. train_test_split(X, y) # random_state
4. model.predict([5.1, 3.5]) # 2D
5. # train 99%, test 60% e'tiborsiz # taqqoslaJavoblar
1. X_tr, X_te, ... = train_test_split(...); model.score(X_te, y_te)
2. model.fit(X_train, y_train)
3. train_test_split(X, y, random_state=42)
4. model.predict([[5.1, 3.5]])
5. # train vs test taqqosla (overfitting)Vazifa 3: Bo'lish
train/test:
- Dataset
train_test_splittest_sizerandom_state
Vazifa 4: O'qitish
Model:
fit(train)predict(test)accuracy- Train vs test
Vazifa 5: Model tanlovi
Taqqoslash:
- Uch model
- Bir xil API
- Bahola
- Eng yaxshi
Vazifa 6: To'liq ML
Jarayon:
- Ma'lumot
- Bo'lish, o'qitish
- Baholash
- Bashorat
Vazifa 7: O'ylash
ML ning eng muhim amaliyoti — o'qitish/test bo'lish: model ko'rmagan ma'lumotda (test) baholanadi. Nima uchun "train'da baholash aldanish" va nega "umumlashtirish" (generalization — yangi ma'lumotda ishlash) ML ning asosiy maqsadi — model yodlash (overfitting) va o'rganish (umumlashtirish) orasidagi farq nimada?
Javob
Qisqa javob: ML ning maqsadi — yangi (ko'rmagan) ma'lumotda ishlash (umumlashtirish — generalization), o'qitgan ma'lumotni takrorlash emas. "Train'da baholash aldanish", chunki model o'qitgan ma'lumotni yodlashi mumkin (naqshni emas) — train'da 99%, lekin yangi ma'lumotda 60% (overfitting). Shuning uchun test'da (ko'rmagan ma'lumot) baholash — haqiqiy aniqlik. Umumlashtirish ML ning asosiy maqsadi, chunki: real ishda model yangi ma'lumotga duch keladi (o'qitgan emas) — yodlagan model foydasiz. Overfitting (yodlash) — ma'lumotga aniq moslashgan (train yuqori, test past); umumlashtirish — naqshni o'rgangan (train ≈ test, yangi ma'lumotda ishlaydi). Farq: yodlash — xotira, o'rganish — naqsh. "Model o'qitgan ma'lumotni takrorlasa — foydasiz; yangiga ishlasa — foydali".
1. Umumlashtirish — maqsad
ML real ishda yangi ma'lumotga ishlaydi (o'qitgan emas). Maqsad — naqshni o'rganib, yangiga qo'llash (umumlashtirish), o'qitganni takrorlash emas.
2. Nega train'da aldanish
Model train'ni ko'rdi — uni takrorlashi oson (yodlash). Train aniqlik — model qancha yodlagan, yangiga qancha ishlashi emas. Test — halol.
3. Yodlash vs o'rganish
| Overfitting (yodlash) | Umumlashtirish (o'rganish) |
|---|---|
| Ma'lumotni yodlagan | Naqshni o'rgangan |
| Train yuqori, test past | Train ≈ test |
| Yangida yomon | Yangida yaxshi |
| Xotira | Naqsh |
4. Test'da baholash
Ko'rmagan ma'lumot (test) — real vaziyat modeli (yangi ma'lumot). Test aniqlik — haqiqiy unumdorlik.
5. Muhandislik saboqlari
- ML maqsadi — umumlashtirish (yangi ma'lumot)
- Train'da baholash — aldanish (yodlash)
- Test'da (ko'rmagan) — haqiqiy
- Yodlash (overfitting) ≠ o'rganish
6. Xulosa
- Umumlashtirish — ML asosiy maqsadi
- Train'da baholash aldanish
- Test'da (ko'rmagan) bahola
- Overfitting (yodlash) — asosiy xavf
Nimani mustahkamlaydi: 2.1–2.8-bo'limlar.
Xulosa
Bu darsda scikit-learn bilan birinchi modelni qurdik.
Eng muhim uch fikr:
scikit-learn API va o'qitish/test bo'lish. scikit-learn — barcha model bir xil API:
fit(X, y)(o'qitish),predict(X)(bashorat),score(X, y)(baholash) — model almashtirish oson.train_test_split— ma'lumotni o'qitish (train — model o'rganadi) va test (model ko'rmaydi — baholash) qismlarga bo'lish:test_size=0.3,random_state=42(takrorlanuvchi). Bu ML ning eng muhim amaliyoti — model train'ni "yodlashi" mumkin, shuning uchun ko'rmagan (test) ma'lumotda haqiqiy aniqlik.Jarayon va baholash. ML ish oqimi: ma'lumot (
X,y) → bo'lish (train_test_split) → model tanla →fit(X_train, y_train)(faqat train'da o'rgan) →predict(X_test)(test'da bashorat) → bahola (accuracy_score(y_test, pred)yokiscore— test'da). Aniqlik (accuracy) — to'g'ri bashorat ulushi. scikit-learn ko'p model (DecisionTree, LogisticRegression, RandomForest — bir xil API) — sinab, eng yaxshini tanla. Tayyor datasetlar (load_iris) — o'rganish uchun.Overfitting va umumlashtirish. Overfitting (yodlash) — model o'qitgan ma'lumotni yodlagan (naqshni emas): train'da yuqori, test'da past aniqlik (train >> test — belgi). ML ning maqsadi — umumlashtirish (generalization — yangi, ko'rmagan ma'lumotda ishlash), o'qitganni takrorlash emas. Real ishda model yangi ma'lumotga duch keladi — yodlagan model foydasiz. Shuning uchun test'da baholash (train — aldanish), train vs test taqqoslash (yaqinmi?). Yechim: soddaroq model, ko'proq ma'lumot. "Model yodlasa — foydasiz; naqshni o'rgansa — foydali". Bu ML ning izchil jarayoni (25.3–25.6 asosi).
Keyingi darsda ma'lumotni tayyorlash ni o'rganamiz: ML uchun ma'lumot tozalash, kodlash (kategoriya → son), masshtablash (scaling), feature yaratish — modelga tayyorlash (ma'lumot sifati model sifati).
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!