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

مقدمه
تصور کنید که شما به تازگی به یک شهر جدید نقل مکان کرده اید و به دنبال یک رستوران خوب هستید. شما در مورد منطقه چیز زیادی نمی دانید ، بنابراین از سه نفر از افراد محلی توصیه می کنید.
• دو پیشنهاد رستوران A.
• یکی از رستوران های B را پیشنهاد می کند
از آنجا که اکثریت رای از رستوران A استفاده می کنند ، تصمیم می گیرید در آنجا غذا بخورید.
این فرآیند تصمیم گیری ساده آینه می دهد که چگونه الگوریتم K-Nearest همسایگان (K-NN) در یادگیری ماشین کار می کند! در این پست ، ما به اعماق K-NN شیرجه می زنیم ، مکانیسم کار آن را درک می کنیم و آن را در پایتون با یک مثال عملی پیاده سازی خواهیم کرد.
همسایگان K-Nearest (K-NN) چیست؟
K-NN یک الگوریتم یادگیری ماشین نظارت شده برای طبقه بندی و رگرسیون است. این یک نقطه داده را بر اساس اکثریت رای نزدیکترین همسایگان خود طبقه بندی می کند.
چگونه K-nn کار می کند:
- تعداد همسایگان (k) را انتخاب کنید.
- فاصله بین نقطه داده جدید و سایر موارد موجود در مجموعه داده را محاسبه کنید.
- نزدیکترین امتیاز K را انتخاب کنید.
- برای تعیین کلاس از نقطه داده جدید ، رای اکثریت را انجام دهید. آن را به عنوان یافتن موارد مشابه در یک مجموعه داده و پیش بینی های مبتنی بر آن شباهت ها در نظر بگیرید.
اجرای 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 در طبقه بندی تصویر یا پیش بینی سری زمانی کار می کند؟ در نظرات به من اطلاع دهید!