Mundarija (24)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. Data Science rollari
- 2.2. Rolni tanlash — ko'nikmalar bo'shlig'i sifatida
- 2.3. Rezyume tuzilishi
- 2.4. Punkt formulasi: fe'l + nima + qanday + natija
- 2.5. Vakansiyani o'qish
- 2.6. ATS (avtomatik saralash) — nima ma'lum, nima noma'lum
- 2.7. Ish qidirish strategiyasi
- 2.8. Mahalliy va xalqaro bozor
- 2.9. Rezyume namunasi
- 2.10. Tuzoqlar
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — Rezyume va vakansiyani moslash: TF-IDF va talablar qamrovi
- Misol 2 — Rezyume punktlarini qoidaviy tahlil
- Misol 3 — Ko'nikmalar bo'shlig'i: sintetik vakansiyalar to'plami
- Misol 4 — Ariza voronkasi: faraziy konversiyalar bilan simulyatsiya
- 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
29.8-dars: Rezyume va ish qidirish
29-QISM — LOYIHALAR VA KARYERA · 8-dars
1. Kirish va motivatsiya
Oldingi darsda portfolio yaratdik: loyihalarni tanlash, har biriga tushunarli README, natijani bir qarashda ko'rsatadigan sahifa. Portfolio — sizning ishingiz haqidagi batafsil hikoya. Lekin ish beruvchi uni ochishidan oldin boshqa hujjatni ko'radi — rezyumeni. Rezyume bitta savolga javob beradi: "bu odam bilan suhbatlashishga vaqt sarflashga arziydimi?" Unga ko'pincha bir necha daqiqa, ba'zan undan ham kam vaqt ajratiladi. Bu darsda o'sha daqiqalarni qanday ishlatish va rezyume yuborilgandan keyingi butun jarayonni — vakansiyani o'qishdan tortib ariza voronkasini boshqarishgacha — data scientist kabi tahlil qilishni o'rganamiz.
Real vaziyat. Kursni tugatgan tahlilchi ikki oy davomida 70 ta vakansiyaga bir xil rezyume yubordi va faqat bitta javob oldi. U "bozorda ish yo'q" degan xulosaga keldi. Keyin rezyumesini ochib qaradi: tajriba bo'limida "Kredit modeli ustida ishladim", "Hisobotlar tayyorlashda yordam berdim" — nima qilgani, qanday qilgani va nima o'zgargani yo'q. Ko'nikmalar qatorida "sklearn", vakansiyada esa "scikit-learn"; vakansiyadagi majburiy talablarning yarmi rezyumeda umuman tilga olinmagan, garchi u ularni bilsa ham. Muammo bozor emas, voronkaning birinchi bosqichi edi — va buni sonlar bilan ko'rsatish mumkin edi: 1/70 javob, bu bosqichdagi konversiya oraliq baholarda ham faraziy mezondan past. Bu darsning 1, 2 va 4-misollarida aynan shu vaziyatni tahlil qilamiz.
Bu darsda rezyume va ish qidirishga ma'lumot bilan yondashamiz: rollarni farqlash, rezyume punktlarini o'lchanadigan qilib yozish, vakansiya bilan moslikni tekshirish va ariza voronkasining tor joyini topish.
Bu darsda:
- DS rollari: Data Analyst, Data Scientist, ML Engineer, MLOps, Research — farqlari va kursning mos qismlari
- Rezyume tuzilishi: 1 sahifa, bo'limlar tartibi
- Punkt formulasi: fe'l + nima + qanday + o'lchanadigan natija
- Vakansiyani o'qish: majburiy va afzallik, yashirin talablar
- ATS (avtomatik saralash) — nima ma'lum va nima noma'lum
- Ish qidirish strategiyasi: tarmoq, tavsiya, stajirovka, freelance, ochiq manba
- Mahalliy va xalqaro bozor — umumiy farqlar
- Rezyume namunasi
- Tuzoqlar
ℹ Misollar real numpy/scipy/sklearn bilan (Python 3.14). Vakansiyalar, rezyumelar va voronka konversiyalari sintetik yoki faraziy — ular mexanizmni ko'rsatadi, real bozor haqida raqam bermaydi. Maosh, vakansiyalar soni va konversiyalar haqida joriy ma'lumotni rasmiy va ishonchli manbalardan tekshiring.
2. Nazariya — chuqur tushuntirish
2.1. Data Science rollari
"Data Science" — bitta kasb emas, bir-biriga yaqin bir necha rolning umumiy nomi. Vakansiya sarlavhasi bir xil bo'lsa ham, turli tashkilotlarda ish mazmuni juda farq qilishi mumkin: bir bankdagi "Data Scientist" kun bo'yi SQL hisobot yozadi, boshqa startapdagi "Data Analyst" esa model quradi. Shuning uchun sarlavhaga emas, vazifalar ro'yxatiga qarang.
ASOSIY SAVOL NATIJA (mahsulot)
DATA ANALYST "nima bo'ldi va nega?" hisobot, dashboard, tavsiya
DATA SCIENTIST "nima bo'ladi? nima qilsak model, tajriba natijasi,
nima o'zgaradi?" sababiy tahlil
ML ENGINEER "modelni qanday ishonchli xizmat (API), quvur,
ishlatamiz?" ishlab chiqarishdagi model
MLOPS "modellar hayot siklini qanday platforma: CI/CD, registr,
avtomatlashtiramiz?" monitoring, infratuzilma
RESEARCH "qanday yangi usul ishlaydi?" maqola, yangi arxitektura,
prototip, benchmark
Chegaralar qat'iy emas: kichik jamoada bitta odam 2-3 rolni bajaradi,
katta tashkilotda har rol yana bo'linadi (masalan, "Product Analyst",
"Decision Scientist", "NLP Engineer", "Data Engineer").| Rol | Kundalik ish | Asosiy vositalar | Kursning ko'proq mos qismlari |
|---|---|---|---|
| Data Analyst | SQL so'rovlar, metrikalar, dashboard, A/B test natijasini o'qish, biznes bilan muloqot | SQL, Excel, BI vositalari, pandas, vizualizatsiya | 03, 04, 05, 06, 08, 11 |
| Data Scientist | savolni modelga aylantirish, belgi muhandisligi, model va tajriba, natijani tushuntirish | Python, pandas, scikit-learn, gradient boosting, statistika | 04, 09, 11, 12-19, 28 |
| ML Engineer | modelni xizmatga aylantirish, tezlik va ishonchlilik, chuqur o'qitish | Python, PyTorch, Docker, API, Git, test | 19, 20-24, 27 |
| MLOps | quvurlar, registr, monitoring, drift, qayta o'qitish avtomatikasi | Docker, orkestratorlar, CI/CD, bulut, monitoring | 27 (to'liq), 28.10 |
| Research | yangi usul, eksperiment dizayni, maqola o'qish va yozish | PyTorch, chiziqli algebra, ehtimollik, ingliz tili | 09, 10, 20-26 |
Qaysi rolga birinchi urinish kerak? Umumiy kuzatuv: Data Analyst va junior Data Scientist rollariga kirish yo'li ko'pincha qisqaroq, chunki ular SQL, statistika va aniq biznes natijasiga tayanadi; ML Engineer va MLOps odatda dasturlash tajribasini, Research esa chuqur matematika va ko'pincha ilmiy darajani kutadi. Bu qat'iy qoida emas — sizning oldingi tajribangiz (masalan, backend dasturchi bo'lsangiz, ML Engineer tabiiy qadam) va mahalliy bozor muhimroq.
2.2. Rolni tanlash — ko'nikmalar bo'shlig'i sifatida
Rolni tanlash — bu optimizatsiya masalasi: qaysi rolning talablari sizning hozirgi ko'nikmalaringizga eng yaqin va qolgan bo'shliqni qancha vaqtda yopish mumkin?
1. 20-50 ta vakansiya matnini yig'ing (bitta shahar/bozor, bitta rol nomi)
2. talablarni ajrating: har vakansiyada qaysi ko'nikmalar so'ralgan
3. chastota: har ko'nikma vakansiyalarning qancha ulushida?
4. shaxsiy ro'yxat: qaysilari sizda bor - DALIL bilan (loyiha, ish)
5. bo'shliq: tez-tez so'raladigan, lekin sizda yo'q ko'nikmalar
6. tartib: qaysi ko'nikma eng ko'p vakansiyani "mos" holatga o'tkazadi?
(chastota bilan bir xil bo'lishi SHART EMAS - 3-misol)
HALOL ESLATMA: 20-50 ta vakansiya - kichik namuna; ulushlar uchun
ishonch oralig'ini ko'ring 11.4-bob. Bir oylik e'lonlar butun bozor emas.2.3. Rezyume tuzilishi
+--------------------------------------------------------------+
| ISM FAMILIYA |
| Rol (masalan: Data Scientist) | shahar | email | telefon |
| GitHub | portfolio | LinkedIn yoki boshqa kasbiy profil |
+--------------------------------------------------------------+
| QISQA XULOSA (2-3 qator): kim, nimada kuchli, nimani izlaydi |
+--------------------------------------------------------------+
| KO'NIKMALAR: guruhlab (Til / ML / Ma'lumot / Vositalar) |
+--------------------------------------------------------------+
| TAJRIBA (teskari xronologik): lavozim, tashkilot turi, davr |
| - punkt: fe'l + nima + qanday + natija |
| - 2-4 punkt har joyda |
+--------------------------------------------------------------+
| LOYIHALAR (tajriba kam bo'lsa - tajribadan OLDIN): |
| nom - 1 qator mazmun - natija - havola |
+--------------------------------------------------------------+
| TA'LIM, SERTIFIKATLAR, TILLAR |
+--------------------------------------------------------------+
QOIDALAR:
1 sahifa (tajriba 10 yildan kam bo'lsa)
eng kuchli narsa - yuqorida (tajriba yoki loyihalar)
bir xil format: sanalar, tinish belgilari, shrift
fayl: PDF, nomi "Ism_Familiya_Data_Scientist.pdf"
foto, yosh, oilaviy holat - odatda KERAK EMAS (bozorga qarab farq qiladi)Tajriba yo'q bo'lsa nima yoziladi? Loyihalar bo'limi asosiy bo'ladi. Kurs davomidagi amaliyot darslari (12.10, 13.12, 14.14, 15.14, 27.14, 28.12) va 29.2-29.4 dagi to'liq loyiha — bular haqiqiy ish namunalari, agar siz ularni o'zingizcha kengaytirgan va GitHub da tushunarli qilib joylagan bo'lsangiz 29.6-bob. Stajirovka, ko'ngillilik, universitet loyihasi, freelance buyurtma — hammasi tajriba bo'limiga yoziladi, faqat nima ekanini halol ko'rsating.
2.4. Punkt formulasi: fe'l + nima + qanday + natija
Rezyumedagi eng ko'p xato — vazifani yozish (nima qilishingiz kerak edi) o'rniga natijani yozmaslik (nima qildingiz va nima o'zgardi).
YOMON (vazifa): "Kredit modeli ustida ishladim"
YAXSHI (natija): "Kredit to'lovi kechikishini bashorat qiluvchi gradient
boosting modelini qurdim, ROC-AUC 0.71 dan 0.78 ga oshdi"
\______________ NIMA ______________/ \_ QANDAY _/
FE'L: qurdim NATIJA: 0.71 -> 0.78
INGLIZCHA (fe'l BOSHIDA):
"Built a churn model in scikit-learn, reducing monthly churn by 1.5 p.p."
O'ZBEKCHA (fe'l odatda OXIRIDA yoki ikki nuqtadan oldin):
"... modelini qurdim: ROC-AUC 0.71 dan 0.78 ga oshdi"
NATIJA TURLARI:
sifat ROC-AUC 0.71 -> 0.78, MAE 12% ga kamaydi
vaqt hisobot 6 soatdan 20 daqiqaga
pul/biznes to'lov ulushi +2.1 foiz punkt (A/B test bilan)
miqyos 1.2 mln qator, 12 menejer foydalanadi, kuniga 50 ming so'rov
sifatiy "birinchi marta avtomatlashtirildi" - raqam bo'lmasa ham aniqRaqamni to'qimang. Intervyuda har bir raqam haqida "qanday o'lchadingiz? bazaviy qiymat nima edi? qaysi davrda?" deb so'rashadi 29.10-bob. Javob bera olmaydigan raqam — rezyumeni kuchsizlantiradi. O'quv loyihasida natija "bazaviy modelga nisbatan" yoziladi: "bazaviy logistik regressiyaga nisbatan PR-AUC 0.42 dan 0.51 ga (5-fold CV, juftlashgan farq 2*SE dan katta)". Bu kichik, lekin tekshiriladigan da'vo.
"Biz" va "men". Jamoaviy ishda "A/B test o'tkazdik" yozuvi sizning hissangizni yashiradi. Siz aynan nima qildingiz — dizayn, tahlil, kod, taqdimot? "Jamoa bilan" deyish mumkin, lekin fe'l sizniki bo'lsin: "... A/B test dizaynini tuzdim va natijani tahlil qildim".
2.5. Vakansiyani o'qish
VAKANSIYA MATNIDA NIMANI ANGLATADI (odatda)
"Majburiy / Talablar" filtr: ko'pchiligi bo'lishi kerak, lekin HAMMASI
shart emas - ko'p vakansiya "orzu ro'yxati"
"Afzallik / Plus" bo'lsa yaxshi; yo'qligi rad sababi emas
"Vazifalar" ENG MUHIM qism - kundalik ish qanday
(sarlavhadan ko'ra ishonchliroq)
takrorlangan so'zlar muhim ko'nikma (masalan, SQL 3 marta)
"tez o'zgaruvchan muhit" jarayonlar kam, mustaqillik kutiladi
"biznes bilan muloqot" tushuntirish ko'nikmasi tekshiriladi 29.4-bob
YASHIRIN TALABLAR:
"kredit riski" -> domen: skoring, nomutanosib sinflar 14.9-bob, kalibrlash 14.10-bob
"ishlab chiqarishga chiqarish" -> 27-qism: API, Docker, monitoring
"mahsulot metrikalari" -> A/B test (11-qism, 27.13), kohort tahlili (29.10)Qachon ariza berish kerak? Aniq foiz qoidasi yo'q. Umumiy maslahat: majburiy talablarning ko'pchiligi sizda dalil bilan bo'lsa va vazifalar sizga tushunarli bo'lsa — ariza bering; yetishmayotgan narsani rezyumeda to'qimang, lekin xatda "X ni hozir o'rganyapman, Y loyihada qo'lladim" deb yozish mumkin.
2.6. ATS (avtomatik saralash) — nima ma'lum, nima noma'lum
ATS (applicant tracking system) — arizalarni qabul qiladigan, saqlaydigan va ko'pincha qidirish/filtrlash imkonini beradigan tizim. Uning atrofida ko'p afsona bor ("rezyumelarning katta qismini robot rad etadi", "oq shrift bilan kalit so'z yozing"). Halol holat:
MA'LUM (umumiy tamoyil):
- ko'p tashkilot arizalarni shunday tizimda yig'adi
- tizim fayldan MATN ajratadi; murakkab dizayn (jadval, ustunlar,
rasm ichidagi matn) ajratishda xato berishi mumkin
- HR mutaxassisi ko'pincha kalit so'z bo'yicha qidiradi yoki filtrlaydi
("SQL" va "Python" bor rezyumelar)
- ba'zi tizimlarda avtomatik savollar ("tajriba necha yil?") bor
NOMA'LUM (va har tizimda har xil):
- aniq saralash algoritmi, og'irliklar, "ball" formulasi
- sinonimlarni tushunadimi (sklearn = scikit-learn?)
- rezyume avtomatik RAD etiladimi yoki faqat tartiblanadimi
Shuning uchun "ATS ni aldash" maslahatlariga ishonmang.
AMALIY VA XAVFSIZ QOIDALAR (odam uchun ham foydali):
- oddiy bir ustunli tuzilma, standart bo'lim nomlari
- vakansiyadagi atamani ishlating (agar u sizda BOR bo'lsa):
"scikit-learn (sklearn)", "gradient boosting (XGBoost)"
- matnli PDF (skanerlangan rasm emas)
- kalit so'zni punktda DALIL bilan: "SQL bilan ... ni avtomatlashtirdim"1-misolda soddalashtirilgan "qidiruv" quramiz: TF-IDF o'xshashligi va lug'at bo'yicha talab qamrovi. Bu real ATS ning modeli emas — faqat "vakansiya tilida yozish" va "kalit so'z to'ldirish" o'rtasidagi farqni o'lchash vositasi.
2.7. Ish qidirish strategiyasi
Ish qidirish — bu voronka: ariza → javob (HR aloqasi) → intervyu(lar) → taklif. Har bosqichda konversiya bor, va natija ular ko'paytmasi:
kutilgan takliflar = ariza soni * p(javob) * p(intervyu) * p(taklif)
MUHIM XULOSALAR (4-misol, faraziy raqamlar bilan):
1. har qanday bosqichni x1.5 qilish natijani x1.5 qiladi
-> savol: qaysi bosqichni ARZONROQ yaxshilash mumkin?
2. bir xil +5 foiz punkt eng PAST konversiyali bosqichda eng ko'p beradi
3. o'z voronkangizni o'lchang: 70 ta arizada 1 javob - birinchi bosqich
muammosi; 1 ta intervyudan xulosa chiqarib bo'lmaydiKanallar:
KANAL AFZALLIGI E'TIBOR
ochiq e'lonlar ko'p, tez raqobat katta, javob kam
tavsiya (referral) ishonch "qarzga" olinadi tanishlar tarmog'i kerak
kasbiy tarmoq yashirin vakansiyalar, maslahat vaqt talab qiladi, halol
(meetup, konferensiya, onlayn bo'ling - faqat "ish so'rash"
hamjamiyatlar) uchun tanishmang
stajirovka tajriba + keyin ishga o'tish ko'pincha qisqa muddatli
imkoniyati
freelance haqiqiy buyurtmachi, portfolio shartnoma, to'lov, soliq -
mahalliy qonunni tekshiring
ochiq manba kodingizni hamma ko'radi, kichik boshlang: hujjat,
tavsiya manbai test, kichik xato tuzatish
musobaqalar ko'nikma isboti 29.5-bob reyting o'zi ish emas -
yechimni tushuntiringTavsiya xati va kuzatuv. Ariza bilan birga 5-8 gapli xat: nega aynan shu vazifalar, qaysi loyihangiz eng yaqin (havola bilan). Javob bo'lmasa, 1-2 hafta o'tib bitta qisqa, xushmuomala eslatma yuborish odatiy; undan ko'p — yo'q.
Jadval yuriting. Har ariza uchun: sana, tashkilot turi, rol, kanal, rezyume versiyasi, bosqich, keyingi qadam. Bu — sizning shaxsiy ma'lumotlar bazangiz: bir oydan keyin qaysi kanal va qaysi rezyume versiyasi ko'proq javob berishini ko'rasiz (lekin kichik sonlarda ehtiyot bo'ling — 4-misol, 5-bo'lim).
2.8. Mahalliy va xalqaro bozor
Raqamlarsiz, umumiy farqlar (har biri tashkilotga qarab o'zgaradi — tekshiring):
MAHALLIY BOZOR XALQARO (masofaviy)
til o'zbek va/yoki rus, ba'zan ingliz - rezyume, intervyu,
ingliz (hujjatlar) kundalik muloqot
rezyume mahalliy odatlar farq qilishi 1 sahifa, natijaga
mumkin (masalan, foto) yo'naltirilgan, foto yo'q
domen bank, telekom, chakana savdo, mahsulot kompaniyalari,
davlat xizmatlari, logistika SaaS, konsalting
intervyu ko'pincha suhbat + test vazifa bir necha bosqich: HR,
texnik, jonli kodlash, case
huquqiy mehnat shartnomasi shartnoma turi, soliq,
to'lov usuli, vaqt zonasi -
rasmiy manbadan tekshiring
raqobat mahalliy nomzodlar butun dunyo nomzodlariMaosh haqida. Bu darsda maosh raqamlari yo'q — ular tez o'zgaradi va manbaga qarab juda farq qiladi. Joriy ma'lumotni bir necha mustaqil manbadan (e'lonlar, kasbiy hamjamiyat so'rovnomalari, tanishlar) yig'ing va ular ham namuna ekanini unutmang (29.9 dagi tanlash tarafkashligi: o'z maoshini ochiq e'lon qiladiganlar tasodifiy namuna emas).
2.9. Rezyume namunasi
Quyidagi namuna to'qima shaxs uchun yozilgan; ism, tashkilotlar va raqamlar o'ylab topilgan. Tuzilma va punktlar shaklini ko'rsatish uchun.
# [ISM FAMILIYA] — NAMUNA (to'qima shaxs)
Data Scientist · Toshkent · namuna@example.com · github.com/namuna · namuna.github.io
## Qisqa xulosa
Kredit riski va mijoz ketishi bo'yicha 1.5 yillik tahlil tajribasi. Gradient boosting,
A/B test va SQL bilan biznes metrikasini o'lchab yaxshilashga yo'naltirilgan.
Modelni FastAPI xizmati sifatida ishga tushirish tajribasi bor.
## Ko'nikmalar
- **Til:** Python (pandas, NumPy, scikit-learn), SQL (PostgreSQL)
- **ML:** gradient boosting (XGBoost, LightGBM), logistik regressiya, kalibrlash, permutation importance
- **Statistika:** A/B test, bootstrap, gipoteza testlari, quvvat tahlili
- **Vositalar:** Git, Docker, FastAPI, matplotlib
- **Tillar:** o'zbek (ona tili), rus (erkin), ingliz (B2)
## Tajriba
**Junior Data Analyst** — bank (chakana kredit bo'limi) · 2025.03 — hozirgacha
- Kredit to'lovi kechikishini bashorat qiluvchi gradient boosting modelini qurdim,
ROC-AUC 0.71 dan 0.78 ga oshdi (vaqt bo'yicha validatsiya, 6 oy)
- Haftalik portfel hisobotini SQL va pandas bilan avtomatlashtirdim,
tayyorlash vaqti 6 soatdan 20 daqiqaga qisqardi
- SMS eslatma matni uchun A/B test dizaynini tuzdim va natijani tahlil qildim:
o'z vaqtida to'lov ulushi 2.1 foiz punkt oshdi (p = 0.01, oldindan hisoblangan namuna hajmi)
**Stajyor tahlilchi** — telekom kompaniyasi · 2024.06 — 2024.09
- Mijoz ketishi bo'yicha kohort tahlili qildim va 3 ta xavf segmentini aniqladim;
saqlash bo'limi ulardan ikkitasi uchun taklif ishga tushirdi
## Loyihalar
- **Talab bashorati va zaxira qarori** — 40 do'kon, rolling-origin backtest;
bazaviy modelga nisbatan MAE 14% ga past · github.com/namuna/talab
- **Mijoz ketishi xizmati** — scikit-learn + FastAPI + Docker, drift monitoringi
va avtomatik qayta o'qitish darvozasi · github.com/namuna/churn-service
## Ta'lim
Iqtisodiyot bakalavri — universitet · 2020-2024
Data Science kursi (29 qism) — to'liq, 12 ta amaliy loyihaNamunada nimaga e'tibor berish kerak: har tajriba punktida fe'l, nima, qanday va raqamli natija bor; raqamlar baza bilan ("0.71 dan 0.78 ga", "6 soatdan 20 daqiqaga"); loyihalarda havola; ko'nikmalar guruhlangan va vakansiyadagi atamalar bilan ("scikit-learn", "gradient boosting (XGBoost)"); ish beruvchilar umumiy nom bilan ("bank", "telekom kompaniyasi").
2.10. Tuzoqlar
Asosiy tuzoqlar: vazifani natija o'rniga yozish ("... ustida ishladim"); raqamsiz yoki bazasiz raqam ("samaradorlikni 10 marta oshirdim"); raqam to'qish; "biz" bilan shaxsiy hissani yashirish; barcha vakansiyaga bir xil rezyume; vakansiya atamasini ishlatmaslik (sklearn va scikit-learn); kalit so'z to'ldirish — dalilsiz uzun ro'yxat; ikki ustunli, jadvalli, rasmli dizayn; 2-3 sahifa (tajriba kam bo'lsa); rolni sarlavha bo'yicha tanlash (vazifalarni o'qimasdan); "ATS ni aldash" hiylalari; bir necha ariza natijasidan "bozor yomon" yoki "rezyume ajoyib" xulosasi — kichik namuna; voronkani o'lchamaslik; faqat ochiq e'lonlar kanaliga tayanish; maosh raqamlarini bitta manbadan olish.
3. Tez ma'lumotnoma
import re
from sklearn.feature_extraction.text import TfidfVectorizer
# 1) vakansiya talablari qamrovi (sinonimlar bilan)
LUGAT = {"scikit-learn": r"scikit-learn|\bsklearn\b", "sql": r"\bsql\b|postgres"}
bor = {k for k, p in LUGAT.items() if re.search(p, rezyume.lower())}
qamrov = sum(k in bor for k in majburiy) / len(majburiy)
# 2) TF-IDF o'xshashligi (so'z va harf n-gramlari - o'zbekcha qo'shimchalar uchun)
vek = TfidfVectorizer(analyzer="char_wb", ngram_range=(3, 5)).fit(korpus)
m = vek.transform([vakansiya, rezyume])
oxshash = (m[0] @ m[1].T).toarray()[0, 0]
# 3) punkt tekshiruvi: raqamli natija bormi?
RAQAM = r"\d[\d.,]*\s*(%|foiz|marta|soat|kun|mln|ming)|dan\s+[\d.,]+\s*ga\b"
natijali = bool(re.search(RAQAM, punkt.lower()))
# 4) voronka: kutilgan takliflar
kutilgan = ariza * p_javob * p_intervyu * p_taklifRezyume tekshiruv ro'yxati
| Tekshiruv | Savol |
|---|---|
| Hajm | 1 sahifa? eng kuchli bo'lim yuqorida? |
| Punkt | har punktda fe'l + nima + qanday + natija? |
| Raqam | natija bazaga nisbatanmi? intervyuda tushuntira olasizmi? |
| Hissa | "biz" emas, siz nima qildingiz? |
| Moslash | vakansiyaning majburiy atamalari (sizda bor bo'lsa) matnda bormi? |
| Dalil | muhim ko'nikma natijali punktda yoki loyihada ko'rinadimi? |
| Format | bir ustun, matnli PDF, standart bo'lim nomlari? |
| Havolalar | GitHub va portfolio ishlaydimi, README tushunarlimi (29.6, 29.7)? |
Rollar xulosasi
Analyst - "nima bo'ldi, nega?" SQL, BI, statistika, A/B
Scientist - "nima bo'ladi, nima qilsak?" ML, statistika, tajriba, tushuntirish
ML Engineer - "qanday ishlatamiz?" Python, PyTorch, API, Docker, test
MLOps - "hayot siklini avtomatlashtirish" CI/CD, registr, monitoring, bulut
Research - "yangi usul" matematika, PyTorch, maqolalar
punkt: fe'l + nima + qanday + natija (bazaga nisbatan, to'qimasdan)
voronka: ko'paytma -> eng past va eng arzon yaxshilanadigan bosqich4. Batafsil misollar
Misollar real numpy/scipy/sklearn bilan (Python 3.14). Har misol mustaqil ishlaydi; vakansiya, rezyume va konversiyalar sintetik yoki faraziy.
Misol 1 — Rezyume va vakansiyani moslash: TF-IDF va talablar qamrovi
"""Rezyume va vakansiyani moslash: TF-IDF o'xshashligi va talablar qamrovi."""
import re
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
# kanonik ko'nikma -> sinonimlar (regex); kichik harfda qidiriladi
LUGAT = {
"python": r"\bpython\b",
"pandas": r"\bpandas\b",
"numpy": r"\bnumpy\b",
"sql": r"\bsql\b|postgres|sqlite|mysql",
"scikit-learn": r"scikit-learn|\bsklearn\b",
"gradient boosting": r"gradient boosting|xgboost|lightgbm|catboost|histgradient",
"a/b test": r"\ba/b\b|\bab test",
"statistika": r"statistik|gipoteza",
"vizualizatsiya": r"vizualizatsiya|matplotlib|seaborn|plotly|dashboard",
"docker": r"\bdocker",
"git": r"\bgit\b|github",
"fastapi": r"fastapi",
"airflow": r"airflow",
"ingliz tili": r"ingliz|english|ielts",
"pytorch": r"pytorch|\btorch\b",
}
VAKANSIYA = """Data Scientist (bank, kredit riski bo'limi).
Majburiy: Python (pandas, NumPy), SQL, scikit-learn, gradient boosting modellari,
statistika va A/B test, natijalarni vizualizatsiya qilish, Git.
Afzallik: Docker, FastAPI, Airflow, ingliz tili (texnik hujjatlarni o'qish).
Vazifalar: kredit riskini bashorat qiluvchi modellarni qurish va monitoring,
biznes bo'limlari bilan ishlash, modellarni ishlab chiqarishga chiqarish."""
# rezyumelar: "kon" - ko'nikmalar qatori, "punkt" - tajriba/loyiha punktlari
REZYUMELAR = {
"A: boshlang'ich": {
"kon": "Python, sklearn, XGBoost, Excel, PostgreSQL, matplotlib",
"punkt": [
"Kredit to'lovlarini kechiktirish bo'yicha model ustida ishladim",
"Hisobotlar tayyorlashda yordam berdim",
"Ma'lumotlarni tozalash vazifalari menga yuklatilgan edi",
],
},
"B: tahrirlangan": {
"kon": ("Python (pandas, NumPy), SQL (PostgreSQL), scikit-learn, "
"gradient boosting (XGBoost), statistika, matplotlib, Git, "
"ingliz tili B2"),
"punkt": [
"Kredit to'lovi kechikishini bashorat qiluvchi gradient boosting "
"modelini qurdim: ROC-AUC 0.71 dan 0.78 ga oshdi",
"SQL va pandas bilan 1.2 mln qatorli tranzaksiyalardan 40 ta belgi "
"yaratdim, hisobot tayyorlash vaqti 3 kundan 4 soatga qisqardi",
"Eslatma SMS matni uchun A/B test o'tkazdim (statistika: 2 ta "
"proporsiya testi), to'lov ulushi 2.1 foiz punkt oshdi",
"Loyiha kodini Git da yuritdim, matplotlib bilan dashboard yasadim",
],
},
"C: kalit so'z to'ldirilgan": {
"kon": ("Python, pandas, NumPy, SQL, scikit-learn, gradient boosting, "
"statistika, A/B test, vizualizatsiya, Git, Docker, FastAPI, "
"Airflow, ingliz tili, kredit riski, monitoring, bank"),
"punkt": [
"Kredit riskini bashorat qiluvchi modellarni qurish va monitoring, "
"biznes bo'limlari bilan ishlash",
"Modellarni ishlab chiqarishga chiqarish, Docker, FastAPI, Airflow",
],
},
}
# TF-IDF uchun fon korpusi (sintetik vakansiyalar) - IDF ma'noli bo'lishi uchun
FON = [
"Data Analyst: SQL, Excel, Power BI dashboard, hisobotlar, biznes bilan ishlash",
"ML Engineer: Python, PyTorch, Docker, Kubernetes, modelni ishlab chiqarishga chiqarish",
"Data Scientist: Python, statistika, A/B test, mahsulot metrikalari, SQL",
"MLOps: Docker, Airflow, CI/CD, monitoring, Git, bulut",
"Junior Data Analyst: pandas, vizualizatsiya, SQL, statistika asoslari",
"NLP Engineer: PyTorch, transformerlar, matn klassifikatsiyasi, ingliz tili",
]
def konlar(matn):
"""Matnda topilgan kanonik ko'nikmalar (tartiblangan)."""
t = matn.lower()
return sorted(k for k, p in LUGAT.items() if re.search(p, t))
def talablar(vak):
"""Vakansiyadan majburiy va afzallik ko'nikmalarini ajratish."""
maj = vak.split("Majburiy:")[1].split("Afzallik:")[0]
afz = vak.split("Afzallik:")[1].split("Vazifalar:")[0]
return konlar(maj), konlar(afz)
def dalil_bor(punktlar, kon):
"""Ko'nikma raqamli natijasi bor punktda tilga olinganmi?"""
p = LUGAT[kon]
return any(re.search(p, s.lower()) and re.search(r"\d", s) for s in punktlar)
def main() -> None:
maj, afz = talablar(VAKANSIYA)
print("=== 1. Vakansiya talablari (lug'at bo'yicha) ===")
print(f" majburiy ({len(maj)}): {', '.join(maj)}")
print(f" afzallik ({len(afz)}): {', '.join(afz)}")
matnlar = {n: r["kon"] + ". " + ". ".join(r["punkt"])
for n, r in REZYUMELAR.items()}
korpus = [VAKANSIYA] + FON + list(matnlar.values())
sozli = TfidfVectorizer(sublinear_tf=True).fit(korpus)
harfli = TfidfVectorizer(analyzer="char_wb", ngram_range=(3, 5),
sublinear_tf=True).fit(korpus)
def kos(vek, a, b):
m = vek.transform([a, b])
return float((m[0] @ m[1].T).toarray()[0, 0])
print("\n=== 2. Rezyume va vakansiya: o'xshashlik va qamrov ===")
print(f" {'rezyume':<27} {'soz TF-IDF':>10} {'harf TF-IDF':>11} "
f"{'majburiy':>9} {'afzallik':>9} {'dalilli':>8}")
natija = {}
for nom, r in REZYUMELAR.items():
bor = set(konlar(matnlar[nom]))
qm = sum(k in bor for k in maj) / len(maj)
qa = sum(k in bor for k in afz) / len(afz)
dl = sum(dalil_bor(r["punkt"], k) for k in maj) / len(maj)
s1, s2 = kos(sozli, VAKANSIYA, matnlar[nom]), kos(harfli, VAKANSIYA, matnlar[nom])
natija[nom] = (s1, s2, qm, qa, dl, bor)
print(f" {nom:<27} {s1:>10.3f} {s2:>11.3f} {qm:>9.2f} {qa:>9.2f} {dl:>8.2f}")
print("\n=== 3. Qoplanmagan talablar ===")
for nom, (_, _, _, _, _, bor) in natija.items():
yoq_m = [k for k in maj if k not in bor]
yoq_a = [k for k in afz if k not in bor]
dalilsiz = [k for k in maj if k in bor
and not dalil_bor(REZYUMELAR[nom]["punkt"], k)]
print(f" {nom}")
print(f" majburiy yo'q: {', '.join(yoq_m) if yoq_m else '-'}")
print(f" afzallik yo'q: {', '.join(yoq_a) if yoq_a else '-'}")
print(f" bor, lekin natijali punktda yo'q: "
f"{', '.join(dalilsiz) if dalilsiz else '-'}")
print("\n=== 4. Sinonimsiz (aniq so'z) qidiruv nimani yo'qotadi? ===")
a_matn = matnlar["A: boshlang'ich"].lower()
for kon in maj:
aniq = kon in a_matn
sinonim = bool(re.search(LUGAT[kon], a_matn))
if aniq != sinonim:
print(f" A rezyumesida '{kon}': aniq so'z {aniq}, sinonim bilan {sinonim}")
print("\n=== 5. Xulosa (natijadan hisoblangan) ===")
a, b, c = (natija[k] for k in REZYUMELAR)
if c[0] > b[0]:
print(f" C ning so'z o'xshashligi B dan yuqori ({c[0]:.3f} > {b[0]:.3f}),")
print(f" lekin dalilli qamrov past ({c[4]:.2f} < {b[4]:.2f}) - "
"o'xshashlik sifat emas")
else:
print(f" B ning so'z o'xshashligi C dan yuqori yoki teng ({b[0]:.3f})")
print(f" A -> B: majburiy qamrov {a[2]:.2f} -> {b[2]:.2f}, "
f"dalilli {a[4]:.2f} -> {b[4]:.2f}")
print(" ⭐ Moslash = haqiqiy tajribani vakansiya tilida yozish, to'qish emas")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Vakansiya talablari (lug'at bo'yicha) ===
majburiy (10): a/b test, git, gradient boosting, numpy, pandas, python, scikit-learn, sql, statistika, vizualizatsiya
afzallik (4): airflow, docker, fastapi, ingliz tili
=== 2. Rezyume va vakansiya: o'xshashlik va qamrov ===
rezyume soz TF-IDF harf TF-IDF majburiy afzallik dalilli
A: boshlang'ich 0.071 0.174 0.50 0.00 0.00
B: tahrirlangan 0.237 0.263 1.00 0.25 0.50
C: kalit so'z to'ldirilgan 0.795 0.732 1.00 1.00 0.00
=== 3. Qoplanmagan talablar ===
A: boshlang'ich
majburiy yo'q: a/b test, git, numpy, pandas, statistika
afzallik yo'q: airflow, docker, fastapi, ingliz tili
bor, lekin natijali punktda yo'q: gradient boosting, python, scikit-learn, sql, vizualizatsiya
B: tahrirlangan
majburiy yo'q: -
afzallik yo'q: airflow, docker, fastapi
bor, lekin natijali punktda yo'q: git, numpy, python, scikit-learn, vizualizatsiya
C: kalit so'z to'ldirilgan
majburiy yo'q: -
afzallik yo'q: -
bor, lekin natijali punktda yo'q: a/b test, git, gradient boosting, numpy, pandas, python, scikit-learn, sql, statistika, vizualizatsiya
=== 4. Sinonimsiz (aniq so'z) qidiruv nimani yo'qotadi? ===
A rezyumesida 'gradient boosting': aniq so'z False, sinonim bilan True
A rezyumesida 'scikit-learn': aniq so'z False, sinonim bilan True
A rezyumesida 'vizualizatsiya': aniq so'z False, sinonim bilan True
=== 5. Xulosa (natijadan hisoblangan) ===
C ning so'z o'xshashligi B dan yuqori (0.795 > 0.237),
lekin dalilli qamrov past (0.00 < 0.50) - o'xshashlik sifat emas
A -> B: majburiy qamrov 0.50 -> 1.00, dalilli 0.00 -> 0.50
⭐ Moslash = haqiqiy tajribani vakansiya tilida yozish, to'qish emasNatija tahlili.
1-bo'lim — lug'at vakansiyadan 10 ta majburiy va 4 ta afzallik ko'nikmasini ajratdi. Bu "qidiruv" ning birinchi qadami: talablar ro'yxati aniq bo'lmasa, moslikni o'lchab bo'lmaydi. E'tibor bering: "kredit riski" yoki "biznes bo'limlari bilan ishlash" lug'atda yo'q — ular ham talab, lekin kalit so'z bilan emas, punkt mazmuni bilan ko'rsatiladi.
2-bo'lim — uch rezyume. A (boshlang'ich) vakansiyaga eng kam o'xshash: so'z TF-IDF 0.071, majburiy qamrov 0.50, dalilli qamrov 0.00 — birorta majburiy ko'nikma raqamli natijasi bor punktda tilga olinmagan. B (tahrirlangan) — xuddi shu odam, xuddi shu tajriba, lekin vakansiya tilida va natija bilan yozilgan: majburiy qamrov 1.00, dalilli 0.50, o'xshashlik 0.237. C (kalit so'z to'ldirilgan) vakansiya jumlalarini deyarli ko'chirib olgan: o'xshashlik 0.795 — B dan uch barobardan ko'p, afzallik qamrovi ham 1.00. Lekin dalilli qamrov 0.00: biror ko'nikma natija bilan ko'rsatilmagan.
Harf n-gramli TF-IDF so'zlikdan farq qiladi: A uchun 0.174 (so'zlikda 0.071). O'zbek tili agglyutinativ — "model", "modelini", "modellarni" so'zlik TF-IDF uchun uch xil so'z, harf n-gramlari esa umumiy "model" bo'lagini ushlaydi. Shuning uchun o'zbekcha matnda harf n-gramlari adolatliroq o'xshashlik beradi (23-qismdagi subword g'oyasiga o'xshash).
3-bo'lim — qaysi talab qoplanmagan. A da a/b test, git, numpy, pandas, statistika yo'q — lekin bu odam ularni bilardi (B da ular bor); u shunchaki yozmagan. B da majburiylarning hammasi bor, afzallikdan airflow, docker, fastapi yo'q — va bu halol: nomzod ularni bilmaydi, rezyumeda to'qimagan. Uchinchi qator eng foydali: B da git, numpy, python, scikit-learn, vizualizatsiya ro'yxatda bor, lekin natijali punktda ko'rinmaydi. Masalan, "scikit-learn" ni gradient boosting punktiga qo'shish ("scikit-learn va XGBoost bilan ...") dalilni kuchaytiradi.
4-bo'lim — sinonimsiz qidiruv. Agar qidiruv faqat aniq so'zni izlasa, A rezyumesida gradient boosting (XGBoost yozilgan), scikit-learn (sklearn) va vizualizatsiya (matplotlib) topilmaydi. Real tizim sinonimlarni tushunadimi — noma'lum 2.6-bob, shuning uchun xavfsiz yo'l: vakansiya atamasi va o'zingizning atamangizni birga yozish — "scikit-learn (sklearn)".
5-bo'lim — asosiy saboq natijadan hisoblandi: C ning o'xshashligi B dan yuqori (0.795 > 0.237), lekin dalilli qamrov past (0.00 < 0.50). O'xshashlik — matnlar qanchalik bir xil so'zlardan iboratligi, sifat emas. Odam (HR yoki texnik intervyuer) C ni o'qiganda "bu vakansiya matnining nusxasi" deb darhol ko'radi. Moslash — haqiqiy tajribani vakansiya tilida yozish, yangi tajriba to'qish emas.
Misol 2 — Rezyume punktlarini qoidaviy tahlil
"""Rezyume punktlarini qoidaviy tahlil: fe'l, raqamli natija, vosita, uzunlik, passiv."""
import re
import numpy as np
FEL_UZ = ["qurdim", "ishlab chiqdim", "kamaytirdim", "oshirdim", "yaratdim",
"avtomatlashtirdim", "joriy qildim", "tahlil qildim", "o'tkazdim",
"optimallashtirdim", "qisqartirdim", "chiqardim", "tayyorladim",
"boshqardim", "yozdim"]
FEL_EN = ["built", "reduced", "designed", "automated", "deployed", "increased",
"analyzed", "led", "developed", "cut", "improved", "created"]
PASSIV = ["yordam berdim", "ishtirok etdim", "mas'ul edim", "yuklatilgan",
"ustida ishladim", "shug'ullandim", "tanishman", "vazifalarimga",
"responsible for", "worked on", "helped", "assisted", "involved in",
"duties included"]
VOSITA = r"python|sql|pandas|sklearn|scikit|xgboost|lightgbm|docker|fastapi|" \
r"airflow|pytorch|a/b|gradient boosting|logistik|tf-idf|dashboard|" \
r"bootstrap|random forest"
RAQAM = (r"\d[\d.,]*\s*(%|foiz|marta|soat|kun|daqiqa|mln|ming|ta\b|x\b)"
r"|dan\s+[\d.,]+\s*(%|foiz|soat|kun|daqiqa|mln|ming)?\s*ga\b"
r"|from\s+[\d.,]+\s*\S*\s+to\s+[\d.,]+|by\s+\d")
# (yomon, yaxshi) juftlari - bir xil tajriba, ikki xil yozuv
JUFTLAR = [
("Kredit modeli ustida ishladim",
"Kredit to'lovi kechikishini bashorat qiluvchi gradient boosting modelini "
"qurdim, ROC-AUC 0.71 dan 0.78 ga oshdi"),
("Hisobotlar tayyorlashda yordam berdim",
"Haftalik savdo hisobotini SQL va pandas bilan avtomatlashtirdim, "
"tayyorlash vaqti 6 soatdan 20 daqiqaga qisqardi"),
("Ma'lumotlarni tozalash vazifalari menga yuklatilgan edi",
"Tranzaksiyalar jadvalidagi takror va xato yozuvlarni topuvchi pandas "
"skriptini yozdim, xato yozuvlar ulushi 4.2% dan 0.3% ga tushdi"),
("Jamoa bilan A/B test o'tkazdik va natijalarni ko'rib chiqdik",
"SMS eslatma matni uchun A/B test dizaynini tuzdim va natijani "
"tahlil qildim: to'lov ulushi 2.1 foiz punkt oshdi (p = 0.01)"),
("Responsible for machine learning models and data pipelines",
"Built a churn model in scikit-learn and deployed it with FastAPI, "
"reducing monthly churn by 1.5 percentage points"),
("Worked on dashboards",
"Designed a sales dashboard in Python used by 12 regional managers, "
"cutting ad-hoc report requests from 30 to 8 per month"),
]
# shakli "mukammal", mazmuni noaniq - qoidalar chegarasini ko'rsatish uchun
TOZA = "muammo yo'q"
BOSH = "Python bilan samaradorlikni 10 marta oshirdim va 100% natijaga erishdim"
def tahlil(s):
t = s.lower()
en = bool(re.match(r"[a-z]", t)) and any(w in t.split() for w in ["the", "a", "in", "with", "and", "on", "for"])
if en:
fel = t.split()[0] in FEL_EN
else:
fel = any(f in t for f in FEL_UZ)
raqam = bool(re.search(RAQAM, t))
vosita = bool(re.search(VOSITA, t))
n = len(s.split())
passiv = [p for p in PASSIV if p in t]
biz = bool(re.search(r"\b\w+(dik|dikmi)\b", t)) or " we " in f" {t} "
ball = (2 * fel + 2 * raqam + vosita + (10 <= n <= 35)
+ (not passiv) - biz)
belgi = []
if not fel:
belgi.append("faol fe'l yo'q")
if not raqam:
belgi.append("natija raqamsiz")
if not vosita:
belgi.append("vosita/usul yo'q")
if not 10 <= n <= 35:
belgi.append(f"uzunlik {n} so'z")
if passiv:
belgi.append("passiv: " + passiv[0])
if biz:
belgi.append("'biz' - shaxsiy hissa noaniq")
return int(ball), belgi, n
def main() -> None:
print("=== 1. Juftlar: yomon va yaxshi yozuv (maks ball 7) ===")
yomon, yaxshi = [], []
sabablar = {}
for i, (a, b) in enumerate(JUFTLAR, 1):
ba, fa, _ = tahlil(a)
bb, fb, _ = tahlil(b)
yomon.append(ba)
yaxshi.append(bb)
for f in fa:
k = "uzunlik" if f.startswith("uzunlik") else f.split(":")[0]
sabablar[k] = sabablar.get(k, 0) + 1
print(f" {i}. yomon {ba}/7 {'; '.join(fa) if fa else TOZA}")
print(f" yaxshi {bb}/7 {'; '.join(fb) if fb else TOZA}")
print("\n=== 2. Juftlashgan farq ===")
d = np.array(yaxshi) - np.array(yomon)
se = d.std(ddof=1) / np.sqrt(len(d))
print(f" o'rtacha ball: yomon {np.mean(yomon):.2f}, yaxshi {np.mean(yaxshi):.2f}")
print(f" farq {d.mean():+.2f} (SE {se:.2f}), sezilarli: {d.mean() > 2 * se}")
print("\n=== 3. Yomon punktlarda eng ko'p uchragan muammolar ===")
for k, v in sorted(sabablar.items(), key=lambda x: (-x[1], x[0])):
print(f" {k:<30} {v}/{len(JUFTLAR)}")
print("\n=== 4. Qoidalar chegarasi: shakli to'g'ri, mazmuni bo'sh ===")
b, f, n = tahlil(BOSH)
print(f" '{BOSH}'")
print(f" ball {b}/7, belgilar: {'; '.join(f) if f else TOZA}")
if b >= np.mean(yaxshi):
print(" qoidalar buni 'yaxshi' deb baholadi - lekin nima, qaysi")
print(" metrika, qanday bazaga nisbatan? Qoida shaklni, odam mazmunni tekshiradi")
print("\n=== 5. Xulosa ===")
if d.mean() > 2 * se:
print(f" qayta yozish har juftda ballni oshirdi: min farq {d.min():+d}, "
f"maks {d.max():+d}")
print(" ⭐ Formula: fe'l + nima + qanday + o'lchanadigan natija (bazaga nisbatan)")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Juftlar: yomon va yaxshi yozuv (maks ball 7) ===
1. yomon 0/7 faol fe'l yo'q; natija raqamsiz; vosita/usul yo'q; uzunlik 4 so'z; passiv: ustida ishladim
yaxshi 7/7 muammo yo'q
2. yomon 0/7 faol fe'l yo'q; natija raqamsiz; vosita/usul yo'q; uzunlik 4 so'z; passiv: yordam berdim
yaxshi 7/7 muammo yo'q
3. yomon 0/7 faol fe'l yo'q; natija raqamsiz; vosita/usul yo'q; uzunlik 6 so'z; passiv: yuklatilgan
yaxshi 7/7 muammo yo'q
4. yomon 1/7 faol fe'l yo'q; natija raqamsiz; uzunlik 9 so'z; 'biz' - shaxsiy hissa noaniq
yaxshi 7/7 muammo yo'q
5. yomon 0/7 faol fe'l yo'q; natija raqamsiz; vosita/usul yo'q; uzunlik 8 so'z; passiv: responsible for
yaxshi 7/7 muammo yo'q
6. yomon 1/7 faol fe'l yo'q; natija raqamsiz; uzunlik 3 so'z; passiv: worked on
yaxshi 7/7 muammo yo'q
=== 2. Juftlashgan farq ===
o'rtacha ball: yomon 0.33, yaxshi 7.00
farq +6.67 (SE 0.21), sezilarli: True
=== 3. Yomon punktlarda eng ko'p uchragan muammolar ===
faol fe'l yo'q 6/6
natija raqamsiz 6/6
uzunlik 6/6
passiv 5/6
vosita/usul yo'q 4/6
'biz' - shaxsiy hissa noaniq 1/6
=== 4. Qoidalar chegarasi: shakli to'g'ri, mazmuni bo'sh ===
'Python bilan samaradorlikni 10 marta oshirdim va 100% natijaga erishdim'
ball 7/7, belgilar: muammo yo'q
qoidalar buni 'yaxshi' deb baholadi - lekin nima, qaysi
metrika, qanday bazaga nisbatan? Qoida shaklni, odam mazmunni tekshiradi
=== 5. Xulosa ===
qayta yozish har juftda ballni oshirdi: min farq +6, maks +7
⭐ Formula: fe'l + nima + qanday + o'lchanadigan natija (bazaga nisbatan)Natija tahlili.
1-bo'lim — oltita juft: bir xil tajriba, ikki xil yozuv. Yomon punktlar 0/7 yoki 1/7, yaxshilari 7/7. Muammolar ro'yxati har yomon punkt uchun aniq nima yetishmasligini ko'rsatadi: "Kredit modeli ustida ishladim" — faol fe'l yo'q, natija raqamsiz, vosita yo'q, 4 so'z, passiv ibora ("ustida ishladim"). Inglizcha punktlar ham xuddi shu qoidalar bilan tekshirildi, faqat fe'l boshida qidiriladi ("Built ...", "Designed ...") — 2.4 dagi farq.
2-bo'lim — juftlashgan farq: o'rtacha 0.33 dan 7.00 ga, farq +6.67 (SE 0.21), 2*SE dan ancha katta. Halol eslatma: yaxshi punktlar formulaga qarab yozilgan, shuning uchun 7/7 kutilgan natija — bu tekshiruvchi "yaxshi" punktni emas, formulaga mos punktni topadi. Uning foydasi — o'z rezyumengizdagi punktlarni tez skanerlab, qaysi biri formulaga umuman mos emasligini ko'rsatish.
3-bo'lim — yomon punktlarda eng ko'p uchragan muammolar: faol fe'l yo'q (6/6), natija raqamsiz (6/6), uzunlik chegaradan tashqarida (6/6 — hammasi juda qisqa), passiv ibora (5/6). Bu tasodif emas: "vazifa yozish" uslubida bu to'rt muammo doim birga keladi. Bitta qoidani tuzatish (masalan, raqam qo'shish) yetmaydi — punktni butunlay qayta qurish kerak.
4-bo'lim — qoidalar chegarasi. "Python bilan samaradorlikni 10 marta oshirdim va 100% natijaga erishdim" — 7/7, hech qanday muammo topilmadi. Lekin bu punkt bo'sh: qanday samaradorlik? nimaning 10 marta? qaysi bazaga nisbatan? "100% natija" nima? Intervyuda birinchi savoldayoq yiqiladi. Qoidaviy tekshiruv — shakl filtri; mazmunni odam tekshiradi. Vazifa 4 da "bazaga nisbatan" qoidasini qo'shib, bunday punktni ushlashga harakat qilamiz — lekin har qanday qoidani "aldash" mumkin, shuning uchun oxirgi tekshiruvchi — o'zingizning halolligingiz.
5-bo'lim — qayta yozish har juftda ballni oshirdi: eng kichik farq +6, eng katta +7.
Misol 3 — Ko'nikmalar bo'shlig'i: sintetik vakansiyalar to'plami
"""Ko'nikmalar bo'shlig'i: sintetik vakansiyalar to'plamidan talab va shaxsiy farq."""
import re
import numpy as np
# ko'nikma -> matnda yozilish variantlari (generator ishlatadi)
VARIANT = {
"python": ["Python", "Python 3"],
"sql": ["SQL", "PostgreSQL", "murakkab SQL so'rovlari"],
"pandas": ["pandas"],
"numpy": ["NumPy"],
"excel": ["Excel", "MS Excel"],
"bi": ["Power BI", "Tableau", "BI vositalari"],
"statistika": ["statistika", "matematik statistika", "gipoteza testlari"],
"a/b test": ["A/B test", "A/B testlar"],
"vizualizatsiya": ["vizualizatsiya", "matplotlib", "grafiklar bilan ishlash"],
"scikit-learn": ["scikit-learn", "sklearn"],
"gradient boosting": ["gradient boosting", "XGBoost", "LightGBM", "CatBoost"],
"pytorch": ["PyTorch", "torch"],
"nlp": ["NLP", "matn bilan ishlash"],
"docker": ["Docker"],
"kubernetes": ["Kubernetes", "k8s"],
"airflow": ["Airflow"],
"git": ["Git", "GitHub"],
"fastapi": ["FastAPI", "REST API"],
"bulut": ["bulut platformalari", "cloud"],
"spark": ["Spark", "PySpark"],
"ingliz tili": ["ingliz tili", "English"],
}
# ajratuvchi lug'at (tahlilchi yozadi) - ataylab to'liq emas: "k8s",
# "REST API", "grafiklar bilan ishlash", "cloud" yo'q
LUGAT = {
"python": r"\bpython\b", "sql": r"\bsql\b|postgres", "pandas": r"pandas",
"numpy": r"numpy", "excel": r"excel", "bi": r"power bi|tableau|\bbi\b",
"statistika": r"statistik|gipoteza", "a/b test": r"a/b",
"vizualizatsiya": r"vizualizatsiya|matplotlib",
"scikit-learn": r"scikit|sklearn",
"gradient boosting": r"gradient boosting|xgboost|lightgbm|catboost",
"pytorch": r"pytorch|\btorch\b", "nlp": r"\bnlp\b|matn bilan",
"docker": r"docker", "kubernetes": r"kubernetes", "airflow": r"airflow",
"git": r"\bgit\b|github", "fastapi": r"fastapi", "bulut": r"bulut",
"spark": r"spark", "ingliz tili": r"ingliz|english",
}
# rol -> (ulush, {ko'nikma: talab ehtimoli}) - FARAZIY, biz belgilaganmiz
ROLLAR = {
"Data Analyst": (0.40, {"sql": 0.9, "excel": 0.7, "bi": 0.6, "python": 0.6,
"pandas": 0.4, "statistika": 0.5, "a/b test": 0.3,
"vizualizatsiya": 0.6, "ingliz tili": 0.3, "git": 0.1}),
"Data Scientist": (0.30, {"python": 0.95, "sql": 0.8, "pandas": 0.7,
"numpy": 0.4, "statistika": 0.7, "a/b test": 0.4,
"scikit-learn": 0.7, "gradient boosting": 0.5,
"pytorch": 0.3, "nlp": 0.2, "git": 0.5,
"docker": 0.3, "vizualizatsiya": 0.4,
"ingliz tili": 0.5, "spark": 0.15}),
"ML Engineer": (0.20, {"python": 0.95, "pytorch": 0.6, "docker": 0.7,
"kubernetes": 0.4, "git": 0.8, "fastapi": 0.5,
"sql": 0.5, "scikit-learn": 0.4, "bulut": 0.5,
"nlp": 0.3, "ingliz tili": 0.6, "airflow": 0.2}),
"MLOps": (0.10, {"python": 0.8, "docker": 0.9, "kubernetes": 0.7,
"airflow": 0.5, "git": 0.9, "bulut": 0.7, "fastapi": 0.3,
"spark": 0.2, "ingliz tili": 0.6}),
}
KON = "ko'nikma"
MENIKI = {"python", "sql", "pandas", "numpy", "statistika", "scikit-learn",
"vizualizatsiya", "git"}
def yarat(rng, n):
nomlar = list(ROLLAR)
ulush = np.array([ROLLAR[r][0] for r in nomlar])
vak = []
for _ in range(n):
rol = nomlar[rng.choice(len(nomlar), p=ulush)]
talab = sorted(k for k, p in ROLLAR[rol][1].items() if rng.random() < p)
qism = [VARIANT[k][rng.integers(len(VARIANT[k]))] for k in talab]
rng.shuffle(qism)
matn = f"{rol}. Talablar: " + ", ".join(qism) + "."
vak.append((rol, set(talab), matn))
return vak
def ajrat(matn):
t = matn.lower()
return {k for k, p in LUGAT.items() if re.search(p, t)}
def mos_ulush(vak, konlar, chegara=0.8):
"""Vakansiya talablarining kamida 80% i bor bo'lgan vakansiyalar ulushi."""
ok = [len(t & konlar) / len(t) >= chegara for t in vak if t]
return float(np.mean(ok))
def main() -> None:
rng = np.random.default_rng(29)
vak = yarat(rng, 600)
print("=== 1. Sintetik vakansiyalar (ehtimollar faraziy, real bozor EMAS) ===")
for rol in ROLLAR:
print(f" {rol:<15} {sum(v[0] == rol for v in vak):>4} ta")
print(f" namuna: {vak[0][2]}")
print("\n=== 2. Ajratuvchi sifati (haqiqiy talablar ma'lum) ===")
tp = fp = fn = 0
otkazdi = {}
for _, haq, matn in vak:
top = ajrat(matn)
tp += len(top & haq)
fp += len(top - haq)
fn += len(haq - top)
for k in haq - top:
otkazdi[k] = otkazdi.get(k, 0) + 1
print(f" precision {tp / (tp + fp):.3f}, recall {tp / (tp + fn):.3f}")
for k, v in sorted(otkazdi.items(), key=lambda x: (-x[1], x[0])):
print(f" o'tkazib yuborilgan: {k:<15} {v:>4} marta")
ds = [ajrat(m) for r, _, m in vak if r == "Data Scientist"]
ds_haq = [h for r, h, _ in vak if r == "Data Scientist"]
n = len(ds)
print(f"\n=== 3. Data Scientist vakansiyalari (n={n}): talab va shaxsiy farq ===")
print(f" {KON:<18} {'ulush':>6} {'95% CI':>13} {'haqiqiy':>8} {'menda':>6}")
chastota = {}
for k in LUGAT:
p = np.mean([k in s for s in ds])
chastota[k] = p
for k, p in sorted(chastota.items(), key=lambda x: (-x[1], x[0])):
if p < 0.1:
continue
se = np.sqrt(p * (1 - p) / n)
h = np.mean([k in s for s in ds_haq])
print(f" {k:<18} {p:>6.2f} [{max(0, p - 2 * se):.2f}, {min(1, p + 2 * se):.2f}]"
f" {h:>8.2f} {'ha' if k in MENIKI else '-':>6}")
print("\n=== 4. Qaysi ko'nikmani keyin o'rganish kerak? ===")
boshi = mos_ulush(ds, MENIKI)
print(f" hozir mos (talablarning >=80% i bor) vakansiyalar: {boshi:.3f}")
nomzod = sorted(k for k in LUGAT if k not in MENIKI)
chast_tartib = sorted(nomzod, key=lambda k: (-chastota[k], k))[:3]
kon, ochko = set(MENIKI), boshi
ochko_ch = []
for k in chast_tartib:
kon.add(k)
ochko_ch.append(mos_ulush(ds, kon))
kon, ochko_g, tanlov_g = set(MENIKI), [], []
for _ in range(3):
eng = max(nomzod, key=lambda k: (mos_ulush(ds, kon | {k}), -nomzod.index(k))
if k not in kon else (-1, 0))
kon.add(eng)
tanlov_g.append(eng)
ochko_g.append(mos_ulush(ds, kon))
print(f" chastota bo'yicha: {' -> '.join(chast_tartib)}")
print(f" mos ulush: {' -> '.join(f'{x:.3f}' for x in ochko_ch)}")
print(f" qamrov bo'yicha (ochko'z): {' -> '.join(tanlov_g)}")
print(f" mos ulush: {' -> '.join(f'{x:.3f}' for x in ochko_g)}")
print("\n=== 5. Xulosa (natijadan hisoblangan) ===")
birinchi = tanlov_g[0]
print(f" birinchi o'rganiladigan: {birinchi} "
f"(mos ulush {boshi:.3f} -> {ochko_g[0]:.3f})")
if tanlov_g != chast_tartib:
print(" chastota va qamrov tartibi farq qiladi - 'eng ko'p so'raladigan'")
print(" har doim 'eng ko'p eshik ochadigan' emas")
else:
print(" bu ma'lumotda chastota va qamrov tartibi bir xil")
print(" ⭐ Ma'lumot sintetik: xulosa biz bergan ehtimollarni aks ettiradi")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Sintetik vakansiyalar (ehtimollar faraziy, real bozor EMAS) ===
Data Analyst 242 ta
Data Scientist 191 ta
ML Engineer 110 ta
MLOps 57 ta
namuna: Data Analyst. Talablar: SQL, grafiklar bilan ishlash, Power BI, English, Python 3, MS Excel, gipoteza testlari, pandas.
=== 2. Ajratuvchi sifati (haqiqiy talablar ma'lum) ===
precision 1.000, recall 0.943
o'tkazib yuborilgan: vizualizatsiya 74 marta
o'tkazib yuborilgan: kubernetes 48 marta
o'tkazib yuborilgan: bulut 47 marta
o'tkazib yuborilgan: fastapi 40 marta
=== 3. Data Scientist vakansiyalari (n=191): talab va shaxsiy farq ===
ko'nikma ulush 95% CI haqiqiy menda
python 0.97 [0.95, 1.00] 0.97 ha
sql 0.83 [0.77, 0.88] 0.83 ha
scikit-learn 0.73 [0.67, 0.80] 0.73 ha
pandas 0.71 [0.64, 0.77] 0.71 ha
statistika 0.69 [0.62, 0.75] 0.69 ha
ingliz tili 0.55 [0.48, 0.63] 0.55 -
git 0.47 [0.40, 0.54] 0.47 ha
gradient boosting 0.47 [0.39, 0.54] 0.47 -
a/b test 0.42 [0.35, 0.49] 0.42 -
numpy 0.39 [0.32, 0.46] 0.39 ha
vizualizatsiya 0.28 [0.22, 0.35] 0.42 ha
docker 0.28 [0.21, 0.34] 0.28 -
pytorch 0.23 [0.17, 0.29] 0.23 -
nlp 0.19 [0.13, 0.25] 0.19 -
spark 0.15 [0.10, 0.20] 0.15 -
=== 4. Qaysi ko'nikmani keyin o'rganish kerak? ===
hozir mos (talablarning >=80% i bor) vakansiyalar: 0.225
chastota bo'yicha: ingliz tili -> gradient boosting -> a/b test
mos ulush: 0.424 -> 0.613 -> 0.817
qamrov bo'yicha (ochko'z): ingliz tili -> a/b test -> gradient boosting
mos ulush: 0.424 -> 0.644 -> 0.817
=== 5. Xulosa (natijadan hisoblangan) ===
birinchi o'rganiladigan: ingliz tili (mos ulush 0.225 -> 0.424)
chastota va qamrov tartibi farq qiladi - 'eng ko'p so'raladigan'
har doim 'eng ko'p eshik ochadigan' emas
⭐ Ma'lumot sintetik: xulosa biz bergan ehtimollarni aks ettiradiNatija tahlili.
1-bo'lim — 600 ta sintetik vakansiya: Data Analyst 242, Data Scientist 191, ML Engineer 110, MLOps 57. Rollar ulushi va har ko'nikmaning talab ehtimoli biz tomonimizdan berilgan (faraziy) — bu real bozor haqida hech narsa demaydi. Misolning maqsadi — usulni ko'rsatish: xuddi shu kodni o'zingiz yig'gan haqiqiy e'lonlar matniga qo'llaysiz.
2-bo'lim — ajratuvchining sifati. Sintetik ma'lumotning afzalligi: haqiqiy talablar ma'lum, shuning uchun lug'atning xatosini o'lchay olamiz. Precision 1.000 (topgan narsasi doim to'g'ri), recall 0.943 — har 100 ta talabdan ~6 tasi o'tkazib yuborildi. Qaysilari: vizualizatsiya (74 marta — "grafiklar bilan ishlash" lug'atda yo'q), kubernetes (48 — "k8s"), bulut (47 — "cloud"), fastapi (40 — "REST API"). Haqiqiy e'lonlarda bu muammo kattaroq: atamalar, xatolar, uch tildagi yozuvlar. Ajratuvchini tekshirmasdan chastota jadvaliga ishonish — 06-qismdagi "ma'lumot sifatini tekshirmasdan tahlil" xatosi.
3-bo'lim — Data Scientist vakansiyalarida (n=191) ko'nikmalar ulushi va 95% oraliq. Eng ko'p so'raladiganlar: python 0.97, sql 0.83, scikit-learn 0.73, pandas 0.71, statistika 0.69 — hammasi "menda" bor. Bo'shliq: ingliz tili (0.55), gradient boosting (0.47), a/b test (0.42), docker (0.28). "Haqiqiy" ustuni ajratuvchi xatosining oqibatini ko'rsatadi: vizualizatsiya ulushi 0.28, haqiqiy qiymati esa 0.42 — lug'at sinonimni bilmagani uchun ko'nikma kam talab qilinadigandek ko'rinadi. Qolgan ko'nikmalarda farq yo'q. Oraliqlar kengligiga ham qarang: gradient boosting [0.39, 0.54] va a/b test [0.35, 0.49] ustma-ust tushadi — 191 vakansiyada ularning tartibi ishonchli emas.
4-bo'lim — qaysi ko'nikmani keyin o'rganish kerak? Hozir mos vakansiyalar (talablarning kamida 80% i bor) — 0.225. Chastota bo'yicha tartib: ingliz tili → gradient boosting → a/b test, mos ulush 0.424 → 0.613 → 0.817. Qamrov bo'yicha ochko'z tanlov: ingliz tili → a/b test → gradient boosting, 0.424 → 0.644 → 0.817. Ikkinchi qadamda a/b test kamroq so'ralsa ham ko'proq vakansiyani "mos" holatga o'tkazdi (0.644 va 0.613) — chunki u ko'pincha nomzodda qolgan talablar kam bo'lgan vakansiyalarda uchraydi. Uchinchi qadamdan keyin ikkala yo'l bir joyga keladi (0.817).
5-bo'lim — xulosa natijadan: birinchi o'rganiladigan — ingliz tili (0.225 → 0.424). Halol baho: ikkinchi qadamdagi farq 0.031, ya'ni 191 vakansiyadan ~6 tasi — kichik va boshqa namunada o'zgarishi mumkin. Asosiy saboq aniq raqamda emas, savolda: "eng ko'p so'raladigan ko'nikma qaysi?" emas, "qaysi ko'nikma eng ko'p eshikni ochadi?" — bu savolga javob ko'nikmalarning birga uchrashiga bog'liq. Va yana bir marta: ma'lumot sintetik — xulosa biz bergan ehtimollarni aks ettiradi.
Misol 4 — Ariza voronkasi: faraziy konversiyalar bilan simulyatsiya
"""Ariza voronkasi: faraziy konversiyalar bilan simulyatsiya va tor joyni topish."""
import numpy as np
from scipy import stats
HAFTA = 8
N_SIM = 20_000
# FARAZIY konversiyalar - real bozor raqamlari emas, faqat mexanizmni ko'rsatish uchun
BAZA = {"ariza": 16, "javob": 0.06, "intervyu": 0.50, "taklif": 0.20}
STSENARIY = {
"baza": {},
"ariza soni x1.5": {"ariza": 24},
"javob x1.5 (moslangan rezyume)": {"javob": 0.09},
"intervyu x1.5 (HR suhbatiga tayyorgarlik)": {"intervyu": 0.75},
"taklif x1.5 (texnik tayyorgarlik)": {"taklif": 0.30},
"javob +5 p.p.": {"javob": 0.11},
"intervyu +5 p.p.": {"intervyu": 0.55},
"taklif +5 p.p.": {"taklif": 0.25},
"ommaviy: 48 ariza, javob 0.025": {"ariza": 48, "javob": 0.025},
"maqsadli: 8 ariza, javob 0.18": {"ariza": 8, "javob": 0.18},
}
def simulyatsiya(rng, par):
"""Har hafta: ariza -> javob -> intervyu -> taklif (binomial zanjir)."""
a = np.full((N_SIM, HAFTA), par["ariza"])
j = rng.binomial(a, par["javob"])
i = rng.binomial(j, par["intervyu"])
t = rng.binomial(i, par["taklif"])
kum = t.cumsum(axis=1)
bor = kum[:, -1] > 0
birinchi = np.where(bor, (kum > 0).argmax(axis=1) + 1, HAFTA + 1)
return bor, birinchi, t.sum(axis=1), i.sum(axis=1)
def main() -> None:
rng = np.random.default_rng(8)
print(f"=== 1. Stsenariylar ({HAFTA} hafta, {N_SIM} simulyatsiya, FARAZIY) ===")
print(f" {'stsenariy':<42} {'kutilgan':>8} {'P(>=1)':>7} {'SE':>6} "
f"{'intervyu':>8}")
nat = {}
for nom, o in STSENARIY.items():
par = {**BAZA, **o}
kut = HAFTA * par["ariza"] * par["javob"] * par["intervyu"] * par["taklif"]
bor, birinchi, _, iv = simulyatsiya(rng, par)
p = bor.mean()
se = np.sqrt(p * (1 - p) / N_SIM)
nat[nom] = (kut, p, se, bor)
print(f" {nom:<42} {kut:>8.2f} {p:>7.3f} {se:>6.3f} {iv.mean():>8.1f}")
print("\n=== 2. Bir xil NISBIY yaxshilanish (x1.5) - qaysi bosqich? ===")
nisbiy = [k for k in STSENARIY if "x1.5" in k]
kut = [nat[k][0] for k in nisbiy]
print(f" kutilgan takliflar: {', '.join(f'{x:.2f}' for x in kut)}")
if max(kut) - min(kut) < 1e-9:
print(" hammasi bir xil: voronka ko'paytma, x1.5 qayerda bo'lmasin - x1.5")
print(" demak savol 'qaysi bosqich' emas, 'qaysi bosqichni ARZONROQ x1.5 qilish'")
print("\n=== 3. Bir xil MUTLAQ yaxshilanish (+5 p.p.) ===")
baza_p = nat["baza"][1]
for k in [k for k in STSENARIY if "p.p." in k]:
kut_k, p, se, _ = nat[k]
d = p - baza_p
se_d = np.sqrt(se ** 2 + nat["baza"][2] ** 2)
print(f" {k:<18} kutilgan x{kut_k / nat['baza'][0]:.2f}, P(>=1) "
f"{p:.3f} (farq {d:+.3f}, SE {se_d:.3f}, sezilarli {d > 2 * se_d})")
eng = max([k for k in STSENARIY if "p.p." in k], key=lambda k: nat[k][0])
print(f" eng katta foyda: {eng} - eng past konversiyali bosqichda nisbiy o'sish katta")
print("\n=== 4. Ommaviy va maqsadli strategiya ===")
for k in ["baza", "ommaviy: 48 ariza, javob 0.025", "maqsadli: 8 ariza, javob 0.18"]:
kut_k, p, se, _ = nat[k]
ish = BAZA["ariza"] if k == "baza" else STSENARIY[k]["ariza"]
print(f" {k:<32} haftasiga {ish:>2} ariza, kutilgan {kut_k:.2f}, "
f"P(>=1) {p:.3f}")
om, mq = nat["ommaviy: 48 ariza, javob 0.025"], nat["maqsadli: 8 ariza, javob 0.18"]
if mq[0] >= om[0]:
print(f" maqsadli strategiya 6 barobar kam ariza bilan kutilgan "
f"{mq[0]:.2f} >= {om[0]:.2f}")
else:
print(" bu faraziy raqamlarda ommaviy strategiya ko'proq taklif beradi")
print("\n=== 5. O'z voronkangiz: kichik sonlardan tor joyni topish ===")
kuzat = [("ariza->javob", 70, 1, BAZA["javob"]),
("javob->intervyu", 1, 1, BAZA["intervyu"]),
("intervyu->taklif", 1, 0, BAZA["taklif"])]
for nom, n, k, mezon in kuzat:
post = stats.beta(1 + k, 1 + n - k) # tekis prior, Bayes (9.4)
lo, hi = post.ppf([0.05, 0.95])
p_past = post.cdf(mezon)
print(f" {nom:<17} {k:>2}/{n:<3} = {k / n:.3f}, 90% oraliq "
f"[{lo:.3f}, {hi:.3f}], P(p < {mezon}) = {p_past:.2f}")
print(" xulosa (P > 0.9 bo'lsa 'tor joy', aks holda 'ma'lumot kam'):")
for nom, n, k, mezon in kuzat:
p_past = stats.beta(1 + k, 1 + n - k).cdf(mezon)
hukm = "tor joy" if p_past > 0.9 else "ma'lumot kam - xulosa qilmang"
print(f" {nom:<17} {hukm}")
print(" ⭐ Voronka - ko'paytma; avval eng past va eng arzon yaxshilanadigan bosqich")
if __name__ == "__main__":
main()Natijaning muhim qismi:
=== 1. Stsenariylar (8 hafta, 20000 simulyatsiya, FARAZIY) ===
stsenariy kutilgan P(>=1) SE intervyu
baza 0.77 0.541 0.004 3.8
ariza soni x1.5 1.15 0.683 0.003 5.8
javob x1.5 (moslangan rezyume) 1.15 0.688 0.003 5.8
intervyu x1.5 (HR suhbatiga tayyorgarlik) 1.15 0.686 0.003 5.8
taklif x1.5 (texnik tayyorgarlik) 1.15 0.683 0.003 3.8
javob +5 p.p. 1.41 0.757 0.003 7.0
intervyu +5 p.p. 0.84 0.572 0.003 4.2
taklif +5 p.p. 0.96 0.623 0.003 3.9
ommaviy: 48 ariza, javob 0.025 0.96 0.617 0.003 4.8
maqsadli: 8 ariza, javob 0.18 1.15 0.688 0.003 5.8
=== 2. Bir xil NISBIY yaxshilanish (x1.5) - qaysi bosqich? ===
kutilgan takliflar: 1.15, 1.15, 1.15, 1.15
hammasi bir xil: voronka ko'paytma, x1.5 qayerda bo'lmasin - x1.5
demak savol 'qaysi bosqich' emas, 'qaysi bosqichni ARZONROQ x1.5 qilish'
=== 3. Bir xil MUTLAQ yaxshilanish (+5 p.p.) ===
javob +5 p.p. kutilgan x1.83, P(>=1) 0.757 (farq +0.216, SE 0.005, sezilarli True)
intervyu +5 p.p. kutilgan x1.10, P(>=1) 0.572 (farq +0.032, SE 0.005, sezilarli True)
taklif +5 p.p. kutilgan x1.25, P(>=1) 0.623 (farq +0.082, SE 0.005, sezilarli True)
eng katta foyda: javob +5 p.p. - eng past konversiyali bosqichda nisbiy o'sish katta
=== 4. Ommaviy va maqsadli strategiya ===
baza haftasiga 16 ariza, kutilgan 0.77, P(>=1) 0.541
ommaviy: 48 ariza, javob 0.025 haftasiga 48 ariza, kutilgan 0.96, P(>=1) 0.617
maqsadli: 8 ariza, javob 0.18 haftasiga 8 ariza, kutilgan 1.15, P(>=1) 0.688
maqsadli strategiya 6 barobar kam ariza bilan kutilgan 1.15 >= 0.96
=== 5. O'z voronkangiz: kichik sonlardan tor joyni topish ===
ariza->javob 1/70 = 0.014, 90% oraliq [0.005, 0.065], P(p < 0.06) = 0.93
javob->intervyu 1/1 = 1.000, 90% oraliq [0.224, 0.975], P(p < 0.5) = 0.25
intervyu->taklif 0/1 = 0.000, 90% oraliq [0.025, 0.776], P(p < 0.2) = 0.36
xulosa (P > 0.9 bo'lsa 'tor joy', aks holda 'ma'lumot kam'):
ariza->javob tor joy
javob->intervyu ma'lumot kam - xulosa qilmang
intervyu->taklif ma'lumot kam - xulosa qilmang
⭐ Voronka - ko'paytma; avval eng past va eng arzon yaxshilanadigan bosqichNatija tahlili.
1-bo'lim — o'nta stsenariy, har biri 20000 simulyatsiya, 8 hafta. Hamma konversiyalar faraziy: haftasiga 16 ariza, javob 0.06, javobdan intervyuga 0.50, intervyudan taklifga 0.20. Baza stsenariysida kutilgan takliflar 0.77, kamida bitta taklif ehtimoli 0.541 (SE 0.004) — ya'ni bu faraziy nomzod 8 haftada deyarli yarim ehtimol bilan taklifsiz qoladi. Bu raqamlar haqiqiy bozorni aks ettirmaydi — o'z voronkangizni 5-bo'limdagidek o'lchang.
2-bo'lim — asosiy matematik fakt: har qanday bosqichni x1.5 qilish kutilgan takliflarni bir xil 1.15 ga olib chiqadi, P(>=1) ham 0.683-0.688 (farq Monte Carlo shovqini darajasida, SE 0.003). Voronka — ko'paytma. Demak, "qaysi bosqich muhimroq?" degan savolning o'zi noto'g'ri; to'g'ri savol — "qaysi bosqichni x1.5 qilish arzonroq?" Rezyumeni vakansiyaga moslash (javob x1.5) bir soat ish bo'lishi mumkin, texnik tayyorgarlik (taklif x1.5) esa haftalar. Yana bir farq jadvalning oxirgi ustunida: javob yoki intervyu bosqichini yaxshilash intervyular sonini 3.8 dan 5.8 ga oshiradi — bu qo'shimcha tajriba (29.9, 29.10), taklif bosqichi esa intervyular sonini o'zgartirmaydi.
3-bo'lim — bir xil mutlaq yaxshilanish (+5 foiz punkt) turlicha ta'sir qiladi: javob bosqichida kutilgan takliflar x1.83, P(>=1) +0.216 ga; taklif bosqichida x1.25 (+0.082); intervyu bosqichida atigi x1.10 (+0.032). Sabab: 0.06 → 0.11 deyarli ikki barobar, 0.50 → 0.55 esa atigi 10%. Eng past konversiyali bosqichda o'sish uchun joy eng ko'p.
4-bo'lim — ommaviy va maqsadli strategiya. Ommaviy: haftasiga 48 ariza, lekin umumiy rezyume tufayli javob 0.025 — kutilgan 0.96, P(>=1) 0.617. Maqsadli: haftasiga 8 ariza, har biri moslangan, javob 0.18 — kutilgan 1.15, P(>=1) 0.688. Olti barobar kam ariza bilan ko'proq natija — bu faraziy raqamlarda. Raqamlar boshqacha bo'lsa (masalan, moslash javobni atigi 0.10 ga oshirsa), ommaviy strategiya yutishi mumkin; shuning uchun o'z voronkangizni o'lchash kerak.
5-bo'lim — o'z voronkangizdan tor joyni topish. Kuzatuv: 70 ariza → 1 javob → 1 intervyu → 0 taklif. Har bosqich konversiyasi uchun tekis prior bilan Beta posterior 9.4-bob. Birinchi bosqich: 1/70 = 0.014, 90% oraliq [0.005, 0.065], faraziy mezon 0.06 dan past bo'lish ehtimoli 0.93 — tor joy. Ikkinchi va uchinchi bosqichlar: bitta kuzatuv, oraliqlar [0.224, 0.975] va [0.025, 0.776] — deyarli hamma narsa mumkin, xulosa chiqarib bo'lmaydi. Kirishdagi tahlilchi aynan shu holatda edi: muammo intervyuda emas (buni bilish uchun ma'lumot yo'q), rezyume va arizalar bosqichida edi.
5. To'g'ri va noto'g'ri tushunishlar
| Noto'g'ri fikr | To'g'risi |
|---|---|
| "Rezyume — hamma ishlarim ro'yxati" | Rezyume — suhbatga taklif olish uchun tanlangan dalillar; 1 sahifa |
| "Vazifalarimni yozsam yetadi" | Vazifa emas, natija: fe'l + nima + qanday + o'lchanadigan natija |
| "Katta raqam — kuchli punkt" | Bazasiz raqam ("10 marta") shubha uyg'otadi; tekshiriladigan raqam kuchli |
| "Vakansiya so'zlarini ko'proq qo'shsam — yaxshi" | 1-misol: to'ldirilgan rezyume o'xshashligi 0.795, lekin dalilli qamrov 0 |
| "ATS rezyumelarning ko'pini avtomatik rad etadi" | Aniq algoritmlar noma'lum va turlicha; oddiy format va to'g'ri atamalar — xavfsiz yo'l |
| "Barcha talabga javob bermasam ariza bermayman" | Ko'p vakansiya "orzu ro'yxati"; majburiylarning ko'pchiligi dalil bilan bo'lsa — ariza bering |
| "Eng ko'p so'raladigan ko'nikmani o'rganish kerak" | 3-misol: eng ko'p vakansiyani "mos" qiladigan ko'nikma boshqacha bo'lishi mumkin |
| "Ko'proq ariza — ko'proq taklif" | 4-misol: ommaviy (48 ariza, javob 0.025) maqsadlidan (8 ariza, javob 0.18) kam berdi |
| "Bitta intervyuda rad etildim — texnik tayyorgarlik yomon" | 1 ta kuzatuvdan xulosa yo'q; oraliq [0.025, 0.776] |
| "Data Scientist sarlavhasi — model quradigan ish" | Sarlavha emas, "Vazifalar" bo'limini o'qing |
6. Keng tarqalgan xatolar va yechimlari
1. Vazifa yozish
⚠️ Kredit modeli ustida ishladim
✅ Kredit to'lovi kechikishini bashorat qiluvchi gradient boosting modelini qurdim,
ROC-AUC 0.71 dan 0.78 ga oshdi2. Bazasiz raqam
⚠️ Samaradorlikni 10 marta oshirdim
✅ Haftalik hisobotni SQL va pandas bilan avtomatlashtirdim, tayyorlash vaqti
6 soatdan 20 daqiqaga qisqardi3. "Biz" bilan hissani yashirish
⚠️ Jamoa bilan A/B test o'tkazdik
✅ A/B test dizaynini (namuna hajmi, metrika) tuzdim va natijani tahlil qildim4. Vakansiya atamasini ishlatmaslik
konlar = "Python, sklearn, XGBoost" # ⚠️
konlar = "Python, scikit-learn (sklearn), gradient boosting (XGBoost)" # ✅5. Kalit so'z to'ldirish
⚠️ Ko'nikmalar: ... Docker, FastAPI, Airflow, Kubernetes, Spark ... (loyihada yo'q)
✅ Faqat dalili bor ko'nikmalar; o'rganilayotganini "hozir o'rganyapman" deb ajrating6. Kichik namunadan xulosa
if takliflar == 0 and intervyular == 1:
xulosa = "texnik tayyorgarlik yomon" # ⚠️
xulosa = "ma'lumot kam: bosqich oraliq bahosi juda keng" # ✅7. Bitta rezyume hamma joyga
⚠️ 70 ta vakansiyaga bir xil fayl
✅ Asosiy versiya + har rol uchun (Analyst / Scientist / ML Engineer) moslangan
versiya; jadvalda qaysi versiya qayerga yuborilgani yoziladi7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 14.11, 17.6, 23-qism (o'tilgan): Matn belgilari va TF-IDF — rezyume va vakansiyani solishtirish
- 11.4-dars (o'tilgan): Proporsiyalar va ularning ishonch oralig'i — vakansiyalardagi ko'nikma ulushlari
- 9.4-dars (o'tilgan): Bayes teoremasi — kichik sonlardagi voronka konversiyasi (Beta taqsimot)
- 9.10-dars (o'tilgan): Monte Carlo — voronka simulyatsiyasi
- 29.4-dars (o'tilgan): Natijani taqdim etish — rezyume punkti ham qisqa "taqdimot"
- 29.6, 29.7-darslar (o'tilgan): GitHub va portfolio — rezyumedagi havolalar ortidagi dalil
- 29.9, 29.10-darslar: Intervyu — rezyumedagi har raqam haqida so'raladi
- 29.11-dars: Ma'lumot etikasi — avtomatik saralash tizimlarining adolatliligi
8. Eng yaxshi amaliyotlar
Rolni sarlavha emas, vazifalar bo'yicha tanlang; 20-50 vakansiyadan ko'nikma chastotasini hisoblang.
1 sahifa; eng kuchli bo'lim yuqorida; bir ustunli oddiy format, matnli PDF.
Har punkt: fe'l + nima + qanday + o'lchanadigan natija — bazaga nisbatan va to'qimasdan.
Har vakansiyaga moslang: sizda bor ko'nikmalarni vakansiya atamasi bilan va dalil bilan yozing.
Kalit so'z to'ldirmang: o'xshashlik — sifat emas.
Bir nechta kanal: tavsiya, tarmoq, stajirovka, ochiq manba — faqat ochiq e'lonlar emas.
Voronkani jadvalda yuriting; kichik sonlardan xulosa chiqarmang, oraliq bahoga qarang.
Maosh va bozor raqamlarini bir necha rasmiy/ishonchli manbadan tekshiring.
9. Amaliy topshiriq
Vazifa 1: Bashorat qiling
1. # vakansiya so'zlari bilan to'ldirilgan rezyumening TF-IDF o'xshashligi - yuqorimi, pastmi?
2. # "sklearn" va "scikit-learn": aniq so'z qidiruvi nima qiladi?
3. # "Kredit modeli ustida ishladim" - qaysi qoidalarni buzadi?
4. # "Samaradorlikni 10 marta oshirdim" - qoidaviy ball qanday? nima yetishmaydi?
5. # eng ko'p so'raladigan ko'nikma = eng ko'p vakansiyani ochadigan ko'nikmami?
6. # ajratuvchi lug'at sinonimni bilmasa, ko'nikma ulushi qanday siljiydi?
7. # javob konversiyasini x1.5 qilish va taklif konversiyasini x1.5 qilish - qaysi yaxshi?
8. # +5 foiz punkt qaysi bosqichda eng ko'p foyda beradi?
9. # 70 arizada 1 javob, 1 intervyuda 0 taklif - qaysi bosqich muammo?
10. # ATS ning aniq saralash algoritmi ma'lummi?Javoblar
- Yuqori — 1-misolda
0.795(tahrirlangan B0.237), lekin dalilli qamrov0.00 - Sinonimni o'tkazib yuboradi — A rezyumesida 3 ta majburiy ko'nikma "yo'q" bo'lib chiqdi
- Faol fe'l yo'q, natija raqamsiz, vosita yo'q, juda qisqa, passiv ibora —
0/7 7/7— qoidalar faqat shaklni ko'radi; nima, qaysi metrika va baza yo'q- Shart emas — 3-misolda gradient boosting (
0.47) a/b testdan (0.42) ko'p so'raladi, lekin ikkinchi qadamda a/b test ko'proq vakansiyani ochdi (0.644va0.613) - Pastga — vizualizatsiya
0.28(haqiqiy0.42) - Kutilgan takliflar bo'yicha bir xil (
1.15); farq — yaxshilash narxida va intervyular sonida (5.8va3.8) - Eng past konversiyali bosqichda — javob (x
1.83) - Birinchi bosqich (
P = 0.93); qolgan ikkitasi uchun ma'lumot kam - Yo'q — tizimga qarab farq qiladi; faqat umumiy tamoyillar ma'lum
Vazifa 2: Punktlarni qayta yozing
Quyidagi punktlarni formula bo'yicha qayta yozing (raqamlarni o'zingiz to'qimang — [X] kabi joy qoldiring, keyin haqiqiy qiymat bilan to'ldiring):
1. Ma'lumotlar bazasi bilan ishladim
2. Machine learning modellarini o'rgandim
3. Dashboard yaratishda qatnashdim
4. Worked on NLP tasks
5. Jamoa bilan mijozlar segmentatsiyasini qildikJavoblar
1. [N] ta jadvaldan kunlik savdo ma'lumotini birlashtiruvchi SQL so'rovlarini yozdim,
hisobot tayyorlash vaqti [X] soatdan [Y] daqiqaga qisqardi
2. (o'rganish - natija emas; loyihaga aylantiring:) Mijoz ketishini bashorat qiluvchi
modelni scikit-learn bilan qurdim, bazaviy modelga nisbatan PR-AUC [X] dan [Y] ga
3. Savdo bo'limi uchun dashboardning ma'lumot qismini (SQL + pandas) qurdim,
[N] menejer har hafta foydalanadi
4. Built a TF-IDF + logistic regression classifier for support tickets,
raising macro-F1 from [X] to [Y] over the keyword baseline
5. K-means bilan mijozlarni [K] segmentga ajratish tahlilini qildim (belgilar,
silhouette bilan K tanlash); marketing [N] segment uchun alohida taklif ishga tushirdiHar birida: fe'l sizniki, "qanday" (vosita/usul) bor, natija bazaga nisbatan. 2-punkt — kurs yoki o'rganish rezyumeda "Ta'lim" bo'limiga boradi; tajriba/loyiha bo'limiga faqat natijasi bor ish.
Vazifa 3: Moslash
1-misol asosida:
- O'zingiz qiziqqan rol uchun sintetik (yoki haqiqiy e'londan olingan, lekin tashkilot nomisiz) vakansiya matnini
VAKANSIYAga qo'ying va o'z rezyumengizni tekshiring LUGATga yana 5 ta sinonim qo'shing (masalan, "k8s", "REST API") — qamrov o'zgaradimi?- Harf n-gram oralig'ini
(2, 4)va(4, 6)qiling — o'zbekcha qo'shimchali so'zlarda ("modellarni", "modeli") o'xshashlik qanday o'zgaradi? - "Dalilli qamrov" ni kengaytiring: ko'nikma loyihalar bo'limida havola bilan bo'lsa ham hisoblansin
Vazifa 4: Punkt tekshiruvchi
2-misol asosida:
- "Bazaga nisbatan" qoidasini qo'shing: "dan ... ga", "from ... to", "bazaviy modelga nisbatan" bo'lsa +1
- 4-bo'limdagi "bo'sh" punkt endi qanday ball oladi?
- O'z rezyumengizdagi barcha punktlarni tekshiring; eng past 2 tasini qayta yozing
- Qoidalar qaysi yaxshi punktni noto'g'ri jazolaydi? (masalan, fe'l ro'yxatda yo'q)
Vazifa 5: Ko'nikmalar bo'shlig'i
3-misol asosida:
- Maqsad rolni "ML Engineer" qiling — birinchi o'rganiladigan ko'nikma qaysi?
- "Mos" chegarasini 0.8 dan 0.6 va 1.0 ga o'zgartiring — tartib o'zgaradimi?
- Lug'atga yetishmayotgan sinonimlarni qo'shing — recall 1.0 ga yetadimi va vizualizatsiya ulushi qanday o'zgaradi?
- Vakansiyalar sonini 600 dan 60 ga tushiring — ulushlar oralig'i qanchalik kengayadi? 3-bo'limdagi tartibga ishonsa bo'ladimi?
Vazifa 6: Voronka
4-misol asosida:
- Har bosqichni yaxshilash "narxi"ni kiriting (masalan, javobni x1.5 qilish — haftasiga 3 soat moslash, taklifni x1.5 — 5 soat tayyorgarlik; faraziy) — bir soat mehnat uchun eng foydali bosqich qaysi?
- Intervyular soni ham tajriba beradi: har intervyudan keyin
p(taklif)0.01 ga oshsin (maks 0.35) — ommaviy va maqsadli strategiya natijasi qanday o'zgaradi? - 5-bo'limda 70 ariza o'rniga 20 ariza, 1 javob bo'lsa — birinchi bosqich hali ham "tor joy"mi?
P(>=1 taklif)0.8 ga yetishi uchun baza stsenariysida necha hafta kerak?
Vazifa 7: O'ylash
Kurs bitiruvchisi: "Men 100 ta vakansiyaga ariza berdim, 3 ta javob, 2 ta intervyu, 0 ta taklif. Demak, intervyularda yomonman — keyingi 2 oy faqat algoritmik masalalar yechaman. Rezyumeni o'zgartirishga hojat yo'q, u yaxshi — 3 ta javob bor-ku."
Javob
Qisqa javob: ikkala xulosa ham ma'lumotdan kelib chiqmaydi. Ikki intervyuda nol taklif — o'rtacha nomzod uchun ham eng ehtimolli natija, 100 arizada 3 javob esa birinchi bosqich ham zaif bo'lishi mumkinligini ko'rsatadi.
1. "Intervyularda yomonman" — tekshiramiz. 4-misoldagi usul bilan:
from scipy import stats
stats.beta(1 + 0, 1 + 2).ppf([0.05, 0.95]) # intervyu->taklif, 0/2: [0.017, 0.632]
0.8 ** 2 # p(taklif) = 0.2 bo'lsa, 0/2 ehtimoli: 0.642 ta intervyuda 0 taklif — faraziy p = 0.2 li "o'rtacha" nomzodda 64% ehtimol bilan yuz beradi. Oraliq [0.017, 0.632] — bu ma'lumot "yomon" ham, "yaxshi" ham degan xulosani qo'llab-quvvatlamaydi.
2. "Rezyume yaxshi — 3 ta javob bor" — tekshiramiz. 3/100: 90% oraliq [0.014, 0.075], faraziy mezon 0.06 dan past bo'lish ehtimoli 0.86. Bu "tor joy" deyish uchun 0.9 dan past, lekin rezyumeni "yaxshi" deyish uchun asos ham yo'q — aksincha, zaif bo'lishi ehtimoli yuqori.
3. Nima qilish kerak.
- Rezyumeni 2-misol tekshiruvidan o'tkazing va har rol uchun moslangan versiya qiling (1-misol) — bu eng arzon yaxshilanish, va 4-misolda ko'rdik: past konversiyali bosqichda o'sish uchun joy ko'p.
- Intervyulardan keyin eslatma yozing: qaysi savollarda qiynaldingiz? 2 ta intervyu — statistika emas, lekin mazmunli fikr-mulohaza manbai.
- Algoritmik masalalar — foydali, lekin DS intervyularida statistika, ML, SQL va case study ham bor (29.9, 29.10); faqat bittasiga 2 oy sarflash — boshqa bosqichlarni e'tiborsiz qoldirish.
- Jadvalni yuritishda davom eting: 20-30 ta keyingi arizadan keyin yangi versiya rezyumening javob konversiyasini eskisi bilan solishtiring — lekin bu ham kichik namuna, oraliqqa qarang.
Bitiruvchiga javob: "Ikki intervyudan 'yomonman' degan xulosa chiqmaydi — o'rtacha nomzod ham ko'pincha shunday natija oladi. 100 arizada 3 javob esa rezyume yaxshi ekanini emas, balki uni ham yaxshilash kerakligini ko'rsatishi mumkin. Vaqtni bo'ling: bir hafta rezyume va moslashga, qolganini intervyuning barcha turlariga tayyorgarlikka — va har bosqichni jadvalda o'lchang."
Nimani mustahkamlaydi: 2.1, 2.4, 2.6, 2.7-bo'limlar.
Xulosa
Bu darsda rezyume va ish qidirishga ma'lumot bilan yondashishni o'rgandik.
Eng muhim uch fikr:
Rol va rezyume — dalilga asoslangan. Rollar sarlavha bilan emas, vazifalar bilan farqlanadi (Analyst — "nima bo'ldi", Scientist — "nima bo'ladi", ML Engineer — "qanday ishlatamiz", MLOps — "hayot siklini avtomatlashtirish", Research — "yangi usul"). Rezyume punkti — fe'l + nima + qanday + o'lchanadigan natija: 2-misolda qayta yozish har juftda ballni oshirdi (
0.33dan7.00ga), lekin shakli "mukammal", mazmuni bo'sh punkt ham7/7oldi — raqam bazaga nisbatan va tekshiriladigan bo'lishi kerak.Moslash — to'qish emas. 1-misolda vakansiya so'zlari bilan to'ldirilgan rezyume TF-IDF o'xshashligi bo'yicha eng yuqori (
0.795), lekin dalilli qamrovi nol; xuddi shu tajribani vakansiya tilida va natija bilan yozgan rezyume majburiy qamrovni0.50dan1.00ga oshirdi. Sinonimsiz qidiruv 3 ta ko'nikmani yo'qotdi. ATS ning aniq algoritmlari noma'lum — oddiy format va to'g'ri atamalar xavfsiz yo'l. 3-misolda eng ko'p so'raladigan ko'nikma har doim ham eng ko'p eshik ochadigani emasligini va ajratuvchi lug'atning xatosi (vizualizatsiya0.28va haqiqiy0.42) chastota jadvalini buzishini ko'rdik.Ish qidirish — voronka, uni o'lchang. Voronka ko'paytma: 4-misolda har qanday bosqichni x1.5 qilish bir xil natija berdi (
1.15), +5 foiz punkt esa eng past konversiyali bosqichda eng ko'p foyda keltirdi (x1.83). Faraziy raqamlarda 8 ta moslangan ariza 48 ta umumiy arizadan ko'proq natija berdi. O'z voronkangizda kichik sonlardan xulosa chiqarmang:1/70— ishonchli "tor joy",0/1intervyu — hech narsa demaydi.
Keyingi darsda Intervyu: statistika va ehtimollik: tez-tez so'raladigan savollar — Bayes teoremasi va tibbiy test masalasi, tug'ilgan kun paradoksi, kutilgan qiymat masalalari, p-qiymat nima va nima emas, ishonch oralig'i talqini, I va II tur xatolar, markaziy limit teoremasi, Simpson paradoksi, tanlash tarafkashligi va A/B test dizayni — har bir javob simulyatsiya bilan tekshiriladi.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!