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]}")