K-yaqin qo'shnilar algoritmi bilan mashinani o'rganish asoslar



Download 41,27 Kb.
bet2/2
Sana22.06.2022
Hajmi41,27 Kb.
#693693
1   2
Bog'liq
Botirxo`ja Mustaqil Ish

K-Eng yaqin qo'shnilar
KNN algoritmi shunga o'xshash narsalar yaqin joyda mavjudligini taxmin qiladi. Boshqacha qilib aytganda, o'xshash narsalar bir-biriga yaqin.
" Bir patning to'dasi birga to'planadi."
Yuqoridagi rasmda ko'pincha o'xshash ma'lumotlar nuqtalari bir-biriga yaqin ekanligiga e'tibor bering. KNN algoritmi ushbu taxminning algoritm foydali bo'lishi uchun etarlicha to'g'riligiga bog'liq. KNN biz bolaligimizda o'rgangan ba'zi matematika bilan o'xshashlik (ba'zan masofa, yaqinlik yoki yaqinlik deb ataladi) g'oyasini qamrab oladi - grafikdagi nuqtalar orasidagi masofani hisoblash.
Eslatma: Davom etishdan oldin grafikdagi nuqtalar orasidagi masofani qanday hisoblashimizni tushunish kerak. Agar siz ushbu hisob-kitob qanday amalga oshirilishini bilmagan bo'lsangiz yoki uni qayta ko'rib chiqishga muhtoj bo'lsangiz, " 2 nuqta orasidagi masofa " ni to'liq o'qib chiqing va darhol qaytib keling.
Masofani hisoblashning boshqa usullari mavjud va biz hal qilayotgan muammoga qarab bir usul afzalroq bo'lishi mumkin. Biroq, to'g'ri chiziqli masofa (shuningdek, Evklid masofasi deb ataladi) mashhur va tanish tanlovdir.

KNN algoritmi


  1. Ma'lumotlarni yuklang

  2. Siz tanlagan qo'shnilar soniga K ni boshlang

3. Ma'lumotlardagi har bir misol uchun
3.1 Ma'lumotlardan so'rov misoli va joriy misol orasidagi masofani hisoblang.
3.2 Buyurtma qilingan to'plamga misolning masofasi va indeksini qo'shing
4. Masofalar va indekslarning tartiblangan to‘plamini masofalar bo‘yicha eng kichikdan kattaga (o‘sish tartibida) tartiblang
5. Saralangan to'plamdan birinchi K yozuvni tanlang
6. Tanlangan K yozuvlarning teglarini oling
7. Agar regressiya bo'lsa, K belgilarining o'rtacha qiymatini qaytaring
8. Agar tasniflash bo'lsa, K belgilarining rejimini qaytaring

KNNni amalga oshirish (noldan)






from collections import Counter




import math








def knn(data, query, k, distance_fn, choice_fn):




neighbor_distances_and_indices = []








# 3. For each example in the data




for index, example in enumerate(data):




# 3.1 Calculate the distance between the query example and the current




# example from the data.




distance = distance_fn(example[:-1], query)








# 3.2 Add the distance and the index of the example to an ordered collection




neighbor_distances_and_indices.append((distance, index))








# 4. Sort the ordered collection of distances and indices from




# smallest to largest (in ascending order) by the distances




sorted_neighbor_distances_and_indices = sorted(neighbor_distances_and_indices)








# 5. Pick the first K entries from the sorted collection




k_nearest_distances_and_indices = sorted_neighbor_distances_and_indices[:k]








# 6. Get the labels of the selected K entries




k_nearest_labels = [data[i][-1] for distance, i in k_nearest_distances_and_indices]








# 7. If regression (choice_fn = mean), return the average of the K labels




# 8. If classification (choice_fn = mode), return the mode of the K labels




return k_nearest_distances_and_indices , choice_fn(k_nearest_labels)








def mean(labels):




return sum(labels) / len(labels)








def mode(labels):




return Counter(labels).most_common(1)[0][0]








def euclidean_distance(point1, point2):




sum_squared_distance = 0




for i in range(len(point1)):




sum_squared_distance += math.pow(point1[i] - point2[i], 2)




return math.sqrt(sum_squared_distance)








def main():




'''




# Regression Data




#




# Column 0: height (inches)




# Column 1: weight (pounds)




'''




reg_data = [




[65.75, 112.99],




[71.52, 136.49],




[69.40, 153.03],




[68.22, 142.34],




[67.79, 144.30],




[68.70, 123.30],




[69.80, 141.49],




[70.01, 136.46],




[67.90, 112.37],




[66.49, 127.45],




]








# Question:




# Given the data we have, what's the best-guess at someone's weight if they are 60 inches tall?




reg_query = [60]




reg_k_nearest_neighbors, reg_prediction = knn(




reg_data, reg_query, k=3, distance_fn=euclidean_distance, choice_fn=mean




)








'''




# Classification Data




#




# Column 0: age




# Column 1: likes pineapple




'''




clf_data = [




[22, 1],




[23, 1],




[21, 1],




[18, 1],




[19, 1],




[25, 0],




[27, 0],




[29, 0],




[31, 0],




[45, 0],




]




# Question:




# Given the data we have, does a 33 year old like pineapples on their pizza?




clf_query = [33]




clf_k_nearest_neighbors, clf_prediction = knn(




clf_data, clf_query, k=3, distance_fn=euclidean_distance, choice_fn=mode




)








if __name__ == '__main__':




main()


Maʼlumotlaringizga mos boʻlgan K ni tanlash uchun biz KNN algoritmini K ning turli qiymatlari bilan bir necha marta ishga tushiramiz va algoritmning maʼlumotlar berilganda aniq bashorat qilish qobiliyatini saqlab qolgan holda biz duch keladigan xatolar sonini kamaytiradigan K ni tanlaymiz. oldin ko'rmagan.
Bu erda yodda tutish kerak bo'lgan ba'zi narsalar:

  1. K qiymatini 1 ga kamaytirsak, bashoratlarimiz kamroq barqaror bo'ladi. Bir daqiqa o'ylab ko'ring, K=1 ni tasavvur qiling va bizda bir nechta qizil va bitta yashil rang bilan o'ralgan so'rov nuqtasi bor (yuqoridagi rangli uchastkaning yuqori chap burchagi haqida o'ylayapman), lekin yashil rang eng yaqin qo'shnidir. Mantiqan, biz so'rov nuqtasini qizil deb o'ylaymiz, lekin K=1 bo'lgani uchun KNN so'rov nuqtasi yashil ekanligini noto'g'ri taxmin qiladi.

  2. Aksincha, biz K qiymatini oshirgan sayin, ko'pchilik ovoz berish / o'rtacha hisoblash tufayli bizning bashoratlarimiz barqarorroq bo'ladi va shuning uchun aniqroq bashorat qilish ehtimoli ko'proq (ma'lum bir nuqtaga qadar). Oxir-oqibat, biz ko'payib borayotgan xatolarga guvoh bo'la boshlaymiz. Aynan shu nuqtada biz K qiymatini juda uzoqqa surganimizni bilamiz.

  3. Biz yorliqlar orasida ko'pchilik ovozni olgan hollarda (masalan, tasniflash muammosi rejimini tanlash), biz odatda K ni toq raqamga aylantiramiz.

Afzalliklar


  1. Algoritm oddiy va amalga oshirish oson.

  2. Model yaratish, bir nechta parametrlarni sozlash yoki qo'shimcha taxminlar qilishning hojati yo'q.

  3. Algoritm ko'p qirrali. U tasniflash, regressiya va qidirish uchun ishlatilishi mumkin (keyingi bo'limda ko'rib chiqamiz).

Kamchiliklari


  1. Misollar va/yoki bashorat qiluvchilar/mustaqil o'zgaruvchilar soni ortishi bilan algoritm sezilarli darajada sekinlashadi.

KNN amalda


KNN ning asosiy kamchiligi ma'lumotlar hajmi oshgani sayin sezilarli darajada sekinlashishi uni bashoratlarni tezda amalga oshirish kerak bo'lgan muhitda amaliy bo'lmagan tanlovga aylantiradi. Bundan tashqari, aniqroq tasniflash va regressiya natijalarini beradigan tezroq algoritmlar mavjud.
Biroq, bashorat qilish uchun foydalanayotgan ma'lumotlarni tezda qayta ishlash uchun etarli hisoblash resurslariga ega bo'lsangiz, KNN shunga o'xshash ob'ektlarni aniqlashga bog'liq echimlarga ega muammolarni hal qilishda foydali bo'lishi mumkin. Bunga misol qilib tavsiya qiluvchi tizimlarda KNN algoritmidan foydalanish, KNN-search ilovasini keltirish mumkin.

Tavsiya tizimlari


Keng miqyosda bu Amazon-da mahsulotlarni, Medium-dagi maqolalarni, Netflix-dagi filmlarni yoki YouTube-dagi videolarni tavsiya qilish kabi ko'rinadi. Garchi, ularning barchasi qayta ishlanadigan ma'lumotlarning katta hajmi tufayli tavsiyalar berishning samarali vositalaridan foydalanishiga amin bo'lishimiz mumkin.
Biroq, biz ushbu maqolada o'rganganlarimizdan foydalanib, ushbu tavsiya tizimlaridan birini kichikroq miqyosda takrorlashimiz mumkin. Keling, filmlarni tavsiya qilish tizimining asosini yarataylik.
Biz qanday savolga javob berishga harakat qilyapmiz?
Bizning filmlar maʼlumotlar toʻplamini hisobga olsak, kino soʻroviga eng oʻxshash 5 ta film qaysi?
Filmlar haqidagi ma'lumotlarni yig'ing
Agar biz Netflix, Hulu yoki IMDb-da ishlagan bo'lsak, ularning ma'lumotlar omboridan ma'lumotlarni olishimiz mumkin edi. Biz ushbu kompaniyalarning hech birida ishlamaganimiz uchun ma'lumotlarimizni boshqa vositalar orqali olishimiz kerak. Biz UCI Machine Learning Repository, IMDb ma'lumotlar to'plamidagi ba'zi filmlar ma'lumotlaridan foydalanishimiz yoki o'zimiznikini yaratishimiz mumkin.
Ma'lumotlarni o'rganing, tozalang va tayyorlang
Ma'lumotlarimizni qayerdan olgan bo'lishimizdan qat'iy nazar, KNN algoritmiga tayyorlash uchun tuzatishimiz kerak bo'lgan ba'zi xatolar bo'lishi mumkin. Misol uchun, ma'lumotlar algoritm kutgan formatda bo'lmasligi mumkin yoki biz uni algoritmga kiritishdan oldin ma'lumotlarni to'ldirishimiz yoki olib tashlashimiz kerak bo'lgan etishmayotgan qiymatlar bo'lishi mumkin.
Yuqoridagi KNN dasturimiz tuzilgan ma'lumotlarga tayanadi. U jadval shaklida bo'lishi kerak. Bundan tashqari, dastur barcha ustunlar raqamli ma'lumotlarni o'z ichiga oladi va ma'lumotlarimizning oxirgi ustunida biz ba'zi funktsiyalarni bajarishimiz mumkin bo'lgan teglar mavjud deb taxmin qiladi. Shunday qilib, biz ma'lumotlarimizni qayerdan olsak ham, uni ushbu cheklovlarga moslashtirishimiz kerak.

Download 41,27 Kb.

Do'stlaringiz bilan baham:
1   2




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish