logo

MASHINAVIY O‘QITISHNING KNN ALGORITMI ASOSIDA TASVIRLARNI TASNIFLASH

Yuklangan vaqt:

20.11.2024

Ko'chirishlar soni:

0

Hajmi:

1894.693359375 KB
1MASHINAVIY O‘QITISHNING KNN ALGORITMI ASOSIDA
TASVIRLARNI TASNIFLASH  
Mundarija
 
Kirish………………………………………………………………...…... 3-5
1.  MASHINAVIY O‘QITISH ASOSIDA TASVIRLARNI 
TASNIFLASHNING TIZIMLI TAHLIL …..………………………………..….... 6
1.1. Tasvirlarni tasniflash asoslari ... ……………………….……….……………6
1.2.  Tasvirlarni tasniflash uchun mashinani o‘rganish algoritmlari……………... 9
1.3. Tasvirlarni tasniflashda KNN algoritmining qo‘llanilishi.. ………...……...  12
1.4.  KNN algoritmining afzalliklari va cheklovlari ……………...………....… 13
2. KNN ALGORITMI ASOSIDA  TASVIRLARNI TASNIFLASHNING  
METODOLOGIYASI………………………………………….…………..….….15
2.1. Ma’lumotlar to‘plami tavsifi     …………….. …………………………......  15
2.2.  Ma’lumotlarga o ldindan ishlov berish texnikasi ….  …….…………….….. 16
2.3. KNN algoritmi……………………………………………………...…....... 17
2.4  KNN algoritmini o‘qitish……………...…….…………………………..... 28
2.4  Eksperimental natijalar ...……………...…….…………………………..... 33
3.  KNN ALGORITMI ASOSIDA  TASVIRLARNI TASNIFLASHNING 
DASTURIY TA’MINOTI VA UNDAN FOYDALANISH TAVSIFI ..………..  36
3.1   Funksional sxema va uning tavsifi ………………………..…………..…... 36
3.2  Dasturiy ta’minot tavsifi va undan foydalanish. ….…..…………….…….. 37
Xulosa………………………………………………………………………........ 42
Foydalanilgan adabiyotlar ro‘yxati…………………………………………….... 43
Ilova…………………………………………………………………………....... 45 2 K I R I SH
Masalaning   dolzarbligi.   KNN   algoritmidan   foydalangan   holda   tasvirlarni
tasniflash   mavzusi   kompyuterli   ko‘rish   va   mashinani   o‘qitish   sohasida   katta
ahamiyatga ega. O‘zining soddaligi va samaradorligi bilan mashhur bo‘lgan KNN
algoritmi obyektni tanib olish va tibbiy tasvirlashdan tortib kuzatuv tizimlarigacha
bo‘lgan   ilovalar   bilan   tasvir tasnifiga   ko‘p   qirrali   yondashuvni
taklif   etadi.   Turli   sohalarda raqamli   tasvirlarning   eksponensial
o‘sishi bilan tasvirlarni avtomatik ravishda tasniflash va izohlash qobiliyati dolzarb
masala hisoblanadi. 
Avtonom   transport   vositalari   sohasida   KNN   algoritmi   obyektlarni   aniqlash
va   tasniflashga,   o‘z-o‘zini   boshqarish   texnologiyalarining   xavfsizligi   va
ishonchliligini   oshirishga   hissa   qo‘shadi.   Chakana   savdoda   tasvirni   tasniflash
inventarizatsiyani   boshqarishni   soddalashtirishi   va   mahsulotni   aniq   tanib   olish   va
tavsiya   etish   tizimlari   orqali   mijozlar   tajribasini   yaxshilashi   mumkin.   Bundan
tashqari, xavfsizlik tizimlarida KNN algoritmi shaxslar va obyektlarni aniqlash va
tanib   olishda   yordam   beradi   va   shu   bilan   kuzatuv   va   xavfsizlik   choralarini
kuchaytiradi.
Raqamli   tasvirlarning   ortishi   to‘xtovsiz   davom   etar   ekan,   tasvirlarni
tasniflashning samarali, aniq va kengaytiriladigan usullariga bo‘lgan ehtiyoj tobora
ortib bormoqda. KNN algoritmining turli xil ma’lumotlar to‘plamlariga moslashish
qobiliyati   va   uni   amalga   oshirish   qulayligi   ushbu   kontekstda   qimmatli   vositaga
aylantiradi. Bundan tashqari, hisoblash quvvatidagi uzluksiz yutuqlar va murakkab
xususiyatlarni   ajratib   olish   texnikasining   rivojlanishi   KNN   algoritmining
potentsialini va real stsenariylarda qo‘llanilishini kengaytirmoqda.
Shuning   uchun,   tasvirni   tasniflash   uchun   KNN   algoritmini   qo‘llash   va
takomillashtirish   texnologiyani   rivojlantirish   turli   sohalarda   aqlli,
avtomatlashtirilgan   tasvir   tahliliga   ortib   borayotgan   talabni   qondirish   uchun   juda
muhim hisoblanadi. 3Masalaning   qo‘yilishi.   Mashinaviy   o‘qitishning   KNN   algoritmi   asosida
tasvirlarni tasniflash  algoritmi va  dasturiy ta’minotini yaratish  qaralgan.
Tadqiqotning   maqsadi :   m ashinaviy   o‘qitishning   KNN   algoritmi   asosida
tasvirlarni sinflashtirish  algoritmi va  dasturi y ta’minoti  ishlab chiqishd an iborat .
Tadqiqotning   vazifalari:   Dissertatsiya  ishining maqsadini  amalga oshirish
uchun quyidagi vazifalar bajariladi:
1. KNN algoritmi va  uning yordamida  tasvir larni   sinflashtirish  masalasi  tizimli
tahlil qilinadi .
2. Tasvir ni   sinflashtirish  uchun kerakli ma’lumotlar to‘plami qayta ishlanadi .
3. KNN algoritmi  asosida  tasvir larni   sinflashtirish  algoritmi ishlab chiqiladi .
4. Ishlab   chiqilgan   tasvir larni   sinflashtirish   algoritmining   dasturiy   ta’minoti
yaratiladi.
Ishning  nazariy  va  amaliy  ahamiyati   KNN  algoritmi  asosida   mashinaviy
o‘qitishning tasvir   sinflashtirish   masalasini muvaffaqiyatli yechish uchun zarurdir.
Bu,   algoritmdagi   tushunchalarni   o‘rganish,   ma’lumotlarni   tayyorlash   va
sinflashtirish ,   natijalarni   tahlil   qilish   va   algoritmdagi   parametrlarni
optimallashtirishni o‘z ichiga oladi.
Tasnif.   BMI  kirish qismi, uchta bob, xulosa va foydalanigan adabiyotlardan
tashkil topgan. Ilovada, dastur kodi keltirilgan.
1-bobda,   mashinani   o‘qitishning   KNN   algoritmidan   foydalangan   holda
tasvirlarni tasniflash tizimli tahlil qilingan.
2-bobda,   tasvir   ma’lumotlariga   oldindan   ishlov   berish   va   KNN   algoritmini
o‘qitish jarayoni keltirilgan.
3 -bobda ,   tasvirlarni   tasniflashni   dasturiy   ta’minoti   va   undan   foydalanish
tavsifi berilgan .
BMI  mazmuni aks ettirilgan va nashr etilgan maqolalar. 
Yarmatov   Sh.Sh.,   Axmedov   R.I.   Image   classification   based   on   the   knn
algorithm of machine learning. // “Yangi O‘zbekiston: fan, ta’lim va innovatsiya”
Respublika miqyosidagi ilmiy-texnik anjuman. – Jizzax, 2024. – B. 270-272.
Tadqiqot mavzusi bo‘yicha adabiyotlar tahlili: 4T. Xasti, R. Tibshirani, J. Fridman. “The Elements of Statistical Learning”.
Publication:   2009,   Springer.   –   Ushbu   tadqiqotda   turli   xil   statistik   o‘qitish
usullarini,   jumladan   K-Eng   yaqin   qo‘shnilar   (KNN)   algoritmini   to‘liq   ko‘rib
chiqilgan.   Mualliflar   KNNning   nazariy   asoslarini,   tasniflash   vazifalarida   uning
soddaligi   va   samaradorligini   tahlil   qilgan.   Kitob,   shuningdek,   parametrlarni
sozlash va hisoblash murakkabligi kabi amaliy fikrlarni o‘z ichiga oladi. 
P. Cunningham, S. Delany. “k-Nearest  Neighbour Classifiers”.  Publication:
2007, UCD-CSI Working Paper Series. – Ushbu maqolada KNN algoritmi batafsil
o‘rganilib,   uning   kuchli   va   kamchiliklari   tahlil   qilingan.   Mualliflar   algoritmning
turli  sohalarda,   jumladan   tasvirlarni  tasniflashda  qo‘llanilishi   haqida  tushunchalar
bergan.   Ular   masofa   o‘lchovlari,   xususiyatlarni   tanlash   va   K   ning   turli
qiymatlarining tasniflash samaradorligiga ta’sirini muhokama qilganlar. 
L.   Liu,   X.   Liu,   X.   Cheng.   “A   Novel   Improved   K-Nearest   Neighbors
Algorithm   for   Image”.   Publication:   2017,   IEEE   Access.   –   Ushbu   tadqiqotda
an’anaviy KNN algoritmini tasvirlarni tasniflash vazifalarida ishlashini yaxshilash
uchun   takomillashtirish   taklif   qilingan.   Mualliflar   K-qo‘shnilar   uchun
moslashuvchan   tortish   sxemasini   va   yangi   xususiyatlarni   ajratib   olish   usulini
taqdim   etgan.   Ularning   eksperimental   natijalari   tasniflash   aniqligida   sezilarli
yaxshilanishlarni ko‘rsatib bergan.
A.   Oliva,   A.   Torralba.   “Modeling   the   Shape   of   the   Scene:   A   Holistic
Representation   of   the   Spatial   Envelope”.   Publication:   2001,   International   Journal
of Computer Vision. – Garchi ushbu maqolada faqat KNNga e’tibor qaratilmagan
bo‘lsada,   ushbu   maqola   sahna   tasnifi   uchun   yaxlit   xususiyatni   aks   ettiruvchi
fazoviy   konvert   tushunchasini   taqdim   etadi.   Tavsiya   etilgan   xususiyatni   ajratib
olish usuli tasvirni tasniflash uchun KNN bilan samarali birlashtirilishi mumkin. 
R.   Duda,   P.   Xart,   D.   Stork.   “Pattern   Classification”.   Publication:   2000,
Wiley-Interscience.   –   Ushbu   kitob   klassik   tasniflash   usullarining   keng   doirasini,
shu   jumladan   KNN   algoritmini   o‘z   ichiga   oladi.   Mualliflar   algoritmning   nazariy
asoslarini, amaliy tatbiqini va tasvirlarni tasniflashda qo‘llanilishini har tomonlama
tahlil qilganlar. 5  6I -BOB .  MASHINAVIY O‘QITISH ASOSIDA TASVIRLARNI
TASNIFLASHNING TIZIMLI TAHLIL I
1-bobda   tasvirlarni   tasniflash   va   mashinani   o‘qitish   algoritmlari   bilan
bog‘liq mavjud adabiyotlar har tomonlama ko‘rib chiqiladi. Ko‘plab tadqiqotlar va
ilmiy   ishlarga   tayanib,   ushbu   sohada   qo‘llaniladigan   turli   xil   mashinani   o‘qitish
usullarining   nozik   tomonlari   yoritilib,   tasvirlarni   tasniflash   asoslari   o‘rganiladi.
Klassik   K-Yaqin   qo‘shnilar   (KNN)   algoritmidan   tortib   eng   zamonaviy
konvolyutsion   neyron   tarmoqlarigacha   (CNN)   bo‘lgan   metodologiyalar
o‘rganiladi,   ularning   kuchli,   zaif   tomonlari   va   tasvirlarni   tasniflash   vazifalarida
qo‘llanilishi tahlil qilinadi. 
1.1. Tasvirlarni tasniflash asoslari
Ushbu   dissertatsiyada   mashinani   o‘qitishning   KNN   algoritmidan
foydalangan   holda   tasvirlarni   tasniflash   tizimli   tahlil   qilinadi.   Kompyuterli
ko‘rishda   tasvir   tasnifining   ahamiyatini   va   uning   turli   sohalarda   ko‘p   sonli
qo‘llanilishini   o‘rganish   orqali   masalani   qo‘yildi.   Chuqurroq   o‘rganib,   ushbu
tadqiqot   mohiyati   ochib   beriladi   va   dissertatsiyaning   maqsadlari   va   ko‘lami
belgilanadi. Ushbu  bob orqali    keyingi  boblarning konteksti, maqsadi  va tuzilishi
haqida   asosiy   tushunchaga   ega   bo‘linib,   KNN   yordamida   tasvirlarni   tasniflashni
o‘rganishga yo‘l ochiladi.
So‘nggi yillarda tasvirlarni tasniflash turli sohalarda va kompyuterli ko‘rish
sohasida   muhim   vazifa   sifatida   paydo   bo‘ldi.   Raqamli   tasvirlarning   eksponensial
o‘sishi  bilan vizual  tarkibni  tushunish va talqin qilishga qodir avtomatlashtirilgan
tizimlarga ehtiyoj  ortib bormoqda. Tasvirlarni tasniflash, kompyuterli ko‘rishning
kichik   sohasi,   tasvirlarni   vizual   xususiyatlariga   qarab   oldindan   belgilangan
sinflarga yoki teglarga ajratishni o‘z ichiga oladi. Ushbu vazifa obyektni aniqlash,
yuzni   aniqlash,   avtomobil   haydash,   tibbiy   tasvirlash   va   kuzatuv   tizimlarini   o‘z
ichiga olgan ko‘plab real dunyo ilovalari uchun asosiy qurilish bloki bo‘lib xizmat
qiladi.
Mashinani   o‘qitish   texnikasining   paydo   bo‘lishi   ma’lumotlardan
avtomatlashtirilgan   o‘rganish   imkonini   berib,   tasvir   tasnifini   inqilob   qildi.   Ko‘p 7sonli   mashinani   o‘rganish   algoritmlari   orasida   K-Yaqin   qo‘shnilar   (KNN)
algoritmi soddaligi, samaradorligi va talqin qilinishi bilan ajralib turadi. An’anaviy
parametrik   modellardan   farqli   o‘laroq,   KNN   parametrik   bo‘lmagan   algoritm
bo‘lib,   ma’lumotlar   nuqtalarini   xususiyat   maydonidagi   qo‘shni   nuqtalarga
o‘xshashligi   asosida   tasniflaydi.   Bu   xususiyat   KNN   ni,   ayniqsa,   asosiy
ma’lumotlarni   taqsimlash   murakkab   va   chiziqli   bo‘lmagan   bo‘lishi   mumkin
bo‘lgan tasvirlarni tasniflash vazifalari uchun mos qiladi.
Oddiyligiga   qaramay,   KNN   algoritmi   tasvirni   tasniflashning   turli
senariylarida   ajoyib   natijalar   ko‘rsatdi.   Uning   multimodal   ma’lumotlar   bilan
ishlash   va   turli   muammoli   sohalarga   moslashish   qobiliyati   uni   tadqiqotchilar   va
amaliyotchilar   uchun   muhim   tanlovga   aylantiradi.   Biroq,   KNN   bir   qancha
afzalliklarni   taqdim   etsa-da,   u   hisoblash   samarasizligi   va   ahamiyatsiz
xususiyatlarga sezgirlik kabi ma’lum qiyinchiliklarni ham keltirib chiqaradi. KNN
algoritmining   tushunish   va   uni   tasvirlarni   tasniflashda   qo‘llash   uning   to‘liq
imkoniyatlaridan   foydalanish   va   tasniflash   tizimlarining   aniqligi   va
samaradorligini oshirish uchun juda muhimdir.
Ushbu   dissertatsiyaning   asosiy   maqsadi   tasvirlarni   tasniflashda   K-Yaqin
qo‘shnilar   (KNN)   algoritmini   qo‘llashni   o‘rganish   va   uning   ishlashini   har
tomonlama   tahlil   qilishdir.   Xususan,   tadqiqot   quyidagi   maqsadlarga   erishishga
qaratilgan:
Turli   ma’lumotlar   to‘plamlari   va   muammoli   holatlar   uchun   tasvirlarni
tasniflash vazifalari uchun KNN algoritmining samaradorligini baholash;
Rasmlarni   tasniflashda   KNN   algoritmining   kuchli   va   zaif   tomonlarini
aniqlash   va   uning   ishlashiga   ta’sir   qiluvchi   omillarni,   jumladan,   ma’lumotlar
to‘plamining xususiyatlari, masofa o‘lchovlari va “K” qiymatini tahlil qilinadi.
Tasvirlarni   tasniflash   uchun   KNN   algoritmidan   foydalanishning   amaliy
jihatlari   haqida   tushunchalar   va   real   hayotiy   ilovalarida   uning   ishlashini
optimallashtirish bo‘yicha tavsiyalar beriladi.
Ushbu   vazifalarni   hal   qilish   orqali   dissertatsiyada   tasvirlarni   tasniflash
bo‘yicha   mavjud   bilimlarga   hissa   qo‘shish   va   KNN   algoritmidan   foydalangan 8holda yanada aniq va samarali tasniflash tizimlarini ishlab chiqishga yordam berish
maqsad qiladi.
Tasvirlarni   tasniflash   kompyuterli   ko‘rishning   asosiy   vazifasi   bo‘lib,
tasvirlarni   vizual   mazmuniga   qarab   oldindan   belgilangan   sinflarga   yoki   teglarga
ajratishni   o‘z   ichiga   oladi.   Jarayon   odatda   daslabki   tasvir   ma’lumotlarini   olish
bilan   boshlanadi,   so‘ngra   o‘lchamlarni   o‘zgartirish,   normallashtirish   va
xususiyatlarni   ajratib   olish   kabi   dastlabki   ishlov   berish   bosqichlari   amalga
oshiriladi.   Xususiyatlarni   ajratib   olish   tasvirni   tasniflashda   hal   qiluvchi   rol
o‘ynaydi,   chunki   u   xom   piksel   qiymatlarini   tasvir   mazmuni   haqida   tegishli
ma’lumotlarni   to‘playdigan   mazmunli   tasvirlarga   aylantiradi.   Xususiyatlarni
ajratib   olishning   keng   tarqalgan   usullari   orasida   yo‘naltirilgan   gradientlarning
gistogrammasi   (HOG),   masshtabni   o‘zgarmas   xususiyatni   o‘zgartirish   (SIFT)   va
mahalliy ikkilik naqshlar (LBP) mavjud [1].
Xususiyatlar   ajratib   olingandan   so‘ng,   ular   tasniflash   modelini   o‘qitish
uchun   ishlatiladi,   bu   ajratilgan   xususiyatlar   asosida   turli   sinflarni   farqlashni
o‘rganadi. Tasvirlarni tasniflash uchun K-Eng yaqin qo‘shnilar (KNN) va Support
vektor mashinalari (SVM) kabi an’anaviy usullardan tortib, konvolyutsion neyron
tarmoqlari   (CNN)   kabi   chuqur   o‘qitish   yondashuvlarigacha   turli   xil   mashinani
o‘qitish algoritmlaridan foydalanish mumkin. Algoritmni tanlash ma’lumotlarning
tabiati,   mavjud   hisoblash   resurslari   va   kerakli   aniqlik   darajasi   kabi   omillarga
bog‘liq. 91.2.  Tasvirlarni tasniflash uchun mashinani o‘rganish algoritmlari
K-Eng yaqin qo‘shnilar (KNN) algoritmi.  K-Eng yaqin qo‘shnilar (KNN)
algoritmi   tasniflash   va   regressiya   vazifalari   uchun   oddiy,   ammo   samarali
mashinani   o‘qitish   usulidir.   Tasvirlarni   tasniflash   kontekstida   KNN   xususiyat
maydonidagi   eng   yaqin   qo‘shnilari   orasida   ko‘pchilik   sinfiga   asoslangan   holda
berilgan rasmga sinf yorlig‘ini belgilaydi. Algoritm o‘xshash tasvirlar bir xil sinfga
tegishli   bo‘ladi   degan   faraz   ostida   ishlaydi,   bu   esa,   ayniqsa,   qaror   chegaralari
chiziqli bo‘lmagan yoki aniqlash qiyin bo‘lgan vazifalar uchun juda mos keladi.
KNN   algoritmining   asosiy   afzalliklaridan   biri   uning   soddaligi   va   amalga
oshirish   qulayligidir.   Ma’lumotlardan   ma’lum   bir   funksional   shaklni   o‘rganishni
talab   qiladigan   parametrik   modellardan   farqli   o‘laroq,   KNN   ma’lumotlarning
asosiy taqsimoti haqida hech qanday taxmin qilmaydi, bu uni juda moslashuvchan
va   turli   xil   muammoli   sohalarga   moslashishga   imkon   beradi.   Bundan   tashqari,
KNN   parametrik   bo‘lmagan   algoritmdir,   ya’ni   u   o‘quv   ma’lumotlaridan   aniq
parametrlarni o‘rganmaydi, bu ma’lumotlarni taqsimlash murakkab yoki noma’lum
bo‘lgan algoritmlarda foydali bo‘lishi mumkin [2].
Biroq,   KNN   algoritmining   asosiy   kamchiliklari   uning   hisoblash
samarasizligidir,   ayniqsa   katta   ma’lumotlar   to‘plami   yoki   yuqori   o‘lchamli
xususiyatlar   bo‘shliqlari   bilan   ishlashda.   KNN   so‘rov   nuqtasi   va   o‘quv
majmuasidagi   barcha   boshqa   ma’lumotlar   nuqtalari   orasidagi   hisoblash
masofalarini   talab   qilganligi   sababli,   algoritm   hisoblashi   samarasiz   bo‘lishi
mumkin, ayniqsa real vaqt cheklovlari bo‘lgan ilovalarda. Bundan tashqari, KNN
masofa   o‘lchovi   va   "K"   parametrining   qiymatini   tanlashga   sezgir,   bu   uning
ishlashiga sezilarli ta’sir ko‘rsatishi mumkin.
Cheklovlarga   qaramay,   KNN   algoritmi   ma’lum   algortimlardan   soddaligi,
izohlanishi va raqobatbardosh ishlashi tufayli tasvirlarni tasniflash vazifalari uchun
mashhur   tanlov   bo‘lib   qolmoqda.   Keyingi   boblarda   biz   KNN   algoritmining
tasvirlarni   tasniflashda   qo‘llanilishini   chuqurroq   o‘rganamiz   va   uning   ish
faoliyatini   ushbu   sohada   keng   qo‘llaniladigan   boshqa   mashinani   o‘qitish   usullari
bilan solishtiramiz. 10Support   vektor   mashinalari   (SVM).   Support   vektor   mashinalari   (SVM)
tasvirlarni   tasniflash   vazifalari   uchun   keng   qo‘llaniladigan   yana   bir   mashinani
o‘qitish algoritmidir. SVM sinflar orasidagi  chegarani maksimal  darajada oshirib,
xususiyat   maydonida   turli   sinflarning   ma’lumotlar   nuqtalarini   ajratib   turadigan
optimal   chegaralarini   topishga   qaratilgan.   Tasvirlarni   tasniflash   kontekstida
SVMlar   yuqori   o‘lchamli   xususiyatlar   bo‘shliqlari   va   chiziqli   bo‘lmagan   qaror
chegaralarini   samarali   boshqarishi   mumkin,   bu   ularni   murakkab   ma’lumotlarni
taqsimlash bilan bog‘liq vazifalar uchun mos qiladi [3,4].
SVM-larning   asosiy   afzalliklaridan   biri   bu   ularning   keng   ko‘lamli
ma’lumotlar   to‘plamlari   va   yuqori   o‘lchamli   xususiyatlar   bo‘shliqlarini   samarali
boshqarish qobiliyatidir. Yadro funksiyalaridan foydalangan holda, SVMlar kirish
ma’lumotlarini   chiziqli   bo‘linishi   mumkin   bo‘lgan   yuqori   o‘lchamli   bo‘shliqga
sozlab   berishi   mumkin,   hatto   chiziqli   bo‘lmagan   ajratilmaydigan   ma’lumotlar
uchun ham. Bundan tashqari, SVMlar ko‘rinmas ma’lumotlarga umumlashtirishni
rag‘batlantiradigan   marjani   maksimallashtirish   maqsadi   tufayli   haddan   tashqari
moslashishga qarshi mustahkamlikni taklif qiladi.
Biroq,   SVMlar,   xususan,   hisoblash   murakkabligi   va   giperparametrlarga
sezgirlik   nuqtai   nazaridan   ma’lum   cheklovlarga   ega.   Katta   ma’lumotlar
to‘plamlarida   SVM   modelini   o‘qitish   ko‘p   vaqt   talab   qilishi   mumkin,   ayniqsa
chiziqli bo‘lmagan yadro funksiyalaridan foydalanganda. Bundan tashqari, SVMlar
modelning   ishlashiga   sezilarli   ta’sir   ko‘rsatishi   mumkin   bo‘lgan   yadro   funksiyasi
va tartibga solish parametrini tanlash kabi giperparametrlarni diqqat bilan tanlashni
talab   qiladi.   Ushbu   qiyinchiliklarga   qaramay,   SVMlar   tasvirlarni   tasniflashning
keng ko‘lamli vazifalariga muvaffaqiyatli qo‘llanilib, ko‘pincha boshqa mashinani
o‘qitish algoritmlariga nisbatan raqobatbardosh ko‘rsatkichlarga erishdi.
Konvolyutsion   neyron   tarmoqlari   (CNN).   Konvolyutsion   neyron
tarmoqlari   (CNN)   so‘nggi   yillarda   tasvirlarni   tasniflash   sohasida   inqilob   qildi   va
turli   xil   ma’lumotlar   to‘plamlarida   eng   zamonaviy   ko‘rsatkichlarga   erishdi.   CNN
konvolyutsion   qatlamlar,   birlashtiruvchi   qatlamlar   va   chiziqli   bo‘lmagan
faollashtirish   funksiyalaridan   foydalangan   holda   piksel   qiymatlaridan   ierarxik 11tasvirlarni   olish   uchun   maxsus   ishlab   chiqilgan.   Ushbu   tarmoqlar   ierarxik
xususiyatlarni   mavhumlikning   turli   darajalarida   avtomatik   ravishda   o‘rganishi
mumkin,   bu   ularni   obyektni   aniqlash,   obyektni   tushunish   va   tasvirni
segmentatsiyalash kabi vazifalar uchun juda samarali qiladi.
CNN-ning   asosiy   afzalliklaridan   biri   ularning   umumiy   parametrlari   va
konvolyutsion   qatlamlarning   ierarxik   tuzilishi   tufayli   fazoviy   ierarxiyalarni   va
tasvirlardagi   mahalliy   bog‘liqliklarni   olish   qobiliyatidir.   Bundan   tashqari,   GPU
apparati   va   parallel   hisoblashdagi   yutuqlar   keng   ko‘lamli   ma’lumotlar
to‘plamlarida   chuqur   CNN   arxitekturasini   o‘qitish,   ularning   aniqligi   va
miqyoslanishini yanada yaxshilash imkonini berdi.
Ajoyib ishlashiga qaramay, CNN ma’lum cheklovlarga ega, jumladan, katta
hajmdagi   ma’lumotlar   va   o‘qitish   uchun   hisoblash   resurslariga   bo‘lgan   ehtiyoj
katta hisoblanadi.
Qarorlar   daraxtlari.   Qaror   daraxtlari   -   tasniflash   va   regressiya   vazifalari
uchun mashhur mashinani o‘qitish algoritmi bo‘lib, ularning soddaligi, izohlanishi
va   kategorik   va   raqamli   ma’lumotlarni   qayta   ishlash   qobiliyati   bilan   mashhur.
Tasvirlarni   tasniflash   kontekstida   qarorlar   daraxtlari   kirish   xususiyatlarining
qiymatlari asosida xususiyat maydonini hududlarga ajratadi, ma’lumotlarni deyarli
bir xil sinflarga yetguncha rekursiv ravishda kichik to‘plamlarga ajratadi.
Qaror   daraxtlarining   asosiy   afzalliklaridan   biri   bu   ularning   intuitiv   tasviri
bo‘lib, uni odamlar tomonidan osongina ko‘rish va talqin qilish mumkin. Qarorlar
daraxtlari   qaror   qabul   qilish   jarayoni   haqida   tushuncha   beradi,   bu   esa
foydalanuvchilarga tasniflash uchun ishlatiladigan mezonlarni tushunish  imkonini
beradi.   Bundan   tashqari,   qaror   daraxtlari   shovqinli   ma’lumotlarga   chidamli   va
kirish   funksiyalaridagi   etishmayotgan   qiymatlarni   boshqarishi   mumkin,   bu   ularni
to‘liq   bo‘lmagan   yoki   shovqinli   ma’lumotlarga   ega   bo‘lgan   real   ilovalari   uchun
mos qiladi [5].
Biroq,  qarorlar   daraxti  ma’lum   cheklovlarga  ega,  jumladan,  ularning  o‘quv
ma’lumotlarini   haddan   tashqari   moslashtirish   tendentsiyasi,   ayniqsa   murakkab
yoki   yuqori   o‘lchamli   xususiyatlar   bo‘shliqlari   bilan   ishlashda   kamchiliklar   bor. 12Haddan   tashqari   moslashishni   yumshatish   uchun   kesish,   ansambl   usullari
(masalan,   Tasodifiy   o‘rmonlar)   va   tartibga   solish   kabi   turli   xil   texnikalar   taklif
qilingan. Ushbu qiyinchiliklarga qaramay, qarorlar daraxtlari tasvirlarni tasniflash
vazifalari   uchun   mashhur   tanlov   bo‘lib   qolmoqda,   ayniqsa   izohlash   va   shaffoflik
muhim bo‘lgan senariylarda.
1.3. Tasvirlarni tasniflashda KNN algoritmining qo‘llanilishi
K-Yaqin   qo‘shnilar   (KNN)   algoritmi   murakkab   va   chiziqli   bo‘lmagan
qarorlar   chegaralarini   boshqarishda   soddaligi   va   samaradorligi   tufayli   tasvirlarni
tasniflash   vazifalarida   keng   qo‘llanilishini   topadi.   Tasvirlarni   tasniflashda   KNN
algoritmining   asosiy   qo llanilishidan   biri   undan   murakkabroq   algoritmlarniʻ
taqqoslash uchun asosiy model sifatida foydalanish hisoblanadi. To‘g‘ridan-to‘g‘ri
va   tushunarli   tasniflash   yondashuvini   ta’minlab,   KNN   boshqa   mashinani   o‘qitish
usullarini,   masalan,   Support   vektor   mashinalari   (SVM),   Konvolyutsion   Neyron
Tarmoqlar   (CNN)   va   Qaror   Daraxtlarini   solishtirish   uchun   mos   nuqta   bo‘lib
xizmat qiladi.
Bundan   tashqari,   KNN   algoritmi,   ayniqsa,   asosiy   ma’lumotlar   taqsimoti
parametrik   bo‘lmagan   va   aniq   modellashtirish   qiyin   bo‘lgan   algoritmlar   uchun
juda   mos   keladi.   Tasvirlar   turli   va   murakkab   chiziqlarni   ko‘rsatishi   mumkin
bo‘lgan   tasvirlarni   tasniflash   vazifalarida   KNN   ma’lumotlarning   mahalliy
tuzilishiga moslashish qobiliyati uni jozibali tanlovga aylantiradi. Bundan tashqari,
KNN ma’lumotlarni taqsimlash uchun hech qanday o‘ziga xos funksional shaklni
o‘z   zimmasiga   olmaydi,   bu   uni   parametrik   taxminlardan   og‘ishlarga   chidamli
qiladi.
Rasmlarni   tasniflashda   KNN   algoritmining   yana   bir   qo‘llanilishi   uning
ansambl   o‘quv   ramkalarida   qo‘llanilishidir.   Bagging   va   Boosting   kabi   ansambl
usullari   tasniflash   modelining   umumiy   ishlashini   yaxshilash   uchun   bir   nechta
asosiy o‘quvchilarni birlashtiradi. KNN ma’lumotlar taqsimotining turli jihatlarini
qamrab   olish   qobiliyatidan   foydalangan   holda   ansambl   modellarida   asosiy
o‘quvchilardan   biri   sifatida   ishlatilishi   mumkin.   Bir   nechta   KNN 13tasniflagichlarining   bashoratlarini   jamlash   orqali   ansambl   usullari   tasniflashning
aniqligi va mustahkamligini oshirishi mumkin [4,5].
Bundan   tashqari,   KNN   algoritmi   tasvirlarni   tasniflashda   holatni
moslashtirish   va   uzatishni   o‘rganish   algoritmlarda   dasturni   topadi.   Maqsadli
holatdagi   belgilangan   ma’lumotlar   cheklangan   bo‘lsa,   KNN   tasniflash
samaradorligini   oshirish   uchun   tegishli   manba   holatdagi   etiketli   ma’lumotlardan
foydalanishi mumkin. Manba va maqsadli holatlar o‘rtasidagi o‘xshash misollarni
aniqlash orqali KNN bilimlarni manbadan maqsadli holatga o‘tkazishi mumkin, bu
maqsadli holatdagi etiketli ma’lumotlarga bo‘lgan ehtiyojni kamaytiradi.
1.4 KNN algoritmining afzalliklari va kamchiliklari
Afzalliklari:
Oddiylik :   KNNni   amalga   oshirish   va   tushunish   oson,   bu   uni   tadqiqotchilar
va amaliyotchilar uchun ochiq qiladi.
Trening   bosqichi   yo‘q :   Belgilangan   ma’lumotlar   bo‘yicha   treningni   talab
qiladigan   parametrik   modellardan   farqli   o‘laroq,   KNN   aniq   o‘quv   bosqichini   o‘z
ichiga olmaydi. Buning o‘rniga, u butun o‘quv ma’lumotlar to‘plamini saqlaydi va
yangi  misollarning mavjud ma’lumotlar  nuqtalariga  o‘xshashligi  asosida  bashorat
qiladi.
Parametrik bo‘lmagan : KNN ma’lumotlarning asosiy taqsimoti haqida hech
qanday   taxmin   qilmaydi,   bu   uni   murakkab   va   chiziqli   bo‘lmagan   qaror
chegaralarini boshqarish uchun mos qiladi.
Moslashuvchanlik:   KNN   turli   xil   masofa   o‘lchovlaridan   foydalanishi
mumkin,   bu   foydalanuvchilarga   algoritmni   muayyan   muammoli   holatlarga
moslashtirishga imkon beradi.
Kamchiliklari:
Hisoblashning murakkabligi:  O‘quv ma’lumotlar to‘plamining hajmi o‘sishi
bilan   KNNning   hisoblashi   sezilarli   darajada   oshadi,   chunki   u   har   bir   bashorat
uchun barcha o‘quv misollarigacha hisoblash masofalarini talab qiladi. 14Ahamiyatsiz   xususiyatlarga   sezgirlik:   KNN   ma’lumotlar   to‘plamidagi
shovqin va ahamiyatsiz xususiyatlarga sezgir bo‘lib, bu, ayniqsa, yuqori o‘lchamli
xususiyatlar bo‘shliqlarida ish faoliyatini pasayishiga olib kelishi mumkin.
Optimal   “K”   tanlovi :   KNNda   qo‘shnilar   sonini   ("K")   tanlash   algoritmning
ishlashiga   sezilarli   ta’sir   ko‘rsatishi   mumkin.   "K"   uchun   mos   qiymatni   tanlash
ehtiyotkorlik bilan tajriba va tekshirishni talab qiladi.
Cheklovlarga   qaramay,   KNN   algoritmi   mashinani   o‘qitish   vositalari
to‘plamida,   ayniqsa   izohlash,   moslashuvchanlik   va   soddalik   muhim   bo‘lgan
algoritmlarda   qimmatli   vosita   bo‘lib   qolmoqda.   KNN   ning   afzalliklari   va
cheklovlarini   tushunib,   tadqiqotchilar   va   amaliyotchilar   uning   tasvirni   tasniflash
vazifalariga   qo‘llanilishi   to‘g‘risida   asosli   qarorlar   qabul   qilishlari   va
kamchiliklarini yumshatish uchun strategiyalarni ishlab chiqishlari mumkin. 152-BOB.  KNN  ALGORITMI ASOSIDA  TASVIRLARNI TASNIFLASHNING
METODOLOGIYASI
2-bobda   K-Yaqin   qo‘shnilar   (KNN)   algoritmidan   foydalangan   holda
tasvirlarni   tasniflash   uchun   ushbu   dissertatsiyada   qo‘llaniladigan   metodologiya
keltiriladi. Eksperimental tahlil uchun asos yaratib, ma’lumotlar to‘plamini tanlash,
dastlabki   ishlov   berish   texnikasi   va   parametrlarni   sozlash   strategiyalari   tizimli
o‘rganishga   kirishiladi.   Ma’lumotlar   jamlanmasidan   tortib   algoritmik   amalga
oshirishgacha,   tadqiqot   jarayonining   har   bir   bosqichi   sinchkovlik   bilan   batafsil
bayon   qilinadi,   bu   esa   metodologiyani   shaffofligi,   takrorlanuvchanligi   va
qat’iyligini ta’minlaydi. 
2.1. Ma’lumotlar to‘plami tavsifi
Ma’lumotlar   to‘plamini   tanlash   tasvirlarni   tasniflash   uchun   K-Yaqin
qo‘shnilar   (KNN)   algoritmining   ishlashini   baholashda   hal   qiluvchi   rol   o‘ynaydi.
Turli   xil   va   vakolatli   ma’lumotlar   to‘plami   har   xil   turdagi   tasvirlar   va   tasniflash
bo‘yicha   algoritm   imkoniyatlarini   har   tomonlama   tahlil   qilish   imkonini   beradi.
Ushbu   bo‘limda   tajribalarda   foydalanilgan   ma’lumotlar   to‘plamining   tavsifi,
jumladan, ularning xususiyatlari va tarkibi taqdim etiladi.
Baholash   uchun   tanlangan   ma’lumotlar   to‘plamlari   qo‘lda   yozilgan
raqamlardan   tortib,   tabiiy   tasvirlar   va   obyektlargacha   bo‘lgan   turli   xil   tasvir
toifalari va holatlarini o‘z ichiga oladi. Ushbu ma’lumotlar to‘plamlari kompyuterli
ko‘rish   sohasida   keng   qo‘llaniladigan   ko‘rsatkichlar   bo‘lib,   tasvirlarni   tasniflash
algoritmlarining   ishlashini   taqqoslash   uchun   standartlashtirilgan   platformani
taqdim   etadi.   Har   bir   ma’lumotlar   to‘plami   etiketli   tasvirlar   to‘plamidan   iborat
bo‘lib, unda har bir rasm ma’lum bir sinf yoki toifa bilan bog‘langan.
Bundan   tashqari,   natijalarning   mustahkamligi   va   umumlashtirilishini
ta’minlash   uchun   ma’lumotlar   to‘plamlari   tabaqalashtirilgan   tanlab   olish   yoki
tasodifiy   bo‘linish   kabi   tegishli   bo‘linish   strategiyalaridan   foydalangan   holda
o‘quv   va   sinov   to‘plamlariga   bo‘linadi.   O‘quv   to‘plami   KNN   klassifikatorini 16o‘qitish   uchun   ishlatiladi,   sinov   to‘plami   esa   ko‘rinmas   ma’lumotlar   bo‘yicha
uning ishlashini baholash uchun ishlatiladi [6].
Sinflar   soni,   har   bir   sinfdagi   tasvirlar   soni,   tasvir   o‘lchamlari   va
qo‘llaniladigan   har   qanday   dastlabki   ishlov   berish   bosqichlarini   o‘z   ichiga   olgan
ma’lumotlar   to‘plamlarining   batafsil   tavsiflari   tajribalarimizda   takrorlanuvchanlik
va shaffoflikni osonlashtirish uchun taqdim etiladi [7,8].
2.2 Ma’lumotlarga o ldindan ishlov berish texnikasi
Oldindan   ishlov   berish   tasvir   ma’lumotlarini   K-Yaqin   qo‘shnilar   (KNN)
algoritmiga kiritish uchun tayyorlashda hal qiluvchi rol o‘ynaydi. Oldindan ishlov
berish usullari kiritilgan ma’lumotlarning sifatini oshirish, shovqinni olib tashlash
va   aniq   tasniflashga   hissa   qo‘shadigan   mazmunli   xususiyatlarni   chiqarishga
qaratilgan.   Ushbu   bo‘limda   biz   baholash   jarayonida   izchillikni   ta’minlash   uchun
tajribalarimizda qo‘llaniladigan dastlabki ishlov berish usullarini tavsiflaymiz.
Tasvir   o‘lchamini   o‘zgartirish:   Tasvir   o‘lchamlarida   bir   xillikni   ta’minlash
va   hisoblashni   kamaytirish   uchun   ma’lumotlar   to‘plamidagi   tasvirlar   umumiy
razmerga   o‘zgartiriladi.   O‘lchamini   o‘zgartirish   barcha   tasvirlarning   bir   xil
o‘lchamlarga   ega   bo‘lishini   ta’minlaydi,   bu   esa   tasniflash   paytida   xususiyat
maydonidagi masofalarni samarali hisoblash imkonini beradi.
Rasmni normallashtirish: Rasmni normallashtirish ma’lumotlar to‘plamidagi
turli   xil   tasvirlar   bo‘ylab   piksel   qiymatlarini   standartlashtirish   uchun   amalga
oshiriladi. Ushbu bosqich mashg‘ulot paytida konvergentsiyani yaxshilash va turli
yorug‘lik   sharoitlarining   ta’sirini   yumshatish   uchun   piksel   intensivligini   umumiy
diapazonga (masalan, [0, 1]) o‘zgartirishni o‘z ichiga oladi.
Xususiyatlarni   ajratish:   Xususiyatlarni   ajratib   olish   -   bu  piksel   qiymatlarini
ixcham va informatsion tasvirga aylantirishni o‘z ichiga olgan muhim qayta ishlash
bosqichidir.   Xususiyatlarni   ajratib   olishning   keng   tarqalgan   usullari   orasida
yo‘naltirilgan   gradientlarning   gistogrammasi   (HOG),   masshtabni   o‘zgarmas
xususiyatni   o‘zgartirish   (SIFT)   va   ikkilik   chiziqlar   (LBP)   mavjud.   Ushbu   usullar
tasvirlardagi lokal chiziq va teksturalarni ushlaydi, bu turli sinflarni farqlash uchun
zarurdir. 17Ma’lumotlar   to‘plamlari   bo‘ylab   izchil   qayta   ishlash   usullarini   qo‘llash
orqali   biz   tasvirlarni   tasniflash   uchun   KNN   algoritmining   ishlashini   baholashda
adolat   va   taqqoslashni   ta’minlashga   intilamiz.   Ushbu   dastlabki   ishlov   berish
bosqichlari tasvir xususiyatlaridagi o‘zgarishlarning ta’sirini yumshatishga yordam
beradi   va   tasniflash   modelining   shovqin   va   ahamiyatsiz   xususiyatlarga   nisbatan
mustahkamligini oshiradi [9].
2.3. K-Eng yaqin qo‘shnilar algoritmi
K-Yaqin   qo‘shnilar   (KNN)   algoritmi   tasniflash   va   regressiya   vazifalari
uchun   ishlatiladigan   oddiy,   parametrik   bo‘lmagan   usuldir.   Tasvirlarni   tasniflash
kontekstida   KNN   xususiyat   maydonidagi   eng   yaqin   qo‘shnilarining   yorliqlari
asosida   kirish   tasviriga   teg   belgilash   orqali   ishlaydi.   Algoritmning   qaror   qabul
qilish   jarayoni   yaqinlik   prinsipiga   asoslanadi:   o‘xshash   misollar   bir   xil   sinfga
tegishli bo‘lish ehtimoli ko‘proq.
KNN   yordamida   yangi   tasvirni   tasniflash   uchun   algoritm   so‘rov   tasviri   va
o‘quv   ma’lumotlar   to‘plamidagi   barcha   tasvirlar   orasidagi   masofani   hisoblab
chiqadi.   Umumiy   masofa   ko‘rsatkichlariga   Evklid   masofasi,   Manxetten   masofasi
va   Kosinus   o‘xshashligi   kiradi.   Keyin   KNN   algoritmi   hisoblangan   masofalar
asosida so‘rov tasviriga eng yaqin K qo‘shnilarni tanlaydi.
KNN   algoritmidagi   muhim   parametrlardan   biri   bu   tasniflashda   ko‘rib
chiqilgan   eng   yaqin   qo‘shnilar   sonini   ifodalovchi   "K"   qiymatidir.   "K"   ni   tanlash
algoritmning   ishlashiga   sezilarli   darajada   ta’sir   qiladi   va   uning   ma’lumotlardagi
mahalliy va global chiziqlarni olish qobiliyatiga ta’sir qiladi.
"K"   uchun   mos   qiymatni   tanlash   ehtiyotkorlik   bilan   tajriba   va   tekshirishni
talab   qiladi.   "K"   ning   kichik   qiymati   qaror   chegaralarining   haddan   tashqari
moslashuvchanligiga   olib   kelishi   mumkin,   bu   esa   ma’lumotlardagi   shovqinga
nisbatan yuqori dispersiya va sezgirlikni keltirib chiqarishi mumkin. Aksincha, "K"
ning   katta   qiymati   qaror   chegaralarini   haddan   tashqari   soddalashtirishga   olib
kelishi mumkin, bu esa yuqori tarafkashlik va yomon umumlashtirishga olib keladi
[10]. 18"K"   ning   optimal   qiymatini   aniqlash   uchun   o‘zaro   tekshirish   va   tarmoq
qidirish   kabi   usullardan   foydalanish   mumkin.   O‘zaro   tekshirish   o‘quv
ma’lumotlarini   bir   nechta   kichik   to‘plamlarga   bo‘lishni   o‘z   ichiga   oladi,   har   bir
kichik to‘plam ham trening, ham test to‘plami sifatida ishlatiladi. Grid qidiruvi "K"
ning   turli   qiymatlari   uchun   KNN   algoritmining   ishlashini   tizimli   ravishda
baholashni   va   tasdiqlash   to‘plamida   eng   yaxshi   ko‘rsatkichni   beradigan   qiymatni
tanlashni o‘z ichiga oladi.
"K" dan tashqari, masofa o‘lchovi va tortish sxemasini tanlash (masalan, bir
xil   o’lchovlar   va   masofaga   asoslangan   o’chovlar)   kabi   boshqa   giperparametrlar
ham algoritm ishlashiga ta’sir qilishi va sozlashni talab qilishi mumkin.
Masofa   ko‘rsatkichlari.   Masofa   ko‘rsatkichini   tanlash   xususiyat
maydonidagi   ma’lumotlar   nuqtalari   o‘rtasidagi   o‘xshashlikni   aniqlashda   hal
qiluvchi   rol   o‘ynaydi.   KNN   algoritmida   qo‘llaniladigan   umumiy   masofa
ko‘rsatkichlari quyidagilarni o‘z ichiga oladi:
Evklid   masofasi:   Evklid   fazosining   ikkita   nuqtasi   orasidagi   to‘g‘ri   chiziq
masofasini   o‘lchaydi.   Bu   eng   ko‘p   ishlatiladigan   masofa   ko‘rsatkichi   bo‘lib,
doimiy xususiyat bo‘shliqlari uchun yaxshi ishlaydi [11,12].
Manxetten masofasi:  Shahar blokidagi masofa yoki L1 normasi sifatida ham
tanilgan, u ikki nuqta koordinatalari orasidagi mutlaq farqlar yig‘indisini o‘lchaydi.
Bu,   ayniqsa,   diskret   yoki   kategorik   xususiyatlarga   ega   bo‘lgan   xususiyatlar
bo‘shliqlari uchun foydalidir.
Kosinus   o‘xshashligi:   Ikki   vektor   orasidagi   burchakning   kosinusini
o‘lchaydi,   bu   vektorlar   o‘rtasidagi   yo‘nalish   bo‘yicha   ularning   kattaligini   emas,
balki   o‘xshashligini   ifodalaydi.   U   ko‘pincha   yuqori   o‘lchamli   xususiyatlar
bo‘shliqlari va matnni tasniflash vazifalari uchun ishlatiladi.
Masofa ko‘rsatkichini tanlash ma’lumotlarning tabiatiga va asosiy muammo
sohasiga   bog‘liq.   Tajriba   va   tekshirish   berilgan   tasvirni   tasniflash   vazifasi   uchun
eng mos masofa ko rsatkichini tanlash uchun zarurdir.ʻ
Eksperimental sozlash.   Ushbu bo‘limda biz tasvirlarni tasniflash uchun K-
Yaqin   qo‘shnilar   (KNN)   algoritmining   ishlashini   baholash   uchun   ishlatiladigan 19eksperimental   o‘rnatishni   tasvirlaymiz.   Bu   ma’lumotlar   to‘plamini   bo‘lish,
parametrlarni sozlash, baholash ko‘rsatkichlari, asosiy modellar va amalga oshirish
xususiyatlariga oid tafsilotlarni o‘z ichiga oladi.
KNN algoritmi oddiy, amalga oshirish oson, nazorat ostidagi mashinaviy 
o‘qitish algoritmi bo‘lib, u ham tasniflash, ham regressiya muammolarini hal qilish
uchun ishlatilishi mumkin.
 K-NN   algoritmi   yangi   holatlar(ma’lumotlar)   va   mavjud   ma’lumotlar
o‘rtasidagi   o‘xshashlikni   qabul   qiladi   va   yangi   ma’lumotni   mavjud   toifalar
orasidan eng o‘xshash toifaga kiritadi.
 K-NN   algoritmi   regressiya   uchun   ham,   tasniflash   uchun   ham   ishlatilishi
mumkin, lekin u asosan tasniflash muammolari uchun ishlatiladi.
 K-NN   parametrik   bo‘lmagan   algoritmdir   ,   ya’ni   ma’lumotlarning
taqsimlanishi haqida hech qanday asosiy taxminlar qilmaydi
Nima uchun bizga K-NN algoritmi kerak?
Aytaylik,   ikkita   toifa,   ya’ni   A   va   B   toifalari   mavjud   va   bizda   yangi
ma’lumotlar   nuqtasi   bor,   bu   ma’lumotlar   nuqtasi   ushbu   toifalarning   qaysi   birida
joylashishini   aniqlashimiz   kerak.   Ushbu   turdagi   muammolarni   hal   qilish   uchun
bizga   K-NN   algoritmi   kerak.   K-NN   yordamida   biz   ma’lum   bir   ma’lumotlar
to‘plamining   toifasi   yoki   sinfini   osongina   aniqlashimiz   mumkin.   Quyidagi   2.1-
rasmda diagrammani ko‘rib chiqing: 202.1-rasm. KNN algoritmi qo‘llanilgan va qo‘llanilmagan holatdagi tasviri
K-NN qanday ishlaydi?
K-NN ning ishlashini quyidagi algoritm asosida tushuntirish mumkin:
1-qadam:   K-NN uchun eng yaxshi K tanlash.
2-qadam:   K qo‘shnilarning   Evklid masofasini hisoblash.
3-qadam:   Hisoblangan   Evklid   masofasiga   ko‘ra   K   eng   yaqin   qo‘shnilarni
olish.
4-qadam:   Ushbu   K   qo‘shnilar   orasida   har   bir   toifadagi   ma’lumotlar
nuqtalarining sonini hisoblash.
5-qadam:   Yangi   ma’lumotlar   nuqtalarini   qo‘shni   soni   maksimal   bo‘lgan
toifaga belgilash.
6-qadam:   Tasniflash.
Aytaylik,   bizda   yangi   ma’lumotlar   nuqtasi   bor   va   biz   uni   kerakli   toifaga
joylashtirishimiz kerak.   Quyidagi 2.2-rasmni ko‘rishimiz mumkin:
2.2-rasm. Ma’lumotlar to‘plamidagi yangi ma’lumotlar nuqtasi
Birinchidan,   biz   qo‘shnilar   sonini   tanlaymiz,   shuning   uchun   biz   k   =   5   ni
tanlaymiz.
Keyinchalik, ma’lumotlar nuqtalari orasidagi   Evklid masofasini   hisoblaymiz. 21Uni quyidagicha hisoblash mumkin:
2.3-rasm. Ma’lumotlar to‘plamidan Evklid masofasini hisoblash jarayoni
Masofani hisoblash formulasi: A1  va 	B1=√(X2−X1)2+(Y2−	Y1)2
Evklid   masofasini   hisoblab,   biz   eng   yaqin   qo‘shnilarni,   ya’ni  A  toifadagi
uchta   eng   yaqin   qo‘shni   va   B   toifadagi   ikkita   eng   yaqin   qo‘shnilarni   oldik.   Bu
jarayonni quyidagi rasmda ko‘rishimiz mumkin.
2.4-rasm.   Ma’lumotlar to‘plamidan Evklid masofasini orqali qo‘shnilarni
belgilash jarayoni 22Ko‘rib   turganimizdek,   eng   yaqin   uchta   qo‘shni  A  toifasiga   kiradi,   shuning
uchun bu yangi ma’lumotlar nuqtasi A toifasiga tegishli bo‘lishi kerak.
K-NN algoritmida K qiymatini tanlash:
K   uchun   eng   yaxshi   qiymatni   aniqlashning   alohida   usuli   yo‘q,   shuning
uchun biz ulardan eng yaxshisini topish uchun ba’zi qiymatlarni sinab ko‘rishimiz
kerak.   K uchun eng maqbul qiymat 5 ga teng.
K = 1 yoki K = 2 kabi K uchun juda past qiymat bo‘lishi mumkin. K uchun
katta qiymatlar yaxshi, lekin u ba’zi qiyinchiliklarga olib kelishi mumkin.
K-NN algoritmini Python dasturlash tili orqali qo‘llash
Mashinaviy o‘qitishda klassifikatsiya(tasniflash) algoritmlarini amaliy 
jarayonlarda qo‘llab ko‘ramiz, buning uchun dataset (ma’lumotlar to‘plami) tanlab 
olingan. Ushbu dataset Hindistonning Qandli diabet va buyrak kasalliklari milliy 
institutidan olingan. Maqsad diagnostik o‘lchovlar asosida ayol bemorda diabet 
bor-yo‘qligini taxmin qilishdir.
Datasetdagi ustunlar uchun izohlar:
 Pregnancies: homilador bo‘lish soni
 Glucose: glyukozaga test natijasi
 BloodPressure: diastolik qon bosimi (mm Hg)
 SkinThickness: Triceps teri burmasining qalinligi (mm)
 Insulin: 2 soatlik sarum insulini (mu U/ml)
 BMI: Tana massasi indeksi (vazn kg / (m bo‘yi) ^ 2)
 DiabetesPedigreeFunction: diabetning naslchilik funktsiyasi
 Age: Yosh (yil)
 diagnosis: Class (0 – diabet yo‘q, 1 – diabet)
K-NN algoritmini amalga oshirish bosqichlari:
 Ma’lumotlarni oldindan qayta ishlash bosqichi
 K-NN algoritmini o‘quv to‘plamiga moslashtirish
 Sinov natijasini bashorat qilish
 Natijaning to‘g‘riligini tekshirish  23 Test to‘plamining natijasini vizualizatsiya qilish.
1.Ma’lumotlarni oldindan qayta ishlash bosqichi:
1) Dastlab kerakli kutubxonalar va Dastasetni chaqirib olamiz:
2) Ma’lumotlarimizni ekranga chop qilamiz.
2.5-rasm. Ma’lumotlar to‘plamini umumiy ko‘rinishi
3) Korrelyasiya.  Berilgan datasetda ‘diagnosis’ ustuniga tasir qiluvchi 
ustunlarni topamiz. 
2.6-rasm. Ma’lumotlar to‘plamini korrelyatsiya jadvali 24Natijalardan ko‘rinib turibdiki  ‘diagnosis’ ustuniga ‘Glucose’ ustuni ko‘proq tasir 
qilmoqda.
4) Datasetdagi ma’lumotlarni ‘X’ (‘diagnosis’ ustunidan boshqa barcha 
ustundagi qiymatlar) va ‘Y’ (‘diagnosis’ ustunidagi qiymatlar) 
o‘zgaruvchilarga ta’minlab olamiz.
5) StandartScaler  funksiyasi yordamida ma’lumotlarni standart (kichik 
oraliqga) holatga keltiramiz.
K-NN klassifikatorini o‘quv ma’lumotlariga moslashtiramiz.   Buning uchun 
biz   Sklearn Neighbors   kutubxonasining   KNeighborsClassifier   sinfini import 
qilamiz.   Sinfni import qilgandan so‘ng biz sinfning knn   obektini   yaratamiz .   Ushbu
sinfning parametrlari mavjud:
 n_neighbours :   Algoritmning kerakli qo‘shnilarini aniqlash uchun.   Odatda, 
bu 5 qiymatini oladi.
 metric=‘minkowski’ :   Bu standart parametr bo‘lib, nuqtalar orasidagi 
masofani belgilaydi(quyida bu parametrdan foydalanilmgan).
6) Klassifikatorni o‘quv ma’lumotlariga moslashtiramiz.   Quyida uning kodi: 257) Sinov natijasini   bashorat qilish : Test to‘plami natijasini bashorat qilish 
uchun    y_predict vektorini yaratamiz.   Quyida uning kodi:
8) Confusion matritsasini yaratish:
Endi biz K-NN modelimiz uchun klassifikatorning aniqligini ko‘rish uchun 
confusion matritsasini yaratamiz.   Quyida uning kodi:
2.7-rasm. Confusion matrix
9) Bashorat natijasi olingandan so‘ng, uni  Accuracy, Precision Recall, F-1 
Score  yordamida baholaymiz. 26Yuqoridagi kodda  accuracy  bergan natijadan ko‘rinib  K-NN algoritmini  asosida 
yaratilgan dasturimiz 75% aniqlikda ishlamoqda.
Bu modelni ishlab chiqishda K-NN algoritmini uchun K ni qiymatini 5 ga 
teng deb oldik, lekin biz  K ni eng yaxshi qiymatini  aniqlash uchun quyidagi 
usullarni taqdim etamiz:
1) For operatori yordamida: for operatori yordamida K ni qiymatlarini 1 dan 25
gacha oraliqda natijasini solishtirb chiqamiz
Yuqoridagi kod ishlagandan so‘ng biz K ning eng yaxshi qiymatini quyidagi jadval
orqali topishimiz mumkin.  272.8-rasm. K qiymatini eng yaxshisini topish jarayoni
Bu yerda baholash  F-1 Score  orqali aniqlanmoqda, ko‘rinib turibdiki K=11 va 23 
qiymatlarga teng bo‘lganda aniqlik yuqori baholanmoqda.
2) K ning eng yaxshi qiymatini topish uchun  sklearn  kutubxonasi tarkibida 
tayyor  GridSearchCV  funksiyasi mavjud, quyida uning kodi:
Best_params_  funksiyasi orqali K ning eng yaxshi qiymatini aniqlaymiz.
Natijadan ko‘rinib turibdiki funksiya K ning eng yaxshi qiymati 23 ekanligini 
ko‘rsatmoqda. 28Best_score_  funksiyasi orqali esa K ning eng yaxshi qiymatida aniqlikni 
aniqlaymiz. 
Natijadan ko‘rinib turibdiki funksiya K=23 bo‘lganda aniqlik 77% ni tashkil etar 
ekan. Biz bu natijani xatolik grafigi orqali tasvirlab ham ko‘rishimiz mumkin.
2.9-rasm. K qiyma tini eng yaxshisini topish jarayoni
Yuqoridagi grafikda modelning xatolik darajasi ko‘rsatib o‘tilgan, K ning qiymati
23 ga teng bo‘lganda eng kam xatolikga erishilmoqda.
2.4.  KNN algoritmi ni o‘qitish
KNN   algoritmining   ishlashini   baholash   uchun   ma’lumotlar   to‘plami   ikkita
kichik to‘plamga bo‘linadi: o‘quv to‘plami va test to‘plami. O‘quv to‘plami KNN
klassifikatorini o‘qitish uchun ishlatiladi, bu unga xususiyatlar va teglar o‘rtasidagi 29asosiy chiziq va munosabatlarni o‘rganish imkonini beradi. Boshqa tomondan, test
majmuasi   klassifikatorning   ko‘rinmaydigan   ma’lumotlar   bo‘yicha   ishlashini
baholash va uni umumlashtirish qobiliyatini baholash uchun ishlatiladi.
Ma’lumotlar to‘plamini o‘quv va sinov to‘plamlariga bo‘lish, odatda, har bir
sinf ikkala to‘plamda mutanosib ravishda ifodalanishini ta’minlash uchun tasodifiy
tanlash   yoki   qatlamli   tanlama   yordamida   amalga   oshiriladi.   O‘quv   va   sinov
to‘plamlariga ajratilgan ma’lumotlarning nisbati ma’lumotlar to‘plamining hajmiga
va baholashning kerakli darajasiga qarab farq qilishi mumkin [13].
Baholash   ko‘rsatkichlari.   KNN   algoritmining   ish   faoliyatini   miqdoriy
baholash   uchun   turli   baholash   ko‘rsatkichlari,   jumladan,   aniqlik,   aniqlik,   eslab
qolish,   F1   balli   va   chalkashlik   matritsasi   qo‘llaniladi.   Ushbu   ko‘rsatkichlar
tasniflagichning   tasvirlarni   turli   sinflar   bo‘yicha   to‘g‘ri   tasniflash   va   uning
umumiy samaradorligini baholash qobiliyati haqida tushuncha beradi.
Bizning modelimiz tugallangandan so'ng, uning ishlashini baholash kerak. 
Har qanday mashinaviy o'qitish modelini yaratishda eng muhim vazifa uning
ishlashini   baholashdir.   Shunday   qilib,   savol   tug'iladi:   mashinaviy   o'qitish
modelining   muvaffaqiyatini   qanday   o'lchash   mumkin?   Trening   va   baholashni
qachon to'xtatish va qachon yaxshi deb atash kerakligini qayerdan bilamiz?
2.10-rasm. Confusion matrixni umumiy tavsifi
Berilgan   namunaviy   kuzatish   uchun   haqiqiy   sinf   ijobiy   yoki   salbiy
bo'ladi.   Xuddi shunday,   bashorat qilingan sinf   ham ijobiy yoki salbiy.   30Kuzatishning   haqiqiy   va   bashorat   qilingan   klassi   bilan   bog'liq   to'rtta   toifa
mavjud: 
Haqiqiy   ijobiy   (TP):   Berilgan   kuzatishning   haqiqiy   va   bashorat   qilingan
qiymatlari ham ijobiydir.
Noto'g'ri ijobiy (FP):   Berilgan kuzatuv salbiy, lekin bashorat qilingan qiymat
ijobiy.
Haqiqiy   salbiy   (TN):   Berilgan   kuzatishning   haqiqiy   va   bashorat   qilingan
qiymatlari ham manfiy.
Noto'g'ri   salbiy   (FN):   Berilgan   kuzatuv,   aslida   ijobiy   bo'lishiga   qaramay,
salbiy bo'lishi bashorat qilinadi.
FP   va   FN   tasniflash   xatolaridir   .   Statistikada   FPlar   I   turdagi   xatolar,
FNlar esa II turdagi xatolar deb ataladi.   Ba'zi hollarda II turdagi xatolar xavfli
bo’ladi.
Misol   uchun,   agar   bizning   tasniflagichimiz   uyda   yong'in   sodir   bo'lishini
bashorat qilsa, I turdagi xatolik noto'g'ri signaldir.
Boshqa   tomondan,   II   turdagi   xato   uy   yonib   ketayotganini   va   o't   o'chirish
bo'limi xabardor emasligini anglatadi [13,14].
Confusion   matrix .   Confusion   matrix   bizga   chiqish   sifatida   matritsa/jadval
beradi va modelning ishlashini tavsiflaydi.
Matritsa   to'g'ri   bashorat   va   noto'g'ri   bashoratlarning   umumiy   soniga   ega
bo'lgan umumlashtirilgan shakldagi bashorat natijalaridan iborat.   Matritsa quyidagi
jadvalga o'xshaydi:
2.11-rasm. Confusion matrixga na’muna 31Shunday qilib, tasniflash modelini baholash usullarini keltiramiz.
Accuracy
Accuracy   -   eng   oddiy   va   tushunarli   tasniflash   ko'rsatkichi,   to'g'ri
tasniflangan kuzatuvlarning ulushini o'lchaydi   .   Formula quyidagicha:Accuracy	=	TP	+TN
N
Bunda,  N  – modelning aniqligini hisoblayotgan to’plamdagi elementlat soni.    
N = TP + TN + FP + FN
.
Oddiy   qilib   aytganda,   u   xato   darajasining   yo'qligini   o'lchaydi.   90%
aniqlik   100   ta   kuzatishdan   90   tasi   to g ri   tasniflanganligini   bildiradi.   Ushbu	
ʻ ʻ
o’lchov ma’lumotlar to’plamidagi pozitiv va negativ nishonlarning qiymatlari teng
bo’lganda o’rinlidir [15].
Chalkashlik matritsasi nuqtai nazaridan o'ylab, biz ba'zan "barcha namunalar
bo'yicha   diagonal"   deymiz.   Oddiy   qilib   aytganda,   u   xato   darajasining   yo'qligini
o'lchaydi.   90%   aniqlik   100   ta   kuzatishdan   90   tasi   to g ri   tasniflanganligini	
ʻ ʻ
bildiradi.
Garchi  90%  aniqlik dastlab  juda istiqbolli  bo'lib tuyulsa  ham, nomutanosib
ma'lumotlar to'plamida aniqlik o'lchovidan foydalanish noto'g'ri bo'lishi mumkin.
Precision va Recall
Precision   -   ijobiy  deb  belgilangan  va   aslida   ijobiy  bo'lgan  holatlarning
ulushi.   Boshqacha qilib aytganda, aniqlik "bizning tasniflagichimiz natijalari
qanchalik foydali" o'lchovlari.   Formula quyidagicha:
Precision = TP
TP + FP
Masalan,   90%   aniqlik   bizning   tasniflagichimiz   elektron   pochtani   spam   deb
belgilaganida, u haqiqatan ham 100 martadan 90 tasi spam ekanligini bildiradi.
TPlarni   aniqlashning   yana   bir   usuli   -   eslab   qolishdan   foydalanish.   Eslab
qolish - ijobiy deb belgilangan haqiqiy ijobiy holatlarning ulushi.   U "natijalar
qanchalik to'liqligini" o'lchaydi - ya'ni haqiqiy ijobiylarning qaysi foizi ijobiy
deb taxmin qilinadi.   Formula quyidagicha: 32 Recall = TP
TP + FN
Ya'ni,   90%   ni   chaqirib   olish   klassifikator   barcha   spam   elektron   pochta
xabarlarining 90% ni to'g'ri belgilashini anglatadi, shuning uchun 10% spam emas
deb belgilangan.
F-1 Score
F-1 Score Precision va Recall ning garmonik o'rtacha ko'rsatkichidir.   Bu
I va II turdagi xatolarga teng ahamiyat beradi.   Formula quyidagicha:
F − 1 Score = 2 ∗ Precision ∗ Recall
Precision + Recall
Ma’lumotlar to’plamida pozitiv va negativ nishonlar notekis taqsimlanganda
F-1 Score eng aniq o’lchovlardan biri hisoblanadi.
Ushbu   baholash   ko‘rsatkichlari   KNN   algoritmining   ishlashini   har
tomonlama baholashni ta’minlaydi, uning aniqligi, mustahkamligi va nomutanosib
ma’lumotlar   to‘plami   va   sinf   taqsimotlarini   boshqarish   qobiliyatini   aks   ettiradi
[16].
KNN   algoritmining   ishlashini   baholashdan   tashqari,   qiyosiy   tahlil   uchun
bazaviy   modellar   qo‘llaniladi.   Ushbu   asosiy   modellar   tasvirlarni   tasniflash   uchun
keng   qo‘llaniladigan   boshqa   mashinani   o‘qitish   algoritmlarini   o‘z   ichiga   olishi
mumkin,   masalan,   Yordam   vektor   mashinalari   (SVM),   Konvolyutsion   neyron
tarmoqlari (CNN) va qarorlar daraxtlari.
Asosiy   modellar   o‘qitiladi   va   KNN   algoritmi   kabi   bir   xil   eksperimental
sozlash   va   baholash   ko‘rsatkichlari   yordamida   baholanadi.   KNN   algoritmining
ishlashini ushbu asosiy modellar bilan taqqoslash orqali uning turli xil tasvir tasnifi
algoritmlarida   nisbatan   kuchli   va   zaif   tomonlari   haqida   tushunchaga   ega   bo‘lish
mumkin.
KNN algoritmi tegishli dasturlash kutubxonalari yoki Python-da scikit-learn
kabi   maxsus   kutubxonasi   yordamida   amalga   oshiriladi.   Amalga   oshirish
tafsilotlari, jumladan, parametr sozlamalari, masofa o‘lchovlari va tortish sxemalari 33eksperimental   talablar   va   eng   yaxshi   amaliyotlar   asosida   ehtiyotkorlik   bilan
tuzilgan.
Bundan   tashqari,   takrorlanuvchanlik   va   shaffoflikni   ta’minlash   uchun
amalga   oshirish   kodi,   eksperimental   skriptlar   va   noutbuklar   bilan   birgalikda
ommaga taqdim   etiladi. Bu  boshqa  tadqiqotchilar   va amaliyotchilarga  tajribalarni
takrorlash va natijalarni mustaqil ravishda tasdiqlash imkonini beradi.
Tizimli   eksperimental   o‘rnatish   va   amalga   oshirish   jarayoniga   rioya   qilish
orqali   KNN   algoritmining   ishlashi   qat’iy   baholanishi   mumkin,   bu   uning
samaradorligi  va tasvirni  tasniflash vazifalari  uchun qo‘llanilishi  haqida qimmatli
tushunchalarni beradi.
2.4. Eksperimental natijalar
2.4-bob   dissertatsiyani   asosi   bo‘lib   xizmat   qiladi,   bu   erda   K-Yaqin
qo‘shnilar  (KNN) algoritmini  tasvirlarni tasniflash vazifalariga qo‘llash natijasida
olingan   empirik   topilmalar   keltiriladi.   Eksperimental   natijalarni   sinchkovlik   bilan
tahlil   qilish   orqali   algoritmning   turli   ma’lumotlar   to‘plamlari,   parametr
konfiguratsiyasi va baholash ko‘rsatkichlari bo‘yicha ishlashi  haqida tushunchalar
ochiladi. Aniqlik ko‘rsatkichlaridan chalkashlik matritsalariga qadar biz KNNning
ishlashini ajratib ko‘rsatamiz, uning kuchli tomonlari, zaif tomonlari va turli tasnif
algoritmlarda   oydinlik   kiritamiz.   Ushbu   bob   orqali   o‘quvchilar   tasvir   tasnifi
sohasida KNN samaradorligini ma’lumotlar asosida o‘rganishga kirishadilar.
KNN algoritmining kuchli va zaif tomonlari.  Keyinchalik, biz eksperimental
topilmalar   asosida   KNN   algoritmining   kuchli   va   zaif   tomonlarini   muhokama
qilamiz. Biz algoritmning soddaligi, moslashuvchanligi  va talqin qilinishini uning
asosiy kuchli tomonlari sifatida ta’kidlaymiz, bu esa uni keng ko‘lamli tasvirlarni
tasniflash vazifalari uchun mos qiladi. Shu bilan birga, biz uning cheklovlarini ham
tan   olamiz,   masalan,   hisoblash   murakkabligi,   shovqinga   sezgirlik   va   ahamiyatsiz
xususiyatlar va parametrlarni ehtiyotkorlik bilan sozlash zarurati.
Boshqa   tasniflash   usullari   bilan   solishtirish.   Biz   KNN   algoritmining
ishlashini   tasvirlarni   tasniflash   uchun   keng   tarqalgan   bo‘lib   foydalaniladigan
boshqa   zamonaviy   mashina   o‘rganish   algoritmlari   bilan   solishtiramiz,   masalan, 34Yordamchi Vektorli Mashinalar (SVM), Konvolyutsion Neyron Tarmoqlar (CNN)
va   Qaror   Daraxtlari.   Biz   KNN   ning   nisbiy   kuchli   va   zaif   tomonlarini   ushbu
algoritmlarga   nisbatan   tahlil   qilamiz   va   KNN   o‘z   boshqa   algoritmlarga   nisbatan
ustun yoki past bo‘lgan algoritmlarni muhokama qilamiz [17,18,19].
Amaliy   natijalar   va   kelajakdagi   yo‘nalishlar.   Va   nihoyat,   biz   KNN
algoritmini   real   dunyo   ilovalarida   tasvirlarni   tasniflash   uchun   foydalanishning
amaliy   natijalarini   muhokama   qilamiz.   Tibbiy   diagnostika,   obyektni   aniqlash   va
ularni   tushunish   va   sharhlash,   soddalik   va   moslashuvchanlik   muhim   bo‘lgan
algoritmlarda   uning   qo‘llanilishini   ta’kidlaymiz.   Shuningdek,   biz   kelajakdagi
tadqiqot va takomillashtirish uchun potentsial  yo‘nalishlarni aniqlaymiz, masalan,
hisoblash  samaradorligini   optimallashtirish,  va  KNNni   boshqa  mashinani   o‘qitish
usullari bilan integratsiyalash.
Eksperimental   natijalarni   sintez   qilish   va   ularning   oqibatlarini   muhokama
qilish   orqali   ushbu   bo‘lim   tasvirlarni   tasniflash   vazifalari   uchun   KNN
algoritmining   samaradorligi   va   qo‘llanilishi   haqida   qimmatli   fikrlarni   beradi.   U
amaliyotchilar   va   tadqiqotchilarni   KNN   ning   kuchli   tomonlari   va   cheklovlari
haqida   ma’lumot   beradi   va   ushbu   sohada   kelajakdagi   tadqiqot   va   rivojlanish
yo‘nalishlarini taklif qiladi.
KNN algoritmi asosida tasvirlarni tasniflash algoritmi
1-qadam.   Ma’lumotlarni   yig‘ish   va   qayta   ishlash.   Turli   sinflar/toifalarni
ifodalovchi   tasvirli   ma lumotlar   to plami  ʼ ʻ	D=	{(xi,yi)}i=1
n   yig‘iladi.     Bunda  	xi   i -
tasvirning xususiyat vektorini ifodalaydi va 	
yi  uning labeli.
2-qadam.   Ma’lumotlarni   qayta   ishlash.   Tasvirlarning   o‘lchamlarini   bir   xil
o‘lchamga o‘zgartirish va piksel qiymatlarini normallashtirish orqali ular oldindan
quyidagi formula orqali qayta ishlanadi.	
xi
'=	resize	(xi)
, 	xi
''=	resize	(xi
')
3-qadam.   Ma’lumotlarni bo‘lish.  KNN tasniflagichining ishlashini baholash
uchun  ma’lumotlar   to‘plami   o‘quv  va   test   to‘plamlariga  bo‘linadi.  70%   o‘quv   va
30% test. 35Dtrain	=	{(xi
'',yi)}i=1
0.7n , 	Dtest	={(xi
'',yi)}i=0.7n+1	
n
4-qadam .   KNN   tasniflagichini   o‘qitish.   KNN   klassifikatori   o‘quv
ma’lumotlari va ularga mos keladigan teglardan foydalanib o‘qitiladi.
5-qadam.   Tasniflash.  Har bir test tasviri 	
xj
''∈Dtest  uchun xususiyat vektorini
va  	
Dtrain   o'quv   to'plamidagi   barcha  	xi
''   tasvirlarning   xususiyat   vektorlari   orasidagi
Evklid masofasini  d  hisoblanadi.	
d(xj'',xi'')=√∑k=1
m	
(xj,k''	−	xi,k''	)2
Hisoblangan masofalar asosida K eng yaqin qo‘shnilar tanlanadi.	
N	j	=	¿	¿
Bunda quyidagi shart bajarilishi kerak	
d(xj'',xi1
'')≤	d(xj'',xi2
'')≤...≤d(xj'',xiK'')
6-qadam.   Bashorat   qilish.   Sinov   tasviriga   sinf   yorlig‘i   K   eng   yaqin
qo‘shnilari orasida ko‘pchilik sinfiga qarab belgilanadi.	
^yi=	f(yi1,yi2,...,yiK)
7-qadam.   Baholash.   Tasniflagichning   ishlashini   baholash   uchun   taxmin
qilingan   yorliqlarni   test   tasvirlarining   haqiqiy   teglari   bilan   solishtiriladi.
Tasniflagichning   ish   faoliyatini   baholash   uchun   Accuracy   va   F1   score   kabi
baholash ko‘rsatkichlari hisoblanadi.
8-qadam .   Parametrlarni   sozlash.   KNN   tasniflagichining   ishlashini
optimallashtirish   uchun   K   va   masofa   ko‘rsatkichlarining   turli   qiymatlari   bilan
tajriba o‘tkaziladi. 	
K	∈{1,2,3,4,8,9	,...}
, 	dmasofa	∈{Evklid, Manxetten, Minkovski	}
Optimal   giperparametrlarni   topish   uchun   Grid   qidiruvi   usulidan
foydalaniladi.
Ushbu   qadamlarni   bajarib,   biz   KNN   mashinasini   o‘qitish   algoritmi   asosida
tasvirlarni oldindan belgilangan sinflar yoki toifalarga aniq tasniflash qobiliyatiga
ega mustahkam va samarali tasvir tasniflash modelini ishlab chiqishimiz mumkin. 36 373-BOB.  KNN  ALGORITMI ASOSIDA  TASVIRLARNI TASNIFLASHNING
DASTURIY TA’MINOTI  VA UNDAN FOYDALANISH TAVSIFI
3.1.  Funksional sxema va uning tavsifi
            Ushbu   bo’limda   Dasturiy   ta’minotning   funksional   sxemasi   tasvirlangan.Bu
sxema ishlash prinsipini yoritib beradi.
3. -rasm. Dasturiy ta’minotning funksional sxemasi tasvirlangan. 383.2.  Dasturiy ta’minot tavsifi va undan foydalanish
3.1-rasm. Dasturning asosiy oynasi 
Ushbu   rasmda   dasturning   asosiy   oynasi   joylashgan.   Ko‘rib   turganingizdek
asosiy   oynaning   yuqori   qismida   3   ta   tugma   joy   olgan.   Bular   “Ma’lumotlarni
o‘qitish”,   “Modelni   o‘qitish”,   hamda   “   Chiqish”   tugmalari   hisoblanadi.   Bu
tugmalar:
Ma’lumotlarni   o‘qitish   -   Tayyorlangan   datasetni   KNN   algoritmi   bo’yicha
o’qitiladigan oynaga olib o’tadi.
Modelni ishlatish  – Ma’lumotlarni o’qitishdan olingan modelni ishlatish oynasiga
o’tadi.
Chiqish  - Bu tugma dasturdan chiqishni ta’minlaydi. 393.2-rasm. Datasets bo’limi
            3.2-rasm keltirilgan oyna ma’lumotlarni o‘qitish oynasi hisoblanadi. Unda
menyular   satrida   “File”,   “Run”,   “Help”   tugmalari   joylashgan.   File   tugmasi
tarkiribida   uchta   tugma   mavjud.   Bular   train   ma’lumotlarni   kiritish,   test
ma’lumotlarni   kiritish,   Run   -   bu   tugmasining   vazifasi   train   va   test   ma’lumotlari
kiritilgandan   so‘ng   KNN   algoritmi   bo‘yicha   ma’lumotlarni   o‘qitishni   ishga
tushirish.   Help   esa   dastur   haqida   ma’lumot   olish   va   dasturda   biror   bir   muammo
chiqsa dasturchi bilan bog‘lanish imkonini beradi.
3.3-rasm. Train datasetini  kiritish .
             Bu rasmda keltirilgan oynada o’qitmoqchi bo’lgan train datasetini kiritish
oynasi keltirilgan.  403.4-rasm. Test datasetini kiritish
                   Bu rasmda  keltirilgan oynada o’qitmoqchi  bo’lgan test  datasetini  kiritish
oynasi keltirilgan.  
3.5-rasm. Bu yerda k eng yaqin qo’shnilarni kiritish keltirilgan
               Bu oynada train va test dataset kiritilgandan so’ng k eng yaqin qo’shnilar
sonini kiritiladi.
3.6-rasm. Modelni o’qitilgan oyna
                   Bu rasmda modelning aniqligini baholash qismi chiqadi. Rasmning pastki
qismida   modelning   baholash   natijasi   chiqarilgan.   Modelning   aniqligi   ya’ni 41Accuracy   73%   chiqdi.   Yani   bu   o‘qitiladigan   ma’lumotni   KNN   algoritmi   uchun
yaxshi natija deyish mumkin.     Bu yerda asosan 3 xil lebel turibdi 0,1,2, bu sonlar
lebelning indekslari hisoblanadi. 
0-indeks bizga Catni beradi. 
1- indeks Dogni beradi. 
2- indeks esa Others beradi
3.7-rasm. Rasmda modelni ishlatish oynasi 
           Bu oynada KNN algoritmi bo‘yicha datasetni o‘qitgan so‘ng olingan natija
modelini ishlatish oynasi rasmi keltirilgan. Bu rasmning menyular satrida 3 tugma
mavjud, bular “File”, “Run”, “Help”. File bo‘limida aniqlamoqchi bo‘lgan tasvirni
manzilini ko‘rsatish kerak.     Run - bu tugmaning vazifasi KNN algoritmi bo‘yicha
ma’lumotlarni o‘qitishidan olingan modelni ishga tushirish. Help esa dastur haqida
ma’lumot   olish   va   dasturda   biror   bir   muammo   chiqsa   dasturchi   bilan   bog‘lanish
imkonini beradi. 42 3.9-rasm.  Natija oynasi
                      Keltirilgan   rasmda   manzili   ko’rsatilgan   tasvirni       model   taxmin   qilgan
lebelini   ko’rish   va   haqiqatdan   lebel   to’g’ri   keltirilganmi   yo’qmi   tekshirish   uchun
tasvirni ekranga chiqarish. 43 Xulosa
Ushbu bitiruv malakaviy ishida K-Eng yaqin qo‘shnilar (KNN) algoritmidan
foydalangan   holda   tasvirlarning   tasniflash   jarayoni   tahlil   qilindi.     Tadqiqotda
algoritmning nazariy asoslari, amaliy qo‘llanilishi va tasvirlarni tasniflash bo‘yicha
turli   vazifalardagi   ishlashi   ko‘rib   chiqildi.   Turli   xil   ma'lumotlar   to'plamlari   va
parametr   sozlamalari   bo'yicha   KNNning   aniqligini   baholash   orqali   tadqiqot   turli
tasniflash muammolarini hal qilishda KNNning kuchli va cheklovlari tahlil qilindi.
KNN   algoritmi   asosida   tasvirlarni   sinflashtirish   algoritmi   ishlab   chiqildi
hamda   ishlab   chiqilgan   tasvirlarni   sinflashtirish   algoritmining   dasturiy   ta’minoti
yaratildi. 44FOYDALANILGAN ADABIYOTLAR
1.   S.   Shanjida,   M.   S.   Islam   and   M.   Mohiuddin,   “MRI-Image   based   Brain
Tumor   Detection   and   Classification   using   CNN-KNN,”   2022   IEEE   IAS   Global
Conference   on   Emerging   Technologies   (GlobConET),   Arad,   Romania,   2022,   pp.
900-905, doi: 10.1109/GlobConET53749.2022.9872168. 
2.   P.   Ahmadi,   “A   simple   and   efficient   method   for   segmentation   and
classification   of   aerial   images,”   2013   6th   International   Congress   on   Image   and
Signal   Processing   (CISP),   Hangzhou,   China,   2013,   pp.   566-570,   doi:
10.1109/CISP.2013.6744061. 
3.   F.   P.   Kressler,   M.   Franzen   and   K.   Steinnocher.   “Segmentation   based
classification   of   aerial   images   and   its   potential   to   support   the   update   of   existing
land use data bases.” Commission VI, WG VI/4 , 2005.
4.   L.   Matikainen,   K.   Karila,   “Segment-Based   Land   Cover   Mapping   of   a
Suburban Area-Comparison of  High-Resolution Remotely Sensed Datasets  Using
Classification   Trees   and   Test   Field   Points”,   Remote   Sensing,   MDPI,   Volume   3,
Issue 8, p.28, 2011.
5.  F.  Zang,  J.   Zhang,  “Discriminative   learning  by  sparse  representation   for
classification”, Journal of Neurocomputing, 2176-2183, 2011.
6.   D.   W.   Aha,   D.   Kibler,   and   M.   K.   Albert.   Instance-based   learning
algorithms. Machine Learning, 6:37–66, 1991.
7.   A.   Beygelzimer,   S.   Kakade,   and   J.   Langford.   Cover   trees   for   nearest
neighbor.   In   Proceedings   of   23rd   International   Conference   on   Machine   Learning
(ICML 2006), 2006.
8. H. Brighton and C. Mellish. Advances in instance selection for instance-
based learning algorithms. Data Mining and Knowledge Discovery, 6(2):153–172,
2002.
9.   C.   Brodley.   Addressing   the   selective   superiority   problem:   Automatic
algorithm/mode   class   selection.   In   Proceedings   of   the   10th   International
Conference   on   Machine   Learning   (ICML   93),   pages   17–24.   Morgan   Kaufmann
Publishers Inc., 1993. 4510.   R.   M.   Cameron-Jones.   Minimum   description   length   instance-based
learning.   In   Proceedings   of   the   5th   Australian   Joint   Conference   on   Artificial
Intelligence, pages 368–373. Morgan Kaufmann Publishers Inc., 1992.
11. S.J. Delany and D. Bridge. Feature-based and feature-free textual cbr: A
comparison   in   spam   filtering.   In   D.   Bell,   P.   Milligan,   and   P.   Sage,   editors,
Proceedings  of  the 17th Irish Conference on Artificial  Intelligence and Cognitive
Science (AICS’06), pages 244–253, 2006.
12.   S.J.   Delany   and   P.   Cunningham.   An   analysis   of   case-base   editing   in   a
spam   filtering   system.   In   7th   European   Conference   on   Case-Based   Reasoning.
Springer Verlag, 2004.
13. G. W. Gates. The reduced nearest neighbor rule. IEEE Transactions on
Information Theory, 18(3):431–433, 1972.
14. P. E. Hart. The condensed nearest  neighbor rule. IEEE Transactions on
Information Theory, 14(3):515–516, 1968.
15.   E.   J.   Keogh,   S.   Lonardi,   and   C.   Ratanamahatana.   Towards   parameter-
free data mining. In W. Kim, R. Kohavi, J. Gehrke, and W. DuMouchel,  editors,
KDD, pages 206–215. ACM, 2004.
16. R. Kohavi and G. H. John. Wrappers for feature subset selection. Artif.
Intell., 97(1-2):273–324, 1997.
17. S. Kullback and R. A. Leibler. On information and sufficiency. Annals
of Mathematical Statistics, 22:79–86, 1951.
18.   M.   Lenz   and   H-D.   Burkhard.   Case   retrieval   nets:   Basic   ideas   and
extensions. In KI - Kunstliche Intelligenz, pages 227–239, 1996.
19. M. Lenz, H.-D.Burkhard, and S. Br¨uckner. Applying case retrieval nets
to   diagnostic   tasks   in   technical   domains.   In   Ian   F.   C.   Smith   and   Boi   Faltings,
editors, EWCBR, volume 1168 of Lecture Notes in Computer Science, pages 219–
233. Springer, 1996. 46 ILOVA
Dastur kodi:
import os
import cv2
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report
# Image o‘lchamlari
IMG_HEIGHT = 64
IMG_WIDTH = 64
# Image larni o‘qish uchun funksiya
def load_images_from_folder(folder):
    images = []
    labels = []
    for filename in os.listdir(folder):
        img = cv2.imread(os.path.join(folder,filename))
        if img is not None:
            img = cv2.resize(img, (IMG_HEIGHT, IMG_WIDTH))
            images.append(img)
            labels.append(folder)
    return (images, labels)
# Image larni yuklash
folders = [‘/content/train/Cat’, ‘/content/train/Dog‘, ‘/content/train/Others’]
imgs = []
labels = []
for folder in folders:
    imgs_folder, labels_folder = load_images_from_folder(folder)
    imgs += imgs_folder
    labels += labels_folder 47# Image larni numpy arrayga aylantirish
imgs = np.array(imgs)
labels = np.array(labels)
# Image larni 1D arrayga aylantirish
imgs = imgs.reshape(imgs.shape[0], IMG_HEIGHT*IMG_WIDTH*3)
# Ma’lumotlarni train va test qismlarga bo‘lish
X_train, X_test, y_train, y_test = train_test_split(imgs, labels, test_size=0.2, 
random_state=42)
# KNN modelini yaratish va o‘qitish
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# Test ma’lumotlari bo‘yicha bajarimni baholash
y_pred = knn.predict(X_test)
print(classification_report(y_test, y_pred))
import pickle
from torchvision import transforms
from PIL import Image
# Load the saved model from the file
with open(‘/content/knn_model.pkl’, ‘rb’) as file:
    loaded_model = pickle.load(file)
# Define transformations for the new images
transform = transforms.Compose([
    transforms.Resize((64, 64)),
    transforms.ToTensor()
])
# Load and preprocess the new images
new_image_path = 
"/content/train/Dog/11012_jpg.rf.15c70d1c73f4617d7c83bac26df4d2f5.jpg"  # 
Replace with the path to your new image
new_image = Image.open(new_image_path) 48new_image = transform(new_image).unsqueeze(0)
# Use the loaded model to predict the label of the new image
predicted_label = loaded_model.predict(new_image.view(new_image.shape[0], -
1).numpy())
# Print the predicted label
print(predicted_label)
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report
from torch.utils.data import DataLoader
import pathlib
train_path = pathlib.Path(‘/content/train’)
test_path = pathlib.Path(‘/content/valid’)
from torchvision import datasets, transforms
# Define transformations for the images
transform = transforms.Compose([
    transforms.Resize((64, 64)),
    transforms.ToTensor()
])
# Create train and test datasets
train_dataset = datasets.ImageFolder(train_path, transform=transform)
test_dataset = datasets.ImageFolder(test_path, transform=transform)
# Create data loaders
train_loader = DataLoader(train_dataset, batch_size=len(train_dataset), 
shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=len(test_dataset), shuffle=True)
# Get the data and labels from the data loaders
train_data, train_labels = next(iter(train_loader))
test_data, test_labels = next(iter(test_loader))
# Reshape the data to 2D (n_samples, n_features) and convert to numpy arrays
train_data = train_data.view(train_data.shape[0], -1).numpy() 49train_labels = train_labels.numpy()
test_data = test_data.view(test_data.shape[0], -1).numpy()
test_labels = test_labels.numpy()
# Initialize the KNN classifier with a given number of neighbors (e.g., 3)
knn = KNeighborsClassifier(n_neighbors=21)
# Fit the model to the training data
knn.fit(train_data, train_labels)
# Use the trained model to predict the classes of the test set
y_pred = knn.predict(test_data)
# Print the classification report to evaluate the model’s performance
print(classification_report(test_labels, y_pred))
import pickle
from torchvision import transforms
from PIL import Image
# Load the saved model from the file
with open(‘knn_model.pkl’, ‘rb’) as file:
    loaded_model = pickle.load(file)
# Define transformations for the new images
transform = transforms.Compose([
    transforms.Resize((64, 64)),
    transforms.ToTensor()
])
# Load and preprocess the new images
new_image_path = 
"/content/test/Cat/00000011_015_jpg.rf.2bc1fdae8347ab7418bbe2454741b98c.jpg
"  # Replace with the path to your new image
new_image = Image.open(new_image_path)
new_image = transform(new_image).unsqueeze(0)
# Use the loaded model to predict the label of the new image 50predicted_label = loaded_model.predict(new_image.view(new_image.shape[0], -
1).numpy())
# Print the predicted label
print(predicted_label)
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.pipeline import Pipeline
from torchvision import datasets, transforms
from torch.utils.data import DataLoader
import pathlib
# Define paths for train and test data
train_path = pathlib.Path(‘/content/Images/train’)
test_path = pathlib.Path(‘/content/Images/test’)
# Define transformations for the images
transform = transforms.Compose([
    transforms.Resize((64, 64)),
    transforms.ToTensor()
])
# Create train and test datasets
train_dataset = datasets.ImageFolder(train_path, transform=transform)
test_dataset = datasets.ImageFolder(test_path, transform=transform)
# Create data loaders
train_loader = DataLoader(train_dataset, batch_size=len(train_dataset), 
shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=len(test_dataset), shuffle=True)
# Get the data and labels from the data loaders
train_data, train_labels = next(iter(train_loader))
test_data, test_labels = next(iter(test_loader)) 51# Reshape the data to 2D (n_samples, n_features) and convert to numpy arrays
train_data = train_data.view(train_data.shape[0], -1).numpy()
train_labels = train_labels.numpy()
test_data = test_data.view(test_data.shape[0], -1).numpy()
test_labels = test_labels.numpy()
# Define a pipeline with feature scaling and dimensionality reduction
pipeline = Pipeline([
    (‘scaler’, StandardScaler()),  # Standardize features
    (‘pca’, PCA(n_components=50)),  # Reduce dimensionality
    (‘knn’, KNeighborsClassifier(n_neighbors=100))  # KNN classifier
])
# Fit the pipeline to the training data
pipeline.fit(train_data, train_labels)
# Use the pipeline to predict the classes of the test set
y_pred = pipeline.predict(test_data)
# Print the classification report to evaluate the model’s performance
print(classification_report(test_labels, y_pred))
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report
from torch.utils.data import DataLoader
import pathlib
import pickle
train_path = pathlib.Path(‘/content/Images/train’)
test_path = pathlib.Path(‘/content/Images/test’)
from torchvision import datasets, transforms
# Define transformations for the images
transform = transforms.Compose([
    transforms.Resize((64, 64)),
    transforms.ToTensor() 52])
# Create train and test datasets
train_dataset = datasets.ImageFolder(train_path, transform=transform)
test_dataset = datasets.ImageFolder(test_path, transform=transform)
# Create data loaders
train_loader = DataLoader(train_dataset, batch_size=len(train_dataset), 
shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=len(test_dataset), shuffle=True)
# Get the data and labels from the data loaders
train_data, train_labels = next(iter(train_loader))
test_data, test_labels = next(iter(test_loader))
# Reshape the data to 2D (n_samples, n_features) and convert to numpy arrays
train_data = train_data.view(train_data.shape[0], -1).numpy()
train_labels = train_labels.numpy()
test_data = test_data.view(test_data.shape[0], -1).numpy()
test_labels = test_labels.numpy()
# Initialize the KNN classifier with a given number of neighbors (e.g., 3)
knn = KNeighborsClassifier(n_neighbors=100)
# Fit the model to the training data
knn.fit(train_data, train_labels)
# Use the trained model to predict the classes of the test set
y_pred = knn.predict(test_data)
# Print the classification report to evaluate the model’s performance
print(classification_report(test_labels, y_pred))
# Save the trained model to a file
with open(‘knn_model.pkl’, ‘wb’) as file:
    pickle.dump(knn, file)
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report
from sklearn.model_selection import GridSearchCV 53from torch.utils.data import DataLoader
import pathlib
from torchvision import datasets, transforms
# Ma’lumotlarni yuklash uchun yo‘l
train_path = pathlib.Path(‘/content/Images/train’)
test_path = pathlib.Path(‘/content/Images/test’)
# Rasmlarni o‘zgartirishlar tuzilmasini aniqlash
transform = transforms.Compose([
    transforms.Resize((64, 64)),
    transforms.ToTensor()
])
# Ma’lumotlar to‘plamlarini yaratish
train_dataset = datasets.ImageFolder(train_path, transform=transform)
test_dataset = datasets.ImageFolder(test_path, transform=transform)
# Ma’lumotlarni yuklash uchun yig‘indilashchilar
train_loader = DataLoader(train_dataset, batch_size=len(train_dataset), 
shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=len(test_dataset), shuffle=True)
# Ma’lumotlarni olish
train_data, train_labels = next(iter(train_loader))
test_data, test_labels = next(iter(test_loader))
# 2D shaklda (n_samples, n_features) ga o‘zgartirish va numpy massivlariga 
aylantirish
train_data = train_data.view(train_data.shape[0], -1).numpy()
train_labels = train_labels.numpy()
test_data = test_data.view(test_data.shape[0], -1).numpy()
test_labels = test_labels.numpy()
# KNN modelini aniqlash
knn = KNeighborsClassifier() 54# Optimallashtirilayotgan parametrlar
param_grid = {
    ‘n_neighbors’: [3, 4, 5, 6, 7],  # K-ni o‘zgartiramiz
    ‘weights’: [‘uniform’, ‘distance’]  # Chetlash uchun o‘zgaruvchilar
}
# GridSearchCV orqali eng yaxshi parametrlarni topish
grid_search = GridSearchCV(estimator=knn, param_grid=param_grid, cv=3)
grid_search.fit(train_data, train_labels)
# Eng yaxshi parametrlarni topib chiqarish
best_params = grid_search.best_params_
print("Eng yaxshi parametrlar:", best_params)
# Eng yaxshi modelni topib chiqarish
best_knn = grid_search.best_estimator_
# Test ma’lumotlarini sinov uchun aniqlash
y_pred = best_knn.predict(test_data)
# Modelni baholash uchun sinov natijalarini chop etish
print(classification_report(test_labels, y_pred))
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report
from torch.utils.data import DataLoader
import pathlib
from torchvision import datasets, transforms
# Ma’lumotlarni yuklash uchun yo‘l
train_path = pathlib.Path(‘/content/Images/train’)
test_path = pathlib.Path(‘/content/Images/test’)
# Rasmlarni o‘zgartirishlar tuzilmasini aniqlash
transform = transforms.Compose([
    transforms.Resize((240, 240)),
    transforms.ToTensor()
]) 55# Ma’lumotlar to‘plamlarini yaratish
train_dataset = datasets.ImageFolder(train_path, transform=transform)
test_dataset = datasets.ImageFolder(test_path, transform=transform)
# Ma’lumotlarni yuklash uchun yig‘indilashchilar
train_loader = DataLoader(train_dataset, batch_size=len(train_dataset), 
shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=len(test_dataset), shuffle=True)
# Ma’lumotlarni olish
train_data, train_labels = next(iter(train_loader))
test_data, test_labels = next(iter(test_loader))
# 2D shaklda (n_samples, n_features) ga o‘zgartirish va numpy massivlariga 
aylantirish
train_data = train_data.view(train_data.shape[0], -1).numpy()
train_labels = train_labels.numpy()
test_data = test_data.view(test_data.shape[0], -1).numpy()
test_labels = test_labels.numpy()
# KNN modelini aniqlash
knn = KNeighborsClassifier(n_neighbors=4)
# Ma’lumotlar bazasini o‘qitish
knn.fit(train_data, train_labels)
# Test ma’lumotlarini sinov uchun aniqlash
y_pred = knn.predict(test_data)
# Modelni baholash uchun sinov natijalarini chop etish
print(classification_report(test_labels, y_pred))
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report
from sklearn.ensemble import VotingClassifier
from torch.utils.data import DataLoader
import pathlib 56from torchvision import datasets, transforms
# Ma’lumotlarni yuklash uchun yo‘l
train_path = pathlib.Path(‘/content/Images/train’)
test_path = pathlib.Path(‘/content/Images/test’)
# Rasmlarni o‘zgartirishlar tuzilmasini aniqlash
transform = transforms.Compose([
    transforms.Resize((64, 64)),
    transforms.ToTensor()
])
# Ma’lumotlar to‘plamlarini yaratish
train_dataset = datasets.ImageFolder(train_path, transform=transform)
test_dataset = datasets.ImageFolder(test_path, transform=transform)
# Ma’lumotlarni yuklash uchun yig‘indilashchilar
train_loader = DataLoader(train_dataset, batch_size=len(train_dataset), 
shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=len(test_dataset), shuffle=True)
# Ma’lumotlarni olish
train_data, train_labels = next(iter(train_loader))
test_data, test_labels = next(iter(test_loader))
# 2D shaklda (n_samples, n_features) ga o‘zgartirish va numpy massivlariga 
aylantirish
train_data = train_data.view(train_data.shape[0], -1).numpy()
train_labels = train_labels.numpy()
test_data = test_data.view(test_data.shape[0], -1).numpy()
test_labels = test_labels.numpy()
# KNN modelini aniqlash
knn = KNeighborsClassifier(n_neighbors=4)
# Decision Trees modelini aniqlash
decision_tree = DecisionTreeClassifier() 57# Qaror Daraklari va KNN algoritmlarini birlashtirish
voting_clf = VotingClassifier(estimators=[(‘knn’, knn), (‘decision_tree’, 
decision_tree)], voting=‘hard’)
# Qo‘shimcha modelni o‘qitish
voting_clf.fit(train_data, train_labels)
# Test ma’lumotlarini sinov uchun aniqlash
y_pred = voting_clf.predict(test_data)
# Modelni baholash uchun sinov natijalarini chop etish
print(classification_report(test_labels, y_pred))
from sklearn.ensemble import RandomForestClassifier, VotingClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report
from torch.utils.data import DataLoader
import pathlib
from torchvision import datasets, transforms
# Ma’lumotlarni yuklash uchun yo‘l
train_path = pathlib.Path(‘/content/Images/train’)
test_path = pathlib.Path(‘/content/Images/test’)
# Rasmlarni o‘zgartirishlar tuzilmasini aniqlash
transform = transforms.Compose([
    transforms.Resize((64, 64)),
    transforms.ToTensor()
])
# Ma’lumotlar to‘plamlarini yaratish
train_dataset = datasets.ImageFolder(train_path, transform=transform)
test_dataset = datasets.ImageFolder(test_path, transform=transform)
# Ma’lumotlarni yuklash uchun yig‘indilashchilar
train_loader = DataLoader(train_dataset, batch_size=len(train_dataset), 
shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=len(test_dataset), shuffle=True) 58# Ma’lumotlarni olish
train_data, train_labels = next(iter(train_loader))
test_data, test_labels = next(iter(test_loader))
# 2D shaklda (n_samples, n_features) ga o‘zgartirish va numpy massivlariga 
aylantirish
train_data = train_data.view(train_data.shape[0], -1).numpy()
train_labels = train_labels.numpy()
test_data = test_data.view(test_data.shape[0], -1).numpy()
test_labels = test_labels.numpy()
# KNN modelini aniqlash
knn = KNeighborsClassifier(n_neighbors=4)
# Random Forests modelini aniqlash
random_forest = RandomForestClassifier(n_estimators=100)
# VotingClassifier orqali KNN va Random Forests algoritmlarini birlashtirish
voting_clf = VotingClassifier(estimators=[(‘knn’, knn), (‘random_forest’, 
random_forest)], voting=‘hard’)
# Qo‘shimcha modelni o‘qitish
voting_clf.fit(train_data, train_labels)
# Test ma’lumotlarini sinov uchun aniqlash
y_pred = voting_clf.predict(test_data)
# Modelni baholash uchun sinov natijalarini chop etish
print(classification_report(test_labels, y_pred))

1MASHINAVIY O‘QITISHNING KNN ALGORITMI ASOSIDA TASVIRLARNI TASNIFLASH Mundarija Kirish………………………………………………………………...…... 3-5 1. MASHINAVIY O‘QITISH ASOSIDA TASVIRLARNI TASNIFLASHNING TIZIMLI TAHLIL …..………………………………..….... 6 1.1. Tasvirlarni tasniflash asoslari ... ……………………….……….……………6 1.2. Tasvirlarni tasniflash uchun mashinani o‘rganish algoritmlari……………... 9 1.3. Tasvirlarni tasniflashda KNN algoritmining qo‘llanilishi.. ………...……... 12 1.4. KNN algoritmining afzalliklari va cheklovlari ……………...………....… 13 2. KNN ALGORITMI ASOSIDA TASVIRLARNI TASNIFLASHNING METODOLOGIYASI………………………………………….…………..….….15 2.1. Ma’lumotlar to‘plami tavsifi …………….. …………………………...... 15 2.2. Ma’lumotlarga o ldindan ishlov berish texnikasi …. …….…………….….. 16 2.3. KNN algoritmi……………………………………………………...…....... 17 2.4 KNN algoritmini o‘qitish……………...…….…………………………..... 28 2.4 Eksperimental natijalar ...……………...…….…………………………..... 33 3. KNN ALGORITMI ASOSIDA TASVIRLARNI TASNIFLASHNING DASTURIY TA’MINOTI VA UNDAN FOYDALANISH TAVSIFI ..……….. 36 3.1 Funksional sxema va uning tavsifi ………………………..…………..…... 36 3.2 Dasturiy ta’minot tavsifi va undan foydalanish. ….…..…………….…….. 37 Xulosa………………………………………………………………………........ 42 Foydalanilgan adabiyotlar ro‘yxati…………………………………………….... 43 Ilova…………………………………………………………………………....... 45

2 K I R I SH Masalaning dolzarbligi. KNN algoritmidan foydalangan holda tasvirlarni tasniflash mavzusi kompyuterli ko‘rish va mashinani o‘qitish sohasida katta ahamiyatga ega. O‘zining soddaligi va samaradorligi bilan mashhur bo‘lgan KNN algoritmi obyektni tanib olish va tibbiy tasvirlashdan tortib kuzatuv tizimlarigacha bo‘lgan ilovalar bilan tasvir tasnifiga ko‘p qirrali yondashuvni taklif etadi. Turli sohalarda raqamli tasvirlarning eksponensial o‘sishi bilan tasvirlarni avtomatik ravishda tasniflash va izohlash qobiliyati dolzarb masala hisoblanadi. Avtonom transport vositalari sohasida KNN algoritmi obyektlarni aniqlash va tasniflashga, o‘z-o‘zini boshqarish texnologiyalarining xavfsizligi va ishonchliligini oshirishga hissa qo‘shadi. Chakana savdoda tasvirni tasniflash inventarizatsiyani boshqarishni soddalashtirishi va mahsulotni aniq tanib olish va tavsiya etish tizimlari orqali mijozlar tajribasini yaxshilashi mumkin. Bundan tashqari, xavfsizlik tizimlarida KNN algoritmi shaxslar va obyektlarni aniqlash va tanib olishda yordam beradi va shu bilan kuzatuv va xavfsizlik choralarini kuchaytiradi. Raqamli tasvirlarning ortishi to‘xtovsiz davom etar ekan, tasvirlarni tasniflashning samarali, aniq va kengaytiriladigan usullariga bo‘lgan ehtiyoj tobora ortib bormoqda. KNN algoritmining turli xil ma’lumotlar to‘plamlariga moslashish qobiliyati va uni amalga oshirish qulayligi ushbu kontekstda qimmatli vositaga aylantiradi. Bundan tashqari, hisoblash quvvatidagi uzluksiz yutuqlar va murakkab xususiyatlarni ajratib olish texnikasining rivojlanishi KNN algoritmining potentsialini va real stsenariylarda qo‘llanilishini kengaytirmoqda. Shuning uchun, tasvirni tasniflash uchun KNN algoritmini qo‘llash va takomillashtirish texnologiyani rivojlantirish turli sohalarda aqlli, avtomatlashtirilgan tasvir tahliliga ortib borayotgan talabni qondirish uchun juda muhim hisoblanadi.

3Masalaning qo‘yilishi. Mashinaviy o‘qitishning KNN algoritmi asosida tasvirlarni tasniflash algoritmi va dasturiy ta’minotini yaratish qaralgan. Tadqiqotning maqsadi : m ashinaviy o‘qitishning KNN algoritmi asosida tasvirlarni sinflashtirish algoritmi va dasturi y ta’minoti ishlab chiqishd an iborat . Tadqiqotning vazifalari: Dissertatsiya ishining maqsadini amalga oshirish uchun quyidagi vazifalar bajariladi: 1. KNN algoritmi va uning yordamida tasvir larni sinflashtirish masalasi tizimli tahlil qilinadi . 2. Tasvir ni sinflashtirish uchun kerakli ma’lumotlar to‘plami qayta ishlanadi . 3. KNN algoritmi asosida tasvir larni sinflashtirish algoritmi ishlab chiqiladi . 4. Ishlab chiqilgan tasvir larni sinflashtirish algoritmining dasturiy ta’minoti yaratiladi. Ishning nazariy va amaliy ahamiyati KNN algoritmi asosida mashinaviy o‘qitishning tasvir sinflashtirish masalasini muvaffaqiyatli yechish uchun zarurdir. Bu, algoritmdagi tushunchalarni o‘rganish, ma’lumotlarni tayyorlash va sinflashtirish , natijalarni tahlil qilish va algoritmdagi parametrlarni optimallashtirishni o‘z ichiga oladi. Tasnif. BMI kirish qismi, uchta bob, xulosa va foydalanigan adabiyotlardan tashkil topgan. Ilovada, dastur kodi keltirilgan. 1-bobda, mashinani o‘qitishning KNN algoritmidan foydalangan holda tasvirlarni tasniflash tizimli tahlil qilingan. 2-bobda, tasvir ma’lumotlariga oldindan ishlov berish va KNN algoritmini o‘qitish jarayoni keltirilgan. 3 -bobda , tasvirlarni tasniflashni dasturiy ta’minoti va undan foydalanish tavsifi berilgan . BMI mazmuni aks ettirilgan va nashr etilgan maqolalar. Yarmatov Sh.Sh., Axmedov R.I. Image classification based on the knn algorithm of machine learning. // “Yangi O‘zbekiston: fan, ta’lim va innovatsiya” Respublika miqyosidagi ilmiy-texnik anjuman. – Jizzax, 2024. – B. 270-272. Tadqiqot mavzusi bo‘yicha adabiyotlar tahlili:

4T. Xasti, R. Tibshirani, J. Fridman. “The Elements of Statistical Learning”. Publication: 2009, Springer. – Ushbu tadqiqotda turli xil statistik o‘qitish usullarini, jumladan K-Eng yaqin qo‘shnilar (KNN) algoritmini to‘liq ko‘rib chiqilgan. Mualliflar KNNning nazariy asoslarini, tasniflash vazifalarida uning soddaligi va samaradorligini tahlil qilgan. Kitob, shuningdek, parametrlarni sozlash va hisoblash murakkabligi kabi amaliy fikrlarni o‘z ichiga oladi. P. Cunningham, S. Delany. “k-Nearest Neighbour Classifiers”. Publication: 2007, UCD-CSI Working Paper Series. – Ushbu maqolada KNN algoritmi batafsil o‘rganilib, uning kuchli va kamchiliklari tahlil qilingan. Mualliflar algoritmning turli sohalarda, jumladan tasvirlarni tasniflashda qo‘llanilishi haqida tushunchalar bergan. Ular masofa o‘lchovlari, xususiyatlarni tanlash va K ning turli qiymatlarining tasniflash samaradorligiga ta’sirini muhokama qilganlar. L. Liu, X. Liu, X. Cheng. “A Novel Improved K-Nearest Neighbors Algorithm for Image”. Publication: 2017, IEEE Access. – Ushbu tadqiqotda an’anaviy KNN algoritmini tasvirlarni tasniflash vazifalarida ishlashini yaxshilash uchun takomillashtirish taklif qilingan. Mualliflar K-qo‘shnilar uchun moslashuvchan tortish sxemasini va yangi xususiyatlarni ajratib olish usulini taqdim etgan. Ularning eksperimental natijalari tasniflash aniqligida sezilarli yaxshilanishlarni ko‘rsatib bergan. A. Oliva, A. Torralba. “Modeling the Shape of the Scene: A Holistic Representation of the Spatial Envelope”. Publication: 2001, International Journal of Computer Vision. – Garchi ushbu maqolada faqat KNNga e’tibor qaratilmagan bo‘lsada, ushbu maqola sahna tasnifi uchun yaxlit xususiyatni aks ettiruvchi fazoviy konvert tushunchasini taqdim etadi. Tavsiya etilgan xususiyatni ajratib olish usuli tasvirni tasniflash uchun KNN bilan samarali birlashtirilishi mumkin. R. Duda, P. Xart, D. Stork. “Pattern Classification”. Publication: 2000, Wiley-Interscience. – Ushbu kitob klassik tasniflash usullarining keng doirasini, shu jumladan KNN algoritmini o‘z ichiga oladi. Mualliflar algoritmning nazariy asoslarini, amaliy tatbiqini va tasvirlarni tasniflashda qo‘llanilishini har tomonlama tahlil qilganlar.

5