Knn k eng yaqin qo'shni yoki k eng yaqin qo'shni degan ma'noni anglatadi va eng oddiy tasniflash algoritmlaridan biri bo'lib, ba'zida regressiya muammolarida ham qo'llaniladi


Download 1.88 Mb.
Sana23.12.2022
Hajmi1.88 Mb.
#1046566
Bog'liq
MUSTAQIL ISH TIMSOLLARNI TANIB OLISH


Muhammad Al-Xorazmiy nomidagi

Toshkent Axborot Texnologiyalari Universiteti


Fan: TIMSOLLARNI TANIB OLISH


MUSTAQIL ISH

Guruh:314-19


Bajardi: JUMANOV OZODBEK

MAVZU: KNN TANIB OLISH ALGORITMI


kNN k eng yaqin qo'shni yoki k eng yaqin qo'shni degan ma'noni anglatadi va eng oddiy tasniflash algoritmlaridan biri bo'lib, ba'zida regressiya muammolarida ham qo'llaniladi. Oddiyligi tufayli bu Mashinani o'rganish sohasida boshlash uchun yaxshi namunadir. Ushbu maqolada python-da bunday tasniflagichning kodini yozish, shuningdek, natijalarni vizualizatsiya qilish misoli ko'rib chiqiladi.

Mashinani o'rganishda tasniflash vazifasi - ob'ektni oldindan belgilangan sinflardan biriga uning rasmiylashtirilgan xususiyatlaridan kelib chiqib belgilash vazifasi. Ushbu masaladagi ob'ektlarning har biri N o'lchovli fazoda vektor sifatida tasvirlangan, har bir o'lchov ob'ekt xususiyatlaridan birining tavsifi hisoblanadi. Aytaylik, biz monitorlarni tasniflashimiz kerak: parametr bo'shlig'imizdagi o'lchamlar dyuymdagi diagonal o'lcham, tomonlar nisbati, maksimal ruxsat, HDMI interfeysining mavjudligi, narxi va boshqalar bo'ladi. Matnni tasniflash ishi biroz murakkabroq, ular odatda atama-hujjat matritsasidan foydalaning.

Klassifikatorni o'rgatish uchun sinflar oldindan belgilangan ob'ektlar to'plamiga ega bo'lish kerak. Ushbu to'plam o'quv namunasi deb ataladi, uni belgilash qo'lda, o'rganilayotgan soha mutaxassislarini jalb qilgan holda amalga oshiriladi. Misol uchun, sharhlarning oldindan yig'ilgan testlari uchun "Ijtimoiy sharhda haqoratlarni aniqlash" topshirig'ida odam bu sharh muhokama ishtirokchilaridan biriga nisbatan haqoratmi yoki yo'qmi degan fikrni qo'yadi, topshiriqning o'zi ikkilik tasniflash misolidir. Tasniflash masalasida ikkitadan ortiq sinf (ko'p sinf) bo'lishi mumkin, ob'ektlarning har biri bir nechta sinfga tegishli bo'lishi mumkin (kesishuvchi).

Algoritm
Sinov namunasi ob'ektlarining har birini tasniflash uchun siz quyidagi operatsiyalarni ketma-ket bajarishingiz kerak:


O'quv namunasidagi ob'ektlarning har biriga masofani hisoblang
O'quv namunasining k ob'ektini tanlang, ularning masofasi minimaldir
Tasniflanayotgan ob'ekt sinfi eng yaqin k qo'shnilar orasida eng ko'p uchraydigan sinfdir
Quyidagi misollar pythonda amalga oshirilgan. Ularning to'g'ri bajarilishi uchun pythondan tashqari numpy, pylab va matplotlib o'rnatilgan bo'lishi kerak. Kutubxonani ishga tushirish kodi quyidagicha:

Dastlabki ma'lumotlar


Misol bo'yicha tasniflagichning ishini ko'rib chiqing. Birinchidan, biz qanday tajribalar o'tkazilishi haqida ma'lumot yaratishimiz kerak:

Oddiylik uchun men ikki o'lchovli bo'shliqni tanladim, unda standart og'ish 0,5 bo'lgan ikki o'lchovli Gaussning kutilgan qiymatining joylashuvi har bir o'q bo'ylab 0 dan 5 gacha bo'lgan oraliqda tasodifiy tanlangan. 0,5 qiymati ob'ektlar etarlicha yaxshi ajratilishi uchun tanlanadi (uch sigma qoidasi).
Olingan tanlovni ko'rish uchun siz quyidagi kodni bajarishingiz kerak:

O'quv va sinov namunalarini olish
Shunday qilib, bizda ob'ektlar to'plami mavjud bo'lib, ularning har biri o'z sinfiga ega. Endi biz ushbu to'plamni ikki qismga bo'lishimiz kerak: o'quv to'plami va test to'plami. Buning uchun quyidagi kod ishlatiladi:
#N maʼlumotlar elementini ikki qismga ajratiLDI:

Endi, o'quv namunasiga ega bo'lgan holda, biz tasniflash algoritmining o'zini amalga oshirishimiz mumkin:

O'quv va sinov namunalarini olish
Shunday qilib, bizda ob'ektlar to'plami mavjud bo'lib, ularning har biri o'z sinfiga ega. Endi biz ushbu to'plamni ikki qismga bo'lishimiz kerak: o'quv to'plami va test to'plami. Buning uchun quyidagi kod ishlatiladi:

Klassifikatorni amalga oshirish


Endi, o'quv namunasiga ega bo'lgan holda, biz tasniflash algoritmini o'zini amalga oshirishimiz mumkin:

Ob'ektlar orasidagi masofani aniqlash uchun siz nafaqat Evklid masofasidan foydalanishingiz mumkin: Manxetten masofasi, kosinus o'lchovi, Pearson korrelyatsiya mezoni va boshqalar ham qo'llaniladi.
Amalga oshirish misollari
Endi biz tasniflagichimiz qanchalik yaxshi ishlashini baholashimiz mumkin. Buning uchun biz ma'lumotlarni hosil qilamiz, ularni o'quv va sinov namunalariga ajratamiz, sinov namunasi ob'ektlarini tasniflaymiz va sinfning haqiqiy qiymatini tasniflash natijasida olingan qiymat bilan taqqoslaymiz.

Klassifikatorning sifatini baholash uchun turli xil algoritmlar va turli xil o'lchovlar qo'llaniladi, batafsil ma'lumotni bu erda topishingiz mumkin:
Endi eng qiziqarli narsa qoladi: tasniflagichning ishini grafik tarzda ko'rsatish. Quyidagi rasmlarda men har birida 40 ta elementdan iborat 3 ta sinfdan foydalandim, algoritm uchun k qiymati uchtaga teng olindi.


ushbu rasmlarning chiqishi quyidagi koddan foydalangan



Xulosa


kNN eng oddiy tasniflash algoritmlaridan biridir, shuning uchun u ko'pincha haqiqiy muammolarda samarasiz bo'lib chiqadi. Tasniflash aniqligiga qo'shimcha ravishda, ushbu tasniflagichning muammosi tasniflash tezligidir: agar o'quv namunasida N ob'ekt, sinov namunasida M ob'ekt va bo'shliq o'lchami K bo'lsa, u holda sinov namunasini tasniflash bo'yicha operatsiyalar soni. O(K*M*N) sifatida baholanishi mumkin. Shunga qaramay, kNN algoritmi Machine Learning bilan boshlash uchun yaxshi namunadir.
Download 1.88 Mb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling