Sobes.tech
Middle

რა არის k-ახლოს მეზობლების ალგორითმი (kNN)?

sobes.tech AI

პასუხი AI-სგან

K-კClosest მეზობლის ალგორითმი (kNN) არის მარტივი, პარამეტრიანი მანქანათმცოდნეობის ალგორითმი, რომელიც გამოიყენება როგორც კლასიფიკაციაში, ასევე რეგრესიაში.

მნიშვნელობა: ახალი ობიექტი (მონაცემთა წერტილი) მიეკუთვნება კლასს, რომელიც ყველაზე მეტად წარმოდგენილია მისი მახლობლად მდებარე k ობიექტებს შორის სასწავლო ნაკრებში. რეგრესიისთვის პროგნოზირებს მნიშვნელობას როგორც k მახლობლად მდებარე ობიექტების საშუალო/მედიანული მნიშვნელობა.

ძირითადი ნაბიჯები კლასიფიკაციაში:

  1. K-ის არჩევა: განსაზღვრეთ მახლობლად მდებარე მეზობელთა რაოდენობა (K).
  2. მოსახლეობის გამოთვლა: გამოთვალეთ მანძილი ახალი ობიექტსა და თითოეულ ობიექტს შორის სასწავლო ნაკრებში (მაგ., ევკლიდური მანძილი).
  3. K მახლობლად მდებარე ობიექტების მოძიება: ობიექტები დაალაგეთ მანძილის მიხედვით და აირჩიეთ K მახლობლად მდებარე.
  4. ხმების მიცემა: ახალი ობიექტის კლასის განსაზღვრა 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]}")