Middle
რა არის k-ახლოს მეზობლების ალგორითმი (kNN)?
sobes.tech AI
პასუხი AI-სგან
K-კClosest მეზობლის ალგორითმი (kNN) არის მარტივი, პარამეტრიანი მანქანათმცოდნეობის ალგორითმი, რომელიც გამოიყენება როგორც კლასიფიკაციაში, ასევე რეგრესიაში.
მნიშვნელობა: ახალი ობიექტი (მონაცემთა წერტილი) მიეკუთვნება კლასს, რომელიც ყველაზე მეტად წარმოდგენილია მისი მახლობლად მდებარე k ობიექტებს შორის სასწავლო ნაკრებში. რეგრესიისთვის პროგნოზირებს მნიშვნელობას როგორც k მახლობლად მდებარე ობიექტების საშუალო/მედიანული მნიშვნელობა.
ძირითადი ნაბიჯები კლასიფიკაციაში:
- K-ის არჩევა: განსაზღვრეთ მახლობლად მდებარე მეზობელთა რაოდენობა (K).
- მოსახლეობის გამოთვლა: გამოთვალეთ მანძილი ახალი ობიექტსა და თითოეულ ობიექტს შორის სასწავლო ნაკრებში (მაგ., ევკლიდური მანძილი).
- K მახლობლად მდებარე ობიექტების მოძიება: ობიექტები დაალაგეთ მანძილის მიხედვით და აირჩიეთ K მახლობლად მდებარე.
- ხმების მიცემა: ახალი ობიექტის კლასის განსაზღვრა K მახლობლად მდებარე ობიექტების უმრავლესობის ხმის მიცემით.
უპირატესობები:
- მარტივი განხორციელება და გაგება.
- არ საჭიროებს მოდელის სწავლას (სულელური ალგორითმი).
- ადაპტირებს ახალი მონაცემების გამოჩენისას.
მკაცრობები:
- გამოთვლითი ხარჯი დიდია დიდი მონაცემების მოცულობის დროს (პროგნოზირების ეტაპზე).
- K-ის არჩევა და მანძილის მეტრიკა კრიტიკულია.
- მგრძნობიარეა მონაცემთა სიგრძის და "მეტრიკის შიშის" მიმართ.
- პირდაპირი მუშაობა კატეგორიული ნიშნებებთან არ შეუძლია (კოდირება სჭირდება).
გამოყენება:
- ნიმუშების ამოცნობა.
- რეკომენდაციული სისტემები.
- სამედიცინო დიაგნოსტიკა.
- დოკუმენტების მსგავსების ძიება.
# KNN-ის მაგალითი scikit-learn-ის გამოყენებით
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import numpy as np
# დემონსტრაციის მონაცემების შექმნა
X = np.array([[1, 2], [1.5, 1.8], [5, 8], [8, 8], [1, 0.6], [9, 11]])
y = np.array([0, 0, 1, 1, 0, 1]) # კლასი
# მონაცემების გაყოფა სასწავლო და ტესტურ ნაკრებად
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# მოდელის შექმნა და სწავლება
# K=3, ანუ 3 მახლობელი
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
# პროგნოზირება ტესტურ ნაკრებზე
y_pred = knn.predict(X_test)
# სიზუსტის შეფასება
accuracy = accuracy_score(y_test, y_pred)
# print(f"მოდელის სიზუსტე: {accuracy}")
# ახალი ობიექტის პროგნოზირება
new_point = np.array([[3, 5]])
predicted_class = knn.predict(new_point)
# print(f"ახალი წერტილის პროგნოზირებული კლასი: {predicted_class[0]}")