برنامه نویسی

تسلط بر همسایگان K-Nearest (K-NN) با یک مثال عملی پایتون

مقدمه
تصور کنید که شما به تازگی به یک شهر جدید نقل مکان کرده اید و به دنبال یک رستوران خوب هستید. شما در مورد منطقه چیز زیادی نمی دانید ، بنابراین از سه نفر از افراد محلی توصیه می کنید.
• دو پیشنهاد رستوران A.
• یکی از رستوران های B را پیشنهاد می کند
از آنجا که اکثریت رای از رستوران A استفاده می کنند ، تصمیم می گیرید در آنجا غذا بخورید.
این فرآیند تصمیم گیری ساده آینه می دهد که چگونه الگوریتم K-Nearest همسایگان (K-NN) در یادگیری ماشین کار می کند! در این پست ، ما به اعماق K-NN شیرجه می زنیم ، مکانیسم کار آن را درک می کنیم و آن را در پایتون با یک مثال عملی پیاده سازی خواهیم کرد.

شرح تصویر

همسایگان K-Nearest (K-NN) چیست؟
K-NN یک الگوریتم یادگیری ماشین نظارت شده برای طبقه بندی و رگرسیون است. این یک نقطه داده را بر اساس اکثریت رای نزدیکترین همسایگان خود طبقه بندی می کند.

چگونه K-nn کار می کند:

  1. تعداد همسایگان (k) را انتخاب کنید.
  2. فاصله بین نقطه داده جدید و سایر موارد موجود در مجموعه داده را محاسبه کنید.
  3. نزدیکترین امتیاز K را انتخاب کنید.
  4. برای تعیین کلاس از نقطه داده جدید ، رای اکثریت را انجام دهید. آن را به عنوان یافتن موارد مشابه در یک مجموعه داده و پیش بینی های مبتنی بر آن شباهت ها در نظر بگیرید.

اجرای K-NN در پایتون

بیایید با استفاده از یک مجموعه داده ، با استفاده از یک مجموعه داده که پیش بینی می کنیم یک محصول بر اساس سن و حقوق تخمین زده شده باشد ، یک مرحله به مرحله را طی کنیم.

مرحله 1: واردات کتابخانه های لازم

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 2: یک مجموعه داده نمونه ایجاد کنید

data = {
    'Age': [22, 25, 47, 52, 46, 56, 55, 60, 62, 61, 18, 24, 33, 40, 35],
    'EstimatedSalary': [15000, 29000, 43000, 76000, 50000, 83000, 78000, 97000, 104000, 98000, 12000, 27000, 37000, 58000, 41000],
    'Purchased': [0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0]  # 1: Purchased, 0: Not Purchased
}
df = pd.DataFrame(data)
print(df.head())
Step 3: Data Preprocessing
X = df[['Age', 'EstimatedSalary']]
y = df['Purchased']
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

# تقسیم به مجموعه های آموزش و آزمون

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

# مقیاس بندی ویژگی (عادی سازی)

scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
Step 4: Train the k-NN Model
k = 3
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(X_train, y_train)
Step 5: Make Predictions and Evaluate the Model
y_pred = knn.predict(X_test)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

# ارزیابی عملکرد

accuracy = accuracy_score(y_test, y_pred)
conf_matrix = confusion_matrix(y_test, y_pred)
report = classification_report(y_test, y_pred)

print(f"Accuracy: {accuracy:.2f}")
print("Confusion Matrix:\n", conf_matrix)
print("Classification Report:\n", report)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

بینش های کلیدی
1. انتخاب مقدار k درست:

  • – K کوچک (به عنوان مثال ، 1 یا 3) باعث می شود مدل نسبت به نویز حساس باشد.
  • – K بزرگ (به عنوان مثال ، 10 یا 15) سر و صدا را صاف می کند اما ممکن است الگوهای خود را از دست بدهد.
  • برای تعیین بهترین k از اعتبار سنجی متقاطع استفاده کنید.
    2. اهمیت مقیاس بندی ویژگی:

  • K-NN به محاسبات مسافت متکی است ، بنابراین عادی سازی ویژگی ها تضمین می کند که آنها به طور مساوی کمک می کنند.
    3 بهترین برای مجموعه داده های کوچک:

  • K-NN برای مجموعه داده هایی با ویژگی های کمتری عالی است اما از نظر محاسباتی برای مجموعه داده های بزرگ گران است.

افکار نهایی
K-Nearest همسایگان (K-NN) یک الگوریتم قدرتمند و در عین حال ساده است که می تواند برای مشکلات مختلف طبقه بندی اعمال شود. در حالی که در مجموعه داده های کوچکتر عملکرد خوبی دارد ، مهم است که هزینه های محاسباتی را هنگام افزایش در نظر بگیرید.
آیا می خواهید بررسی کنید که چگونه K-NN در طبقه بندی تصویر یا پیش بینی سری زمانی کار می کند؟ در نظرات به من اطلاع دهید!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا