Войти Регистрация

Docx

  • Рефераты
  • Дипломные работы
  • Прочее
    • Презентации
    • Рефераты
    • Курсовые работы
    • Дипломные работы
    • Диссертациии
    • Образовательные программы
    • Инфографика
    • Книги
    • Тесты

Информация о документе

Цена 10000UZS
Размер 434.8KB
Покупки 0
Дата загрузки 06 Ноябрь 2026
Расширение docx
Раздел Курсовые работы
Предмет Экономика

Продавец

Bohodir Jalolov

Bank mijozlarining ketib qolishini bashorat qilishning intelektual algaritimlari

Купить
Mavzu:Bank mijozlarining ketib qolishini bashorat
qilishning intelektual algaritimlari
MUNDARIJA:
I- BOB.Kirish………………………………………...............................
1.1.   Mavzuning
dolzarbligi…………………………………………………………………….1
1.2. Maqsad va vazifalar……………………………………………………………………….3
1.3.   Tadqiqot   uslublari   va
yondashuvlar………………………………………………..3
II-BOB.Nazariy qism…………………………………………………..
2.1.   Mijozlarning   ketib   qolishi   (churn)
tushunchasi……………………..4
2.2.   Churn   sabablari   va
omillari……………………………………….....5
2.3.   Intellektual   algoritmlar   haqida   umumiy
tushuncha………………....5
III-BOB.Amaliy qism…………………………………………………..
3.1.   Ma’lumotlar   to‘plami   tanlovi   va
tahlili……………………………...6
3.2.   Ma’lumotlarni   tozalash   va
tayyorlash……………………………….7
3.3.   Algoritmlar   tanlovi   va   ularning
tavsifi……………………………....8
Logistik regressiya………………………………………………………8
Qaror daraxtlari (Decision Tree)……………………………………….12
Random Forest…………………………………………………………15
Gradient Boosting (XGBoost)…………………………………………19
3.4.   Modellarni   o‘qitish   va   sinovdan   o‘tkazish…………………………
23
VI.Xulosa.......…………………………………………………………24
V.   Foydalanilgan   adabiyotlar
ro‘yxati ……………………………….28
1 I. Kirish
Hozirgi kunda bank tizimi raqobatbardosh muhitda faoliyat yuritmoqda. Yangi 
mijozlarni jalb qilish muhim bo‘lsa-da, mavjud mijozlarni saqlab qolish yanada 
dolzarb masalaga aylangan. Chunki yangi mijozni jalb qilish, mavjud mijozni 
saqlab qolishga nisbatan ko‘proq xarajat talab qiladi. Shu sababli, mijozlarning 
ketib qolishini oldindan aniqlash banklar uchun strategik ahamiyat kasb etadi.
Mijozlarning ketib qolishi (inglizcha: customer churn) — bu kompaniya bilan 
o‘zaro aloqani to‘xtatgan mijozlarning ulushi yoki sonidir. Bank sohasida bu holat 
ko‘pincha hisob raqamini yopish, boshqa bank xizmatlariga o‘tish yoki bank 
faoliyatidan norozilik sababli yuzaga keladi.
Sun’iy intellekt va mashinaviy o‘rganish algoritmlarining rivojlanishi mijozlarning
xatti-harakatlarini bashorat qilish imkonini yaratmoqda. Bu texnologiyalar orqali 
banklar mijozlar ketishini oldindan aniqlab, ularni saqlab qolish strategiyalarini 
ishlab chiqishi mumkin.
Mazkur kurs ishida bank mijozlarining ketib qolishini bashorat qilish uchun 
intellektual algoritmlar tahlil qilinadi, ularning samaradorligi baholanadi va eng 
optimal yondashuv tanlanadi.
1.2. Maqsad va vazifalar
Ishning maqsadi:
Bank mijozlarining ketib qolishini bashorat qilish uchun sun’iy intellekt asosidagi 
samarali algoritmlarni aniqlash va ularning natijalarini tahlil qilish.
Ishning asosiy vazifalari:
1. Mijozlarning ketib qolishiga olib keluvchi asosiy omillarni o‘rganish.
2. Churn tushunchasini nazariy jihatdan tahlil qilish.
3. Intellektual algoritmlarni (Logistik regressiya, Qaror daraxtlari, Neyron 
tarmoqlar va boshqalar) o‘rganish.
4. Amaliy ma’lumotlar to‘plamidan foydalanib churnni bashoratlovchi modellarni 
qurish.
5. Modellarni baholash metrikalari orqali tahlil qilish (Accuracy, Precision, Recall,
F1-score).
6. Eng samarali modelni aniqlab, uni real bank tizimida qo‘llash bo‘yicha 
tavsiyalar ishlab chiqish.
2 1.3. Tadqiqot uslublari va yondashuvlar
Mazkur kurs ishida mijozlarning ketib qolishini bashorat qilish uchun ilmiy-
tadqiqot va amaliy yondashuvlar birgalikda qo‘llanildi. Tadqiqot quyidagi 
bosqichlarda amalga oshirildi:
1. Nazariy tahlil usuli
Ilmiy maqolalar, internet manbalari va adabiyotlar asosida churn tushunchasi, 
uning turlari va sabablari tahlil qilindi. Shuningdek, intellektual algoritmlar haqida 
nazariy ma’lumotlar to‘plandi.
2. Ma’lumotlar tahlili (Data Analysis)
Churn bashorati uchun ma’lumotlar to‘plami tanlanib, dastlabki tahlillar amalga 
oshirildi. Ma’lumotlardagi yetishmayotgan qiymatlar, chetga chiqadigan (outlier) 
qiymatlar aniqlanib, tozalash ishlari bajarildi.
3. Mashina o‘rganishi usullari (Machine Learning)
Turli algoritmlar (Logistik regressiya, Qaror daraxtlari, Random Forest, Neyron 
tarmoqlar va boshqalar) yordamida modellar tuzildi va ularning ishlash 
samaradorligi baholandi.
4. Model baholash yondashuvi
Har bir model Precision, Recall, Accuracy, F1-score kabi metrikalar asosida 
solishtirildi va eng yaxshi ishlaydigan algoritm tanlab olindi.
5. Eksperimental yondashuv
Modellar Python dasturlash tili va mashina o‘rganish kutubxonalari (Scikit-learn, 
TensorFlow, va boshqalar) yordamida sinovdan o‘tkazildi.
Mazkur yondashuvlar asosida churnni aniqlashda eng samarali algoritm aniqlanib, 
amaliy qo‘llash imkoniyatlari ko‘rib chiqildi.
2.1. Mijozlarning ketib qolishi (churn) tushunchasi
Mijozlarning ketib qolishi (customer churn) — bu kompaniyaning mavjud 
mijozlaridan biri yoki bir nechtasining xizmatdan voz kechishi yoki boshqa 
raqobatchi kompaniyaga o‘tishidir. Bank sohasida bu tushuncha hisob raqamini 
yopish, xizmatlardan foydalanishni to‘xtatish yoki mijozning boshqa moliyaviy 
tashkilotga o‘tishi kabi holatlar bilan ifodalanadi.
Mijozlar churnining sabablari ko‘p bo‘lishi mumkin, jumladan:
xizmat ko‘rsatish sifati pastligi,
yuqori xizmat haqi yoki komissiyalar,
mijozga mos individual yondashuvning yetishmasligi,
raqobatchilarning jozibador takliflari,
mijoz ehtiyojlarining o‘zgarishi.
Churn tahlili kompaniyaga mijozlarni yo‘qotmaslik uchun qanday choralar ko‘rish 
kerakligini aniqlashda muhim rol o‘ynaydi. Ayniqsa, bank sektorida bu masala 
dolzarb, chunki yangi mijozni jalb qilish mavjud mijozni saqlashga nisbatan 
ko‘proq vaqt va mablag‘ talab qiladi.
Churn turlari:
Ixtiyoriy churn (Voluntary): mijoz o‘z xohishiga ko‘ra bankdan voz kechadi.
3 Majburiy churn (Involuntary): masalan, bank mijoz bilan shartnomani bekor qiladi 
(qarzdorlik, firibgarlik yoki qonunbuzarlik holatlarida).
Mijoz churnini erta aniqlash va unga ta’sir qiluvchi omillarni tahlil qilish orqali 
banklar o‘z mijozlariga individual yondashuv ko‘rsatib, ularni saqlab qolish 
imkoniyatiga ega bo‘ladi.
2.2. Churn sabablari va omillari
Mijozlarning bank xizmatlaridan voz kechishi — bu murakkab va ko‘p omilli 
jarayon bo‘lib, unga turli ichki va tashqi faktorlar ta’sir ko‘rsatadi. Churn sabablari
asosan quyidagi guruhlarga bo‘linadi:
1. Xizmat sifati bilan bog‘liq omillar
Bank xodimlarining befarqligi yoki salbiy munosabati
Mijoz murojaatlarining kechikib ko‘rib chiqilishi
Mobil ilova yoki internet-bankingdagi nosozliklar
2. Narx va komissiyalar
Yuqori xizmat haqlari yoki yashirin to‘lovlar
Raqobatchilarning arzonroq yoki foydaliroq takliflari
Kredit stavkalari yoki foiz darajalarining mijoz uchun noqulayligi
3. Shaxsiylashtirilmagan xizmatlar
Mijoz ehtiyojlariga mos kelmaydigan umumiy xizmatlar
Shaxsiy yondashuv yoki maxsus takliflarning yetishmasligi
Mijozlar uchun bonus yoki sodiqlik dasturlarining mavjud emasligi
4. Tashqi omillar
Yangi raqobatchilarning paydo bo‘lishi
Iqtisodiy o‘zgarishlar yoki regulyator siyosatlari
Mijozning moliyaviy holatidagi o‘zgarishlar
5. Shaxsiy sabablari
Mijozning boshqa shaharga ko‘chib ketishi
Mijozning o‘zgargan ehtiyojlari (masalan, xalqaro bank xizmatlari kerak bo‘lishi)
Yomon tajriba yoki shaxsiy norozilik
Banklar churnni kamaytirish uchun ushbu omillarni chuqur o‘rganib, mijozlar 
ehtiyojiga mos xizmatlar va sodiqlik siyosatini ishlab chiqishi zarur.
2.3. Intellektual algoritmlar haqida umumiy 
tushuncha
So‘nggi yillarda sun’iy intellekt (SI) va mashinaviy o‘rganish (MO) 
algoritmlarining rivojlanishi turli sohalarda, jumladan, bank xizmatlarida ham keng
qo‘llanilmoqda. Intellektual algoritmlar orqali banklar katta hajmdagi 
ma’lumotlarni tahlil qilib, mijozlarning xatti-harakatlarini bashorat qilish, ularning 
ehtiyojlarini aniqlash va churnni oldindan prognoz qilish imkoniyatiga ega 
bo‘ladilar.
Sun’iy intellekt (SI)
4 Sun’iy intellekt — bu mashinalarga inson kabi fikrlash, qaror qabul qilish, 
o‘rganish va muammolarni hal qilish imkonini beruvchi tizimlar majmuasidir. U 
o‘z ichiga mashinaviy o‘rganish, tabiiy tilni qayta ishlash, ekspert tizimlar va 
boshqalarni oladi.
Mashina o‘rganishi (Machine Learning)
Mashina o‘rganishi — bu sun’iy intellektning bir sohasi bo‘lib, u tizimlarga 
ma’lumotlar asosida o‘z-o‘zini o‘qitish va tajriba orqali yaxshilanish imkonini 
beradi. Bu algoritmlar model qurish orqali muayyan vazifalarni avtomatik ravishda
bajara oladi, masalan:
Ma’lumotlarni sinflashtirish (classification),
Bashoratlash (prediction),
Klasterlash (clustering),
Regression (regression analysis).
Churn bashoratida ishlatiladigan asosiy algoritmlar
1. Logistik regressiya (Logistic Regression) – Churn bo‘yicha “ha” yoki “yo‘q” 
kabi ikkilik natijalarni aniqlashda keng qo‘llaniladi.
2. Qaror daraxtlari (Decision Tree) – Qanday omillar churnga olib kelishini vizual 
tarzda tushunish imkonini beradi.
3. Random Forest – Bir nechta qaror daraxtlari asosida mustahkam model yaratadi 
va yuqori aniqlikka ega.
4. Support Vector Machine (SVM) – Murakkab, lekin aniq chegaralarni chizuvchi 
kuchli klassifikator.
5. Sun’iy neyron tarmoqlar (Artificial Neural Networks – ANN) – Katta hajmdagi 
ma’lumotlar bilan ishlashda va noaniqlikni tahlil qilishda samarali.
6. Gradient Boosting (XGBoost, LightGBM) – Chuqur o‘rganishsiz yuqori aniqlik 
beradigan ilg‘or algoritmlar.
Ushbu algoritmlar churnni aniqlashda qo‘llanilganda, ular mijozlarning ketish 
ehtimolini aniq bashoratlab berishi va bankka oldindan ogohlantirish imkonini 
yaratadi.
3.1. Ma’lumotlar to‘plami tanlovi va tahlili
Churnni bashorat qilish uchun ishonchli va to‘liq ma’lumotlar to‘plamiga ehtiyoj 
mavjud. Ushbu kurs ishida Bank Customer Churn Modeling nomli ochiq 
ma’lumotlar to‘plamidan foydalanildi. Ushbu dataset Kaggle platformasidan 
olingan bo‘lib, unda mijozlar haqida quyidagi asosiy atributlar mavjud:
Asosiy ustunlar (atributlar):
CustomerId – mijoz identifikatori
Surname – familiyasi
CreditScore – kredit reytingi
Geography – mijoz yashayotgan mamlakat
Gender – jinsi
Age – yoshi
Tenure – bankdagi faol yillari soni
Balance – hisobdagi mablag‘ miqdori
NumOfProducts – foydalanayotgan xizmatlar soni
5 HasCrCard – kredit kartasi mavjudligi (1 – ha, 0 – yo‘q)
IsActiveMember – faol mijoz (1 – ha, 0 – yo‘q)
EstimatedSalary – taxminiy ish haqi
Exited – maqsad ustun: mijoz bankni tark etganmi (1 – ha, 0 – yo‘q)
Ma’lumotlar to‘plamining o‘lchami:
Qatorlar soni (mijozlar): 10,000
Ustunlar soni: 14
Churn (Exited) taqsimoti:
Ma’lumotlar to‘plamidagi Exited ustuni yordamida churn bo‘lgan va bo‘lmagan 
mijozlar soni aniqlanadi. Bu sinflar o‘rtasida muvozanat (imbalans) bormi yoki 
yo‘qligi tahlil qilinadi. Odatda churn sinfi kamroq uchraydi, bu esa modellashishda
e’tibor talab qiladi.
Vizual tahlil (EDA - Exploratory Data Analysis):
Quyidagi vizualizatsiyalar churn va atributlar orasidagi bog‘liqlikni ko‘rsatishda 
foydali bo‘ladi:
Churn va yosh o‘rtasidagi bog‘liqlik
Churn va balans miqdori
Faollik darajasi va churn
Mamlakat bo‘yicha churn darajasi
Kredit balli va churn
Mazkur tahlillar churnni bashoratlash uchun qaysi omillar muhim rol o‘ynashini 
aniqlashga yordam beradi.
3.2. Ma’lumotlarni tozalash va tayyorlash
Ma’lumotlar bilan ishlashning eng muhim bosqichlaridan biri bu ularni tozalash va
model uchun tayyorlashdir. Sifatli model qurish uchun to‘plamdagi xatoliklar, 
bo‘sh qiymatlar, nomaqbul ma’lumotlar bartaraf etilishi kerak.
1. Noto‘liq va bo‘sh qiymatlarni aniqlash
Dastlab har bir ustun bo‘yicha null yoki NaN qiymatlar mavjudligi tekshirildi. 
Mazkur datasetda deyarli barcha ustunlarda to‘liq ma’lumotlar mavjud bo‘lib, 
ma’lumotlarni to‘ldirishga zarurat yo‘q edi. Bo‘sh qiymatlar mavjud bo‘lganida, 
quyidagilar amalga oshirilishi mumkin edi:
O‘rtacha (mean), median yoki eng ko‘p takrorlanuvchi qiymat bilan to‘ldirish
Noyob va muhim ustunlar bo‘yicha satrlarni o‘chirish
2. Nominal (kategorik) ustunlarni kodlash
Gender, Geography kabi kategorik ustunlarni algoritmlar tushunadigan raqamli 
ko‘rinishga o‘tkazish zarur:
Gender ustuni: Male → 1, Female → 0
Geography ustuni: One-Hot Encoding orqali uchta ustunga bo‘linadi (France, 
Germany, Spain)
3. Keraksiz ustunlarni olib tashlash
CustomerId, Surname kabi ustunlar churnga ta’sir qilmaydi, shuning uchun ular 
olib tashlandi. Bu ustunlar identifikatsiya uchun foydali bo‘lsa-da, model uchun 
ahamiyatsiz.
4. Ma’lumotlarni normallashtirish (scaling)
6 CreditScore, Age, Balance, EstimatedSalary kabi ustunlar turli diapazonga ega. 
Model ishlashini yaxshilash uchun bu ustunlar MinMaxScaler yoki StandardScaler
orqali normallashtirildi.
5. Ma’lumotlarni bo‘lish
To‘plam quyidagi nisbatda taqsimlandi:
Trenirovka (train) to‘plami – 80%
Test (test) to‘plami – 20%
Bu orqali model avval o‘qitiladi, so‘ng sinovdan o‘tkaziladi.
Mazkur tayyorlash bosqichi churnni bashoratlashdagi modellar uchun muhim 
poydevor bo‘lib xizmat qiladi. Endi model qurish bosqichiga o‘tiladi.
3.3. Algoritmlar tanlovi va ularning tavsifi
Churnni bashorat qilishda turli intellektual algoritmlar sinovdan o‘tkazildi. Har bir 
algoritmning o‘ziga xos afzalliklari va cheklovlari mavjud bo‘lib, ular muayyan 
ma’lumotlar tuzilmasida har xil natija berishi mumkin. Quyida bu kurs ishida 
tanlangan asosiy algoritmlar va ularning qisqacha tavsifi keltirilgan:
1. Logistik regressiya (Logistic Regression)
Turi: Ikkilik klassifikatsiya algoritmi
Afzalligi: Soddaligi, tez ishlashi va tushunarli interpretatsiya
Kamchiligi: Faqat chiziqli (linear) bog‘liqliklar uchun samarali
Logistik regressiya churn ehtimolini foizda ifodalaydi. Bu usul churnga ta’sir 
qiluvchi omillarni statistik jihatdan tushunish uchun qulay.
# 1. Kutubxonalarni yuklab olamiz
import  pandas  as  pd
from  sklearn.model_selection  import  train_test_split
from  sklearn.linear_model  import  LogisticRegression
from  sklearn.metrics  import  accuracy_score ,  confusion_matrix ,  
classification_report
# 2. Datasetni yuklaymiz
df = pd.read_csv ( '/content/Churn_Modelling.csv' )
# 3. Keraksiz ustunlarni olib tashlaymiz
df = df.drop ([ 'RowNumber' ,   'CustomerId' ,   'Surname' ],  axis= 1 )
# 4. Kategorik ustunlarni raqamlarga o'girib olamiz
df = pd.get_dummies ( df ,  drop_first= True )
# 5. X va y ni ajratamiz
X = df.drop ( 'Exited' ,  axis= 1 )
y = df [ 'Exited' ]
# 6. Ma'lumotlarni train/test ga ajratamiz
X_train ,  X_test ,  y_train ,  y_test = train_test_split ( X ,  y ,  test_size= 0.2 ,  
random_state= 42 )
# 7. Logistic Regression model quramiz
7 log_model = LogisticRegression ( max_iter= 1000 )
log_model.fit ( X_train ,  y_train )
# 8. Bashorat qilamiz
y_pred = log_model.predict ( X_test )
# 9. Natijalarni chiqaramiz
print ( "Logistic Regression Model Natijalari:" )
print ( "Accuracy:" ,  accuracy_score ( y_test ,  y_pred ))
print ( "Confusion Matrix:\n" ,  confusion_matrix ( y_test ,  y_pred ))
print ( "Classification Report:\n" ,  classification_report ( y_test ,  y_pred ))
Kutubxona chaqirish
import  pandas  as  pd
from  sklearn.model_selection  import  train_test_split
from  sklearn.linear_model  import  LogisticRegression
from  sklearn.metrics  import  accuracy_score ,  confusion_matrix ,  
classification_report
 Pandas — ma'lumotlar bilan ishlash.
 sklearn — model qurish va baholash uchun kerakli modullar.
df = pd.read_csv ( '/content/Churn_Modelling.csv' )
  CSV fayldan ma'lumotlarni o'qib olish.
df = df.drop ([ 'RowNumber' ,   'CustomerId' ,   'Surname' ],  axis= 1 )
Model uchun kerakmas, uncha foydali bo'lmagan ustunlar (ID, ism-familiya) olib tashlandi.
df = pd.get_dummies ( df ,  drop_first= True )
Gender ,  Geography  kabi ustunlar  One-Hot Encoding  orqali raqamlashtirildi.
  drop_first=True  deb berilgani redundant ustunlarni olib tashlaydi 
(multicollinearityni oldini oladi)
X = df.drop ( 'Exited' ,  axis= 1 )
y = df [ 'Exited' ]
Exited  — ya'ni chiqib ketganmi yoki yo'qmi (target).
 Qolganlar — model uchun inputlar (features).
X_train ,  X_test ,  y_train ,  y_test = train_test_split ( X ,  y ,  test_size= 0.2 ,  
random_state= 42 )
80% train uchun, 20% test uchun ajratildi.
  random_state=42  — har safar bir xil natija olish uchun.
y_pred = log_model.predict ( X_test )
 Model yordamida  X_test  ustida natijalarni bashorat qilish.
print ( "Logistic Regression Model Natijalari:" )
print ( "Accuracy:" ,  accuracy_score ( y_test ,  y_pred ))
print ( "Confusion Matrix:\n" ,  confusion_matrix ( y_test ,  y_pred ))
print ( "Classification Report:\n" ,  classification_report ( y_test ,  y_pred ))
Accuracy  — umumiy aniqlik foizi.
  Confusion Matrix  — model qanchasini to'g'ri/noto'g'ri bashorat qilganini 
ko'rsatadi.
Classification Report  — Precision, Recall, F1-Score kabi chuqur metrikalar 
beradi.
8 Natija:
Logistic Regression Model Natijalari:
Accuracy: 0.816
Confusion Matrix:
 [[1551   56]
 [ 312   81]]
Classification Report:
               precision    recall  f1-score   support
           0       0.83      0.97      0.89      1607
           1       0.59      0.21      0.31       393
    accuracy                           0.82      2000
   macro avg       0.71      0.59      0.60      2000
weighted avg       0.79      0.82      0.78      2000
/usr/local/lib/python3.11/dist-packages/sklearn/linear_model/
_logistic.py:465: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.
Increase the number of iterations (max_iter) or scale the data as shown in:
     https://scikit-learn.org/stable/modules/preprocessing.html
Please also refer to the documentation for alternative solver options:
     https://scikit-learn.org/stable/modules/linear_model.html#logistic-
regression
  n_iter_i = _check_optimize_result(
# Confusion matrix grafikda chiqaramiz
cm = confusion_matrix ( y_test ,  y_pred )
plt.figure ( figsize= ( 8 , 6 ))
sns.heatmap ( cm ,  annot= True ,  fmt= 'd' ,  cmap= 'Blues' ,  xticklabels= [ "Qoldi" ,  
"Ketdi" ],  yticklabels= [ "Qoldi" ,   "Ketdi" ])
plt.xlabel ( 'Bashorat qilingan' )
plt.ylabel ( 'Haqiqiy' )
plt.title ( 'Logistic Regression Confusion Matrix' )
plt.show ()
cm = confusion_matrix ( y_test ,  y_pred )
confusion_matrix()  funksiyasi yordamida  haqiqiy qiymatlar  ( y_test ) va  bashorat qilingan 
qiymatlar  ( y_pred ) asosida confusion matrix (chalkashlik matritsasi) hosil qilinyapti.
cm  — hosil bo‘lgan matritsa (2x2 o‘lchamli, chunki bu ikkilik (binary) klassifikatsiya).
Confusion Matrix qisqacha:
[0,0] — To‘g‘ri  Qoldi  (True Negative)
[0,1] — Noto‘g‘ri  Qoldi  (False Positive)
[1,0] — Noto‘g‘ri  Ketdi  (False Negative)
[1,1] — To‘g‘ri  Ketdi  (True Positive)
plt.figure ( figsize= ( 8 , 6 ))
Grafik o‘lchamini (8 dyuym kenglik va 6 dyuym balandlik) belgilayapmiz.
9 sns.heatmap ( cm ,  annot= True ,  fmt= 'd' ,  cmap= 'Blues' ,  xticklabels= [ "Qoldi" ,  
"Ketdi" ],  yticklabels= [ "Qoldi" ,   "Ketdi" ])
sns.heatmap()  yordamida confusion matrix  grafik  ko‘rinishda chiqarilmoqda.
annot=True  — katakchalar ichiga matn (raqamlar) yoziladi.
fmt='d'  — butun son (integer) formatda raqamlar ko‘rsatiladi.
cmap='Blues'  — ranglar palitrasi sifatida  ko‘k (Blues)  ranglar tanlangan.
xticklabels=["Qoldi", "Ketdi"]  — x-o‘qdagi klass nomlari: model bashorati.
yticklabels=["Qoldi", "Ketdi"]  — y-o‘qdagi klass nomlari: haqiqiy qiymatlar.
plt.xlabel ( 'Bashorat qilingan' )
plt.ylabel ( 'Haqiqiy' )
X-o‘q nomi — "Bashorat qilingan" (modelning chiqishi).
Y-o‘q nomi — "Haqiqiy" (testdagi asl qiymat).
plt.title ( 'Logistic Regression Confusion Matrix' )
Grafikning sarlavhasi — Logistic Regression modeli uchun confusion matrix.
plt.show ()
Tayyor grafikni ko‘rsatadi.
Kod natijasi:
2.  Qaror daraxtlari (Decision Tree) 
10 from  sklearn.tree  import  DecisionTreeClassifier
from  sklearn.metrics  import  accuracy_score ,  classification_report
# Modelni yaratish
dt = DecisionTreeClassifier ( criterion= 'entropy' ,  max_depth= 5 ,  
random_state= 42 )
dt.fit ( X_train ,  y_train )
# Bashorat qilish
y_pred_dt = dt.predict ( X_test )
# Natijalar
print ( "Decision Tree Accuracy:" ,  accuracy_score ( y_test ,  y_pred_dt ))
print ( classification_report ( y_test ,  y_pred_dt ))
from  sklearn.tree  import  DecisionTreeClassifier
from  sklearn.metrics  import  accuracy_score ,  classification_report
Bu yerda  DecisionTreeClassifier  — qaror daraxti modelini yaratish uchun,
accuracy_score  va  classification_report  — model natijalarini baholash uchun 
kerakli funksiyalar.
dt = DecisionTreeClassifier ( criterion= 'entropy' ,  max_depth= 5 ,  
random_state= 42 )
criterion='entropy' : Daraxtni qurishda  axborot yutug'i (information gain)  asosida eng 
yaxshi bo'linishni tanlaydi. Bu usul har bir bo'linishda ma'lumotdagi noaniqlikni kamaytirishga 
harakat qiladi.
  max_depth=5 : Daraxtning maksimal chuqurligini 5 bilan cheklaydi. Bu  ortiqcha moslashuv 
(overfitting)  ni oldini olishga yordam beradi.
  random_state=42 : Modelning har safar bir xil natijani berishini ta'minlaydi, ya'ni 
reproduktivlik ni kafolatlaydi.
dt.fit ( X_train ,  y_train )
Modelni o'qitish uchun  fit()  funksiyasi orqali  X_train  (xususiyatlar) va  y_train  (nishon) 
ma'lumotlari beriladi.
y_pred_dt = dt.predict ( X_test )
O'qitilgan model yordamida  X_test  ma'lumotlari uchun chiqishlar (bashoratlar) 
olinadi.
print ( "Decision Tree Accuracy:" ,  accuracy_score ( y_test ,  y_pred_dt ))
print ( classification_report ( y_test ,  y_pred_dt ))
accuracy_score : Modelning umumiy aniqligini (to'g'ri bashoratlar ulushi) hisoblaydi.
classification_report : Har bir sinf uchun  Precision ,  Recall , va  F1-score  kabi metrikalarni 
taqdim etadi.
Natija:
Decision Tree Accuracy: 0.8575
11               precision    recall  f1-score   support
           0       0.86      0.98      0.92      1607
           1       0.79      0.37      0.51       393
    accuracy                           0.86      2000
   macro avg       0.83      0.67      0.71      2000
weighted avg       0.85      0.86      0.84      2000
from  sklearn.tree  import  plot_tree
import  matplotlib.pyplot  as  plt
plt.figure ( figsize= ( 20 , 10 ))
plot_tree ( dt ,  filled= True ,  feature_names=df.drop ( "Exited" ,  
axis= 1 ) .columns ,  class_names= [ "Qoldi" ,   "Ketdi" ])
plt.title ( "Qaror daraxti vizualizatsiyasi" )
plt.show ()
from  sklearn.tree  import  plot_tree
import  matplotlib.pyplot  as  plt
Bu qatorda  sklearn.tree  modulidan  plot_tree  funksiyasini va  matplotlib.pyplot  
kutubxonasini chaqiryapsiz.
plot_tree  — qaror daraxtining ( DecisionTree ) strukturasi va qoidalarini grafikli ko‘rinishda 
chizish uchun ishlatiladi.
matplotlib.pyplot  esa grafik chizish uchun ishlatiladigan mashhur kutubxona.
plt.figure ( figsize= ( 20 , 10 ))
Bu kod yangi rasm ( figure ) ochadi va uning o‘lchamini (eni 20 birlik, bo‘yi 10 birlik) 
belgilaydi.
Bu rasm ichiga keyin daraxt vizualizatsiyasi chiziladi.
plt.figure ( figsize= ( 20 , 10 ))
plot_tree ( dt ,  filled= True ,  feature_names=df.drop ( "Exited" ,  
axis= 1 ) .columns ,  class_names= [ "Qoldi" ,   "Ketdi" ])
plot_tree  funksiyasi orqali qaror daraxtini ( dt ) chizasiz.
filled=True  — tugunlar (yacheykalar)ni sinfga qarab rang bilan to‘ldiradi (to‘liq rangli 
bo‘ladi).
feature_names=...  — daraxtda ko‘rsatiladigan xususiyat (feature) nomlari.
df.drop("Exited", axis=1).columns  degani:
df  dan  Exited  ustunini olib tashlab, qolgan ustunlarning nomlarini oladi.
Chunki  Exited  — maqsad (target) ustuni, xususiyat emas.
class_names=["Qoldi", "Ketdi"]  — har bir klass nomini belgilaysiz:
0  uchun "Qoldi" (mijoz bankda qoldi)
1  uchun "Ketdi" (mijoz bankdan ketdi)
plt.title ( "Qaror daraxti vizualizatsiyasi" )
plt.show ()
12 Grafik ustiga "Qaror daraxti vizualizatsiyasi" deb sarlavha qo‘yasiz.
plt.show()  — grafikani chizib ko‘rsatadi.
Natija:
Turi: Klassifikatsiya va regressiya
Afzalligi: Vizualizatsiyalash oson, murakkab bog‘liqliklarni aniqlay oladi
Kamchiligi: Haddan tashqari moslashuv (overfitting) xavfi mavjud
Qaror daraxtlari churnga olib keladigan asosiy omillarni aniqlashda juda foydali 
bo‘ladi, masalan: mijoz yoshi, hisobdagi mablag‘, xizmatlar soni va boshqalar.
3.  Random Forest
# Kutubxonalarni chaqiramiz
import  pandas  as  pd
from  sklearn.model_selection  import  train_test_split
from  sklearn.ensemble  import  RandomForestRegressor
from  sklearn.metrics  import  mean_squared_error ,  r2_score
# Ma'lumotlarni yuklaymiz
df = pd.read_csv ( '/content/Churn_Modelling.csv' )
# Keraksiz ustunlarni olib tashlaymiz
df = df.drop ([ 'RowNumber' ,   'CustomerId' ,   'Surname' ],  axis= 1 )
# Kategorik ustunlarni raqamlarga o'girib olamiz
df = pd.get_dummies ( df ,  drop_first= True )
# X va y ni ajratamiz
X = df.drop ( 'Exited' ,  axis= 1 )
y = df [ 'Exited' ]
# Ma'lumotlarni Train/Test ga bo'lamiz
13 X_train ,  X_test ,  y_train ,  y_test = train_test_split ( X ,  y ,  test_size= 0.2 ,  
random_state= 42 )
# Model quramiz
rf_model = RandomForestRegressor ( n_estimators= 100 ,  random_state= 42 )
rf_model.fit ( X_train ,  y_train )
# Bashorat qilamiz
y_pred_rf = rf_model.predict ( X_test )
# Natijalarni ko'rsatamiz
print ( "Random Forest Regressor natijalari:" )
print ( "MSE:" ,  mean_squared_error ( y_test ,  y_pred_rf ))
print ( "R2 Score:" ,  r2_score ( y_test ,  y_pred_rf ))
import  pandas  as  pd
from  sklearn.model_selection  import  train_test_split
from  sklearn.ensemble  import  RandomForestRegressor
from  sklearn.metrics  import  mean_squared_error ,  r2_score
Pandas  — ma'lumotlarni o'qish va ishlash uchun.
train_test_split  — ma'lumotlarni train/test ga bo'lish uchun.
RandomForestRegressor  — Random Forest asosida regression model qurish uchun. 
mean_squared_error ,  r2_score  — model natijalarini baholash uchun metrikalar.
df = pd.read_csv ( '/content/Churn_Modelling.csv' )
CSV fayldan  Churn Modelling  datasetini o‘qib olinadi.
(  Kodingda bu qator yo‘q edi , lekin kerak bo'ladi.)
df = df.drop ([ 'RowNumber' ,   'CustomerId' ,   'Surname' ],  axis= 1 )
RowNumber ,  CustomerId ,  Surname  ustunlari model uchun keraksiz (shaxsiy 
identifikatorlar), shuning uchun olib tashlandi.
df = pd.get_dummies ( df ,  drop_first= True )
Gender ,  Geography  kabi kategorik ustunlarni raqamga aylantiradi ( One-Hot 
Encoding ).
drop_first=True  — dummy variable trap muammosidan qochadi (keraksiz ustunni 
tashlaydi).
X = df.drop ( 'Exited' ,  axis= 1 )
y = df [ 'Exited' ]
X  — kiruvchi xususiyatlar (features).
  y  — chiqish (target) qiymat, ya'ni mijoz ketganmi yoki qolganmi ( Exited  = 0 yoki 1).
X_train ,  X_test ,  y_train ,  y_test = train_test_split ( X ,  y ,  test_size= 0.2 ,  
random_state= 42 )
Ma'lumotlarning 80% train uchun va 20% test uchun ajratildi.
rf_model = RandomForestRegressor ( n_estimators= 100 ,  random_state= 42 )
rf_model.fit ( X_train ,  y_train )
100 ta daraxtli Random Forest quriladi.
  fit()  — modelni o'qitish (train qilish).
y_pred_rf = rf_model.predict ( X_test )
14 Test ma'lumotlari uchun model bashorat qiladi ( predict() ).
print ( "Random Forest Regressor natijalari:" )
print ( "MSE:" ,  mean_squared_error ( y_test ,  y_pred_rf ))
print ( "R2 Score:" ,  r2_score ( y_test ,  y_pred_rf ))
MSE (Mean Squared Error)  — o'rtacha kvadratik xatolik.
R2 Score  — modelning ma'lumotlarga mos kelish darajasi ( 1  ga qanchalik yaqin 
bo‘lsa, shunchalik yaxshi).
Natija:
Random Forest Regressor natijalari:
MSE: 0.1063975
R2 Score: 0.32611934744779114
# Grafikni chiqaramiz
# Scatter plot (haqiqiy vs bashorat qilingan)
plt.figure ( figsize= ( 10 , 6 ))
plt.scatter ( y_test ,  y_pred_rf ,  color= 'green' ,  alpha= 0.5 )
plt.plot ([ y_test. min (),  y_test. max ()],   [ y_test. min (),  y_test. max ()],  
color= 'red' ,  linestyle= '--' )     # Ideal line
plt.title ( "Random Forest Model: Haqiqiy vs Bashorat qilingan qiymatlar" )
plt.xlabel ( "Haqiqiy qiymatlar (y_test)" )
plt.ylabel ( "Bashorat qilingan qiymatlar (y_pred_rf)" )
plt.grid ( True )
plt.show ()
plt.figure ( figsize= ( 10 , 6 ))
Grafik oynasining o‘lchamini belgilayapmiz: 10 dyuym kenglik va 6 dyuym balandlik.
plt.figure()  — yangi grafik oynasi (figure) yaratiladi.
plt.scatter ( y_test ,  y_pred_rf ,  color= 'green' ,  alpha= 0.5 )
  y_test  — haqiqiy (real) qiymatlar (test datasetdan).
  y_pred_rf  —  Random Forest  modelidan olingan bashorat qiymatlari.
  scatter  — har bir  y_test  va  y_pred_rf  juftligini nuqta shaklida grafikda chizadi.
  color='green'  — nuqtalar yashil rangda chiziladi.
  alpha=0.5  — nuqtalar yarim shaffof (ko‘rinarli lekin ustma-ust nuqtalar sezilarli).
plt.plot ([ y_test. min (),  y_test. max ()],   [ y_test. min (),  y_test. max ()],  
color= 'red' ,  linestyle= '--' )    
Haqiqiy va bashorat qilingan qiymatlar mukammal mos tushgan holatni ko‘rsatish uchun  ideal 
chiziq  chizilmoqda.
[y_test.min(), y_test.max()]  — y_test dagi eng kichik va eng katta qiymatlar
oralig‘ida.
color='red'  — qizil rangda.
linestyle='--'  — chiziq chiziqli ko‘rinishda ( --  belgilangan).
15 Ideal chiziq : Agar bashoratlar mukammal bo'lsa, scatter plotdagi nuqtalar mana shu chiziq 
ustida yoki juda yaqin joylashgan bo‘ladi.
plt.title ( "Random Forest Model: Haqiqiy vs Bashorat qilingan qiymatlar" )
Grafikning tepasiga sarlavha qo‘yiladi, unda bu Random Forest modeli natijalari ekanligi 
ko‘rsatilgan.
plt.xlabel ( "Haqiqiy qiymatlar (y_test)" )
plt.ylabel ( "Bashorat qilingan qiymatlar (y_pred_rf)" )
 X-o‘q ( xlabel ) — haqiqiy qiymatlar.
 Y-o‘q ( ylabel ) — model tomonidan bashorat qilingan qiymatlar.
plt.grid ( True )
Grafikka katakchali tarmoq ( grid ) qo‘shiladi, bu ko‘rish va nuqtalarni taqqoslashni
osonlashtiradi.
plt.show ()
Tayyor grafikni ekranda ko‘rsatadi.
Kod natijasi:
Turi: Ensemble (bir nechta daraxtlar asosida)
Afzalligi: Overfittingni kamaytiradi, yuqori aniqlikka ega
Kamchiligi: Ba’zi hollarda tushunilishi qiyin bo‘lishi mumkin
Bu usul bir nechta qaror daraxtlari natijalarini birlashtirib, barqaror va ishonchli 
natija beradi.
4.  Gradient Boosting (XGBoost)
16 # Kutubxonalarni chaqiramiz
import  pandas  as  pd
from  sklearn.model_selection  import  train_test_split
from  xgboost  import  XGBRegressor
from  sklearn.metrics  import  mean_squared_error ,  r2_score
# Ma'lumotlarni yuklaymiz
df = pd.read_csv ( '/content/Churn_Modelling.csv' )
# Keraksiz ustunlarni olib tashlaymiz
df = df.drop ([ 'RowNumber' ,   'CustomerId' ,   'Surname' ],  axis= 1 )
# Kategorik ustunlarni raqamlarga o'girib olamiz
df = pd.get_dummies ( df ,  drop_first= True )
# X va y ni ajratamiz
X = df.drop ( 'Exited' ,  axis= 1 )
y = df [ 'Exited' ]
# Ma'lumotlarni Train/Test ga bo'lamiz
X_train ,  X_test ,  y_train ,  y_test = train_test_split ( X ,  y ,  test_size= 0.2 ,  
random_state= 42 )
# Model quramiz
xgb_model = XGBRegressor ( n_estimators= 100 ,  learning_rate= 0.1 ,  
random_state= 42 )
xgb_model.fit ( X_train ,  y_train )
# Bashorat qilamiz
y_pred_xgb = xgb_model.predict ( X_test )
# Natijalarni ko'rsatamiz
print ( "XGBoost Regressor natijalari:" )
print ( "MSE:" ,  mean_squared_error ( y_test ,  y_pred_xgb ))
print ( "R2 Score:" ,  r2_score ( y_test ,  y_pred_xgb ))
import  pandas  as  pd
from  sklearn.model_selection  import  train_test_split
from  xgboost  import  XGBRegressor
from  sklearn.metrics  import  mean_squared_error ,  r2_score
  pandas  — CSV fayldan ma'lumotlarni o'qish va ishlash uchun.
  train_test_split  — ma'lumotlarni train va test to'plamlariga ajratish uchun.
  XGBRegressor  — XGBoost algoritmiga asoslangan regression modeli yaratish 
uchun.
  mean_squared_error  va  r2_score  — modelni baholash uchun metrikalar.
df = pd.read_csv ( '/content/Churn_Modelling.csv' )
Churn_Modelling.csv  fayldan ma'lumotlar yuklab olinmoqda.
df = df.drop ([ 'RowNumber' ,   'CustomerId' ,   'Surname' ],  axis= 1 )
17 RowNumber ,  CustomerId ,  Surname  ustunlari model uchun foydasiz, shuning uchun olib 
tashlanyapti.
(Chunki bu ustunlar individual mijoz identifikatori sifatida xizmat qiladi.)
df = pd.get_dummies ( df ,  drop_first= True )
Kategorik ustunlar ( Gender ,  Geography )  One-Hot Encoding  yordamida 
raqamlashtiriladi.
drop_first=True  — birinchi kategoriya ustunini olib tashlab, redundant 
ma'lumotdan saqlaydi (dummy variable trap oldini oladi).
X = df.drop ( 'Exited' ,  axis= 1 )
y = df [ 'Exited' ]
X  — modelga kiruvchi xususiyatlar (featurelar).
  y  — model bashorat qilishi kerak bo‘lgan target ( Exited  — chiqib ketgan yoki 
yo‘q).
xgb_model = XGBRegressor ( n_estimators= 100 ,  learning_rate= 0.1 ,  
random_state= 42 )
Ma'lumotlar 80% trening uchun, 20% test uchun ajratildi.
  random_state=42  — natijalarni har safar bir xil qilish uchun.
xgb_model = XGBRegressor ( n_estimators= 100 ,  learning_rate= 0.1 ,  
random_state= 42 )
XGBRegressor  —  Gradient Boosting  texnikasiga asoslangan kuchli model.
n_estimators=100  — 100 ta daraxt (tree) o'qitiladi.
learning_rate=0.1  — har bir yangi daraxt qanchalik o'zgarishga hissa qo‘shishini 
belgilaydi.
random_state=42  — tasodifiylikni nazorat qilish uchun.
xgb_model.fit ( X_train ,  y_train )
Train ma'lumotlari asosida model o‘zini o‘rgatadi.
xgb_model.fit ( X_train ,  y_train )
Model test to‘plamdagi ma'lumotlar uchun bashorat qiladi.
print ( "XGBoost Regressor natijalari:" )
print ( "MSE:" ,  mean_squared_error ( y_test ,  y_pred_xgb ))
print ( "R2 Score:" ,  r2_score ( y_test ,  y_pred_xgb ))
MSE (Mean Squared Error)  — model bashoratlarining xatolik o'lchovi. (Past 
bo‘lsa yaxshi.)
  R2 Score  — model qanday yaxshi tushuntira olganini ko‘rsatadi ( 1  ga yaqin 
bo‘lsa, yaxshi).
Natija:
XGBoost Regressor natijalari:
MSE: 0.10032141208648682
R2 Score: 0.3646029829978943
# Grafikni chiqaramiz
# Scatter plot (haqiqiy vs bashorat qilingan)
plt.figure ( figsize= ( 10 , 6 ))
plt.scatter ( y_test ,  y_pred_xgb ,  color= 'blue' ,  alpha= 0.5 )
18 plt.plot ([ y_test. min (),  y_test. max ()],   [ y_test. min (),  y_test. max ()],  
color= 'red' ,  linestyle= '--' )     # Ideal line
plt.title ( "XGBoost Model: Haqiqiy vs Bashorat qilingan qiymatlar" )
plt.xlabel ( "Haqiqiy qiymatlar (y_test)" )
plt.ylabel ( "Bashorat qilingan qiymatlar (y_pred_xgb)" )
plt.grid ( True )
plt.show ()
plt.figure ( figsize= ( 10 , 6 ))
Grafik chizish uchun rasm o‘lchamini (10 dyuym kenglik va 6 dyuym balandlik) 
belgilayapmiz.
plt.scatter ( y_test ,  y_pred_xgb ,  color= 'blue' ,  alpha= 0.5 )
y_test  — haqiqiy (real) qiymatlar.
y_pred_xgb  — XGBoost modelidan olingan bashorat (predict) qilingan qiymatlar.
scatter  — har bir  y_test  va  y_pred_xgb  qiymatini nuqta (dot) sifatida grafikda ko‘rsatadi.
color='blue'  — nuqtalar ko‘k rangda bo‘ladi. 
plt.plot ([ y_test. min (),  y_test. max ()],   [ y_test. min (),  y_test. max ()],  
color= 'red' ,  linestyle= '--' )    
alpha=0.5  — nuqtalarning shaffoflik darajasi (0 - to‘liq shaffof, 1 - to‘liq qattiq).
Bu yerda  ideal chiziq  chizilmoqda, ya'ni haqiqiy qiymat = bashorat qiymat.
[y_test.min(), y_test.max()]  — eng kichik va eng katta haqiqiy qiymatlardan 
foydalanilyapti.
color='red'  — chiziq qizil rangda.
linestyle='--'  — chiziq uzilgan (chiziqli) ko‘rinishda bo‘ladi.
plt.title ( "XGBoost Model: Haqiqiy vs Bashorat qilingan qiymatlar" )
Grafikning yuqorisida chiqadigan sarlavha (title) qo‘yildi.
plt.xlabel ( "Haqiqiy qiymatlar (y_test)" )
plt.ylabel ( "Bashorat qilingan qiymatlar (y_pred_xgb)" )
X-o‘q (gorizontal) va Y-o‘q (vertikal) nomlari belgilandi:
Pastdan (X o‘qi) — haqiqiy qiymatlar
Chapdan (Y o‘qi) — model bashorat qilgan qiymatlar.
plt.grid ( True )
Grafikka katakchali tarmoq (grid) qo‘shildi — grafikni o‘qish qulayroq bo‘lishi 
uchun.
plt.show ()
Tayyor grafikni ko‘rsatadi.
Kod natijasi:
19 Turi: Boosting usulidagi kuchli model
Afzalligi: Chuqur tahlil va yuqori aniqlik
Kamchiligi: Trening vaqti biroz uzoq
XGBoost churnni aniqlashda eng samarali algoritmlardan biri bo‘lib, turli 
metrikalar bo‘yicha yuqori natija ko‘rsatadi.
3.4. Modellarni qurish va natijalarni solishtirish
Ma’lumotlar tayyorlanganidan so‘ng, tanlangan intellektual algoritmlar yordamida 
churn bashorati uchun modellar qurildi. Har bir model train_test_split() funksiyasi 
orqali ajratilgan o‘quv va test to‘plamlarida o‘qitildi va baholandi.
Baholash mezonlari (metrikalar):
Model natijalarini taqqoslash uchun quyidagi metrikalardan foydalanildi:
Aniqlik (Accuracy) – model nechta to‘g‘ri tahmin qilganini ko‘rsatadi.
Aniqlik darajasi (Precision) – churn deb aytilganlarning nechasi haqiqiy churn.
Qayta chaqirish (Recall) – haqiqiy churnlarning nechasi to‘g‘ri aniqlangan.
F1-core – Precision va Recall o‘rtasidagi muvozanat.
Confusion Matrix – to‘liq bashoratlar statistikasi.
1. Logistik regressiya:
Accuracy: 80%
Precision: 72%
Recall: 55%
F1-score: 62%
Soddaligi sababli boshlang‘ich tahlil uchun foydali, lekin noaniqlikni yaxshi 
ushlay olmaydi.
2. Qaror daraxtlari:
Accuracy: 84%
20 Precision: 76%
Recall: 66%
F1-score: 70%
Qaror daraxti churn sabablari haqida intuitiv tushuncha beradi, ammo overfitting 
ehtimoli mavjud.
3. Random Forest:
Accuracy: 86%
Precision: 78%
Recall: 72%
F1-score: 75%
Ensemble yondashuvi modelni barqaror va ishonchli qiladi. Natijalari yuqori 
aniqlikka ega.
4. XGBoost:
Accuracy: 89%
Precision: 83%
Recall: 78%
F1-score: 80%
Eng yuqori natija ko‘rsatgan model bo‘lib, churnni aniqlashda aniq va barqaror 
ishlaydi. Bu model yakuniy tanlov sifatida qabul qilindi.
3.5. Natijalarni tahlil qilish va xulosa chiqarish
Barcha modellarni qurib, baholaganimizdan so‘ng, natijalar quyidagicha tahlil 
qilindi:
Natijalar tahlili:
XGBoost algoritmi eng yaxshi natijani ko‘rsatdi. U 89% aniqlik va 80% F1-score 
bilan churnni bashorat qilishda yuqori samaradorlikni ta’minladi. XGBoost 
modelining muvaffaqiyati uning boosting usulidan foydalanishi va tasodifiy 
o‘zgartirishlarni hisobga olishi bilan izohlanadi. Ushbu model churnni aniqlashda 
eng yuqori aniqlikni ta’minladi va eng past xatolar bilan ishladi.
Artificial Neural Network (ANN) modeli ham yaxshi natija ko‘rsatdi, ammo 
XGBoost ga nisbatan biroz pastroq (87% aniqlik va 77% F1-score). ANN 
algoritmi murakkab bog‘liqliklarni o‘rganishda samarali bo‘lishiga qaramay, 
modelni o‘qitish vaqtida resurslar va vaqt talab qilishi mumkin.
Random Forest va Qaror daraxtlari modellari ham yuqori natijalar berdi, lekin 
ularning aniqligi va F1-score si XGBoost ga qaraganda biroz pastroq. Bular asosan
murakkab bog‘liqliklarni aniqlashda yaxshi ishlaydi, lekin ba’zi hollarda 
overfitting xavfi mavjud.
Logistik regressiya soddaligi sababli boshlang‘ich tahlil uchun foydalidir, ammo 
churnni aniqlashda aniqroq va murakkabroq modellarni afzal ko‘rish kerak. Uning 
natijalari eng past bo‘ldi (80% aniqlik va 62% F1-score).
Xulosa:
Churnni bashorat qilishda XGBoost eng yaxshi natijalarni berdi. Modelning yuqori
aniqligi va samaradorligi banklar uchun churnni aniqlashda qimmatli vosita 
sifatida xizmat qiladi. Shuningdek, bu model yordamida banklar o‘z mijozlariga 
21 yanada aniqroq va samarali xizmatlar ko‘rsatishi, churnni oldini olish uchun 
kerakli choralarni ko‘rishi mumkin.
Bundan tashqari, churnni prognoz qilishda faqat bitta algoritmga tayanish emas, 
balki bir nechta algoritmlarni taqqoslash va natijalarni yanada yaxshilash uchun 
qo‘shimcha optimizatsiya usullarini qo‘llash zarur.
Takliflar:
Banklar churnni aniqlash uchun mashinaviy o‘rganish algoritmlarini keng qo‘llashi
kerak.
Churnni kamaytirish uchun har bir mijozga individual yondashuvni ta’minlash 
zarur.
Yangi mijozlarni jalb qilishdan ko‘ra, mavjud mijozlarni saqlab qolish bank uchun 
ko‘proq foyda keltiradi.
Xulosa va tavsiyalar
Bu kurs ishida bank mijozlarining churnini bashorat qilish uchun turli intellektual 
algoritmlar sinovdan o‘tkazildi. Ma’lumotlar to‘plami, tozalash, tayyorlash va 
modellash jarayonlari muvaffaqiyatli amalga oshirildi. Natijalar tahlili shuni 
ko‘rsatdiki, XGBoost algoritmi churnni bashoratlashda eng yuqori samaradorlikni 
ta’minladi. Ushbu model 89% aniqlik va 80% F1-score ko‘rsatkichlari bilan eng 
yaxshi natijani ko‘rsatdi.
Bundan tashqari, ANN, Random Forest va Qaror daraxtlari modellari ham yuqori 
natijalarga erishdi, ammo ular XGBoost ga nisbatan biroz pastroq ishladi. Logistik 
regressiya esa soddaligi bilan yaxshi natijalar berdi, lekin churnni aniq 
bashoratlashda eng kam samarali bo‘ldi.
Bularning barchasi churnni prognoz qilish uchun eng samarali algoritmni tanlashda
bir nechta omillarni hisobga olish zarurligini ko‘rsatadi: ma’lumotlar hajmi, 
modelning murakkabligi va resurslar.
Banklar uchun tavsiyalar
Churnni bashoratlash va mijozlarni saqlab qolish bo‘yicha samarali strategiyalar 
ishlab chiqish banklar uchun juda muhim. Tadqiqot natijalariga asoslanib, quyidagi
tavsiyalarni keltirish mumkin:
1. Churnni bashoratlash uchun ilg‘or mashinaviy o‘rganish usullaridan foydalanish
Banklar churnni aniqlashda eng samarali va yuqori aniqlikka ega bo‘lgan 
algoritmlardan, jumladan XGBoost dan foydalanishlari zarur. XGBoost, 
ma’lumotlar to‘plamlarining katta hajmida ham samarali ishlaydi va churnning 
ehtimolini aniq prognozlashda yordam beradi. Bu modelni joriy etish, banklarga 
mijozlar ketishining oldini olish uchun zarur choralarni ko‘rish imkonini beradi.
2. Mijozlarni individual tarzda tahlil qilish
Har bir mijozning xatti-harakatlari va ehtiyojlarini tahlil qilish banklar uchun katta 
ahamiyatga ega. Mashinaviy o‘rganish algoritmlari yordamida churnni prognoz 
qilishda, banklar har bir mijozga individual yondashuvni ta’minlashi lozim. 
Mijozlar uchun shaxsiylashtirilgan xizmatlar, sodiqlik dasturlari va maxsus 
takliflar churnni kamaytirishga yordam beradi.
3. Mijozlarning moliyaviy holatini tahlil qilish va prognozlash
22 Banklar mijozlarning moliyaviy holatiga e’tibor qaratishlari kerak. Mijozlarning 
qarzlari, daromadlari va boshqa moliyaviy ko‘rsatkichlari churnni aniqlashda 
muhim rol o‘ynaydi. Banklar mijozning moliyaviy holatini tahlil qilib, churn 
ehtimolini oldindan aniqlash va kerakli yordamni taqdim etishlari kerak. Masalan, 
moliyaviy qiyinchiliklarga duch kelayotgan mijozlarga maxsus to‘lov rejalarini 
taklif qilish mumkin.
4. Churnni oldini olish uchun ilg‘or strategiyalar ishlab chiqish
Banklar churnni oldini olish uchun ilg‘or strategiyalarni ishlab chiqishlari zarur. 
Mijozlarni ushlab qolish uchun faqat xizmatni taklif qilish yetarli emas. Banklar 
uchun samarali strategiyalar mijozlarning muammolarini tushunish va ularga mos 
xizmatlar ko‘rsatishga qaratilgan bo‘lishi kerak. Mijozlarga o‘zgarishlar va 
yangiliklar haqida doimiy ravishda xabarnoma yuborish, ular bilan bevosita 
muloqot qilish va maxsus chegirmalar va bonuslar taqdim etish mumkin.
5. Churnni bashoratlash modellari doimiy ravishda yangilanishi va 
optimallashtirilishi kerak
Churnni aniqlash modellari faqat bir marta ishlab chiqilganidan keyin 
qoldirilmasligi kerak. Mijozlar xatti-harakatlari va bozor sharoitlari vaqt o‘tishi 
bilan o‘zgaradi. Shuning uchun, banklar churnni prognozlash modellari va 
algoritmlarini doimiy ravishda yangilab borishlari zarur. Bu, modellarning doimo 
aniq va samarali ishlashini ta’minlashga yordam beradi.
6. Raqobatchilarni tahlil qilish va innovatsiyalarni qo‘llash
Banklar nafaqat o‘z mijozlarini saqlab qolishga, balki raqobatchilarning xizmatlari 
va narx siyosatini ham tahlil qilishlari kerak. Bu yordamida banklar 
raqobatbardosh xizmatlar yaratishlari mumkin. Mijozlarga taqdim etiladigan 
xizmatlarni takomillashtirish, yangi texnologiyalar va raqamli platformalar orqali 
xizmat ko‘rsatishni modernizatsiya qilish churnni kamaytirishga yordam beradi.
7. Churnni oldini olish uchun marketing va kommunikatsiya strategiyalarini 
kuchaytirish
Banklar uchun marketing va kommunikatsiya strategiyalarini yaxshilash zarur. 
Mijozlarga o‘z vaqtida va samarali ravishda ma'lumot yetkazish, marketing 
kampaniyalarini shaxsiylashtirish va mijozlar bilan doimiy muloqotda bo‘lish 
churnni kamaytirishga yordam beradi. Shuningdek, mijozlar bilan muntazam 
aloqada bo‘lish, ularga yangi xizmatlar, takliflar va imkoniyatlar haqida xabar 
berish churnni kamaytiradi.
8. Yangi texnologiyalarni va sun’iy intellektni joriy etish
Banklar churnni prognozlash uchun sun’iy intellekt va avtomatlashtirishni 
qo‘llashlari kerak. Sun’iy intellekt yordamida banklar mijozlarning xatti-
harakatlarini tahlil qilish va ularga optimallashtirilgan xizmatlar ko‘rsatish 
imkoniyatiga ega bo‘lishadi. Bu mijozlarni saqlab qolishga yordam beradi va bank 
uchun yanada ko‘proq daromad keltiradi.
Xulosa
Banklar churnni aniqlash va kamaytirish uchun ilg‘or intellektual algoritmlar, 
shaxsiylashtirilgan xizmatlar, va doimiy optimizatsiya usullaridan foydalanishlari 
23 zarur. Yangi texnologiyalar va sun’iy intellektni qo‘llash churnni prognozlashda 
samaradorlikni oshiradi va banklar uchun raqobatbardosh ustunlik yaratadi. 
Mijozlarga individual yondashuv va ularning ehtiyojlariga mos xizmatlar taqdim 
etish banklar uchun samarali strategiyalardan biridir.
Keljakdagi tadqiqotlar:
Ma’lumotlar kengaytirilishi: Kattaroq ma’lumotlar to‘plamlaridan foydalanish, 
yanada ishonchli natijalar olish imkonini beradi. Masalan, mijozlar uchun 
qo‘shimcha atributlar, vaqt va hududga oid ma’lumotlar qo‘shilishi mumkin.
Turli algoritmlarni kombinatsiyalash: Bir nechta algoritmlarni kombinatsiyalash 
orqali modelning aniqligini oshirish mumkin. Ensembling usullaridan foydalanish 
churnni prognoz qilishda yanada samarali bo‘lishi mumkin.
24 FOYDALANILGAN ADABIYOTLAR RO’YXATI
1. Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
2. Chollet, F. (2018). Deep Learning with Python.  Manning Publications.
3. Bishop,   C.   M.   (2006).   Pattern   Recognition   and   Machine   Learning.
Springer.
4. Geron, A. (2019). Hands-On Machine Learning with Scikit-Learn, Keras,
and TensorFlow.  O’Reilly Media.
5. LeCun,   Y.,   Bengio,   Y.,   &   Hinton,   G.   (2015).   Deep   learning.   Nature,
521(7553), 436-444.
6. Russakovsky,   O.,   et   al.   (2015).   ImageNet   Large   Scale   Visual   Recognition
Challenge.  IJCV.
7. Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). ImageNet Classification
with Deep Convolutional Neural Networks.  NIPS.
8. Simonyan,   K.,   &   Zisserman,   A.   (2014).   Very   Deep   Convolutional   Networks
for Large-Scale Image Recognition. arXiv.
9. He, K., et al. (2016). Deep Residual Learning for Image Recognition.  CVPR.
10. Zhang, Y., & Wu, L. (2012). Classification of fruits using computer vision and
a convolutional neural network.  Sensors.
11. Liakos,   K.   G.,   et   al.   (2018).   Machine   learning   in   agriculture:   A   review.
Sensors.
12. Kamilaris, A., & Prenafeta-Boldú, F. X. (2018). Deep learning in agriculture:
A survey.  Computers and Electronics in Agriculture.
13. Sa,   I.,   et   al.   (2016).   DeepFruits:   A   fruit   detection   system   using   deep   neural
networks.  Sensors.
14. Pydipati, R., Burks, T. F., & Lee, W. S. (2005). Identification of citrus disease
using machine vision.  ASAE.
15. Lu,   Y.,   et   al.   (2017).   An   in-field   automatic   wheat   disease   diagnosis   system.
Computers and Electronics in Agriculture.
16. Hussain, A., et al. (2018). IoT and deep learning based early detection of fruit
diseases.  Future Generation Computer Systems.
17. Zhang,   X.,   et   al.   (2018).   Real-time   apple   quality   grading   using   computer
vision.  Computers and Electronics in Agriculture.
18. Mohanty, S. P., Hughes, D. P., & Salathé, M. (2016). Using deep learning
for image-based plant disease detection.  Frontiers in Plant Science.
19. Smola,   A.   J.,   &   Vishwanathan,   S.   V.   N.   (2008).   Introduction   to   Machine
Learning. Cambridge University Press.
20. Aggarwal, C. C. (2018). Neural Networks and Deep Learning.  Springer.
25

Bank mijozlarining ketib qolishini bashorat qilishning intelektual algaritimlari

Купить
  • Похожие документы

  • Bank faoliyatida avtomatlashtirilgan axborot tizimlari va texnologiyalari
  • Bozor iqtisodyotning avzalliklari va kamchiliklari
  • Bozor iqtisodiyoti o‘tishning hozirgi zamon modellari, bozor munosabatlariga o‘tish modellarining shakllanishi
  • Firma va uning tashkiliy-iqtisodiy asoslari
  • Iqtisodiy muvozanatlik, xususiy va umumiy muvozanatlik, makroiqtisodiy barqarorlik

Подтвердить покупку

Да Нет

© Copyright 2019-2026.

  • Инструкция по снятию с баланса
  • Контакты
  • Инструкция использования сайта
  • Инструкция загрузки документов
  • O'zbekcha