🔥 پروژه کامل: تشخیص بیماری قلبی با جنگل تصادفی (Random Forest) 🔥
💡 هدف پروژه:
توی این پروژه، قراره یه مدل جنگل تصادفی (Random Forest) رو از صفر پیادهسازی کنیم و ازش برای پیشبینی بیماری قلبی استفاده کنیم.
ما از یه دیتاست واقعی Heart Disease Dataset استفاده میکنیم که شامل اطلاعات بیماران هست و باید تشخیص بدیم که فرد در خطر بیماری قلبی قرار داره یا نه! 🏥❤️
📌 ۱. نصب کتابخانههای موردنیاز
📌 اول از همه باید کتابخانههای لازم رو نصب کنیم:
📌 ۲. دریافت دیتاست و بررسی اولیه
🔍 دیتاست ما شامل اطلاعات مختلفی مثل سن، جنسیت، فشار خون، کلسترول و ... هست.
برای شروع، دیتاست رو میگیریم و یه نگاهی بهش میندازیم:
📌 نکته: اگر دیتای خالی داشتیم، باید قبل از مدلسازی اونها رو مدیریت کنیم.
📌 ۳. پردازش دادهها (Data Preprocessing)
✔️ تبدیل دادههای متنی به عددی: بعضی ستونها ممکنه مقدار متنی داشته باشن که باید اونها رو عددی کنیم.
✔️ نرمالسازی دادهها: دادهها باید روی یه مقیاس استاندارد باشن تا مدل بهتر یاد بگیره.
✔️ تقسیم دادهها: دیتاست رو به دو بخش Train و Test تقسیم میکنیم.
📌 ۴. ساخت و آموزش مدل Random Forest
حالا مدل جنگل تصادفی رو میسازیم و آموزش میدیم! 🚀🌳
📌 ۵. تحلیل نتایج و ارزیابی مدل
حالا بریم ببینیم مدل ما چقدر دقیق و قابل اعتماد هست:
✅ اگر مدل دقت بالایی داشته باشه، یعنی خوب کار میکنه و میتونیم ازش برای تشخیص بیماری استفاده کنیم! 🚀
📌 ۶. تست مدل با ورودی جدید
حالا یه نمونه داده جدید میسازیم و تست میکنیم که مدل بیماری قلبی رو درست پیشبینی میکنه یا نه:
📌 ۷. جمعبندی پروژه
✔️ یاد گرفتیم که چطور با دادههای واقعی پزشکی کار کنیم.
✔️ با استفاده از جنگل تصادفی (Random Forest) یه مدل قوی برای تشخیص بیماری قلبی ساختیم.
✔️ مدل رو ارزیابی کردیم و دقتش رو بررسی کردیم.
✔️ در نهایت، یه نمونه داده جدید رو تست کردیم تا ببینیم مدل چطور کار میکنه.
🎯 این یه نمونه کاربردی و واقعی از الگوریتمهای یادگیری ماشین بود! 🚀
💡 هدف پروژه:
توی این پروژه، قراره یه مدل جنگل تصادفی (Random Forest) رو از صفر پیادهسازی کنیم و ازش برای پیشبینی بیماری قلبی استفاده کنیم.
ما از یه دیتاست واقعی Heart Disease Dataset استفاده میکنیم که شامل اطلاعات بیماران هست و باید تشخیص بدیم که فرد در خطر بیماری قلبی قرار داره یا نه! 🏥❤️
📌 ۱. نصب کتابخانههای موردنیاز
📌 اول از همه باید کتابخانههای لازم رو نصب کنیم:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report
from sklearn.ensemble import RandomForestClassifier
📌 ۲. دریافت دیتاست و بررسی اولیه
🔍 دیتاست ما شامل اطلاعات مختلفی مثل سن، جنسیت، فشار خون، کلسترول و ... هست.
برای شروع، دیتاست رو میگیریم و یه نگاهی بهش میندازیم:
# دانلود دیتاست (اگر از Kaggle یا Google Colab استفاده میکنید)
url = "https://raw.githubusercontent.com/ahmedbesbes/heart-disease-prediction/master/dataset.csv"
df = pd.read_csv(url)
# نمایش ۵ ردیف اول دیتاست
print(df.head())
# بررسی اطلاعات کلی دیتاست
print(df.info())
# بررسی میزان دادههای خالی
print(df.isnull().sum())
📌 نکته: اگر دیتای خالی داشتیم، باید قبل از مدلسازی اونها رو مدیریت کنیم.
📌 ۳. پردازش دادهها (Data Preprocessing)
✔️ تبدیل دادههای متنی به عددی: بعضی ستونها ممکنه مقدار متنی داشته باشن که باید اونها رو عددی کنیم.
✔️ نرمالسازی دادهها: دادهها باید روی یه مقیاس استاندارد باشن تا مدل بهتر یاد بگیره.
✔️ تقسیم دادهها: دیتاست رو به دو بخش Train و Test تقسیم میکنیم.
# تبدیل مقادیر متنی به عددی (در صورت وجود)
df = pd.get_dummies(df, drop_first=True)
# جدا کردن ویژگیها و برچسبها
X = df.drop(columns=['target']) # ویژگیها (Attributes)
y = df['target'] # برچسب (Class Label)
# تقسیم دیتاست به ۸۰٪ آموزش و ۲۰٪ تست
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# نمایش تعداد نمونهها
print("تعداد نمونههای آموزش:", X_train.shape[0])
print("تعداد نمونههای تست:", X_test.shape[0])
📌 ۴. ساخت و آموزش مدل Random Forest
حالا مدل جنگل تصادفی رو میسازیم و آموزش میدیم! 🚀🌳
# ساخت مدل جنگل تصادفی
model = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=42)
# آموزش مدل
model.fit(X_train, y_train)
# پیشبینی روی دادههای تست
y_pred = model.predict(X_test)
# محاسبه دقت مدل
accuracy = accuracy_score(y_test, y_pred)
print(f"🎯 دقت مدل: {accuracy * 100:.2f}%")
📌 ۵. تحلیل نتایج و ارزیابی مدل
حالا بریم ببینیم مدل ما چقدر دقیق و قابل اعتماد هست:
# نمایش گزارش کامل دستهبندی
print(classification_report(y_test, y_pred))
# رسم ماتریس سردرگمی
plt.figure(figsize=(6, 5))
sns.heatmap(pd.crosstab(y_test, y_pred), annot=True, fmt='d', cmap="Blues")
plt.xlabel("پیشبینی شده")
plt.ylabel("واقعی")
plt.title("📊 ماتریس سردرگمی")
plt.show()
✅ اگر مدل دقت بالایی داشته باشه، یعنی خوب کار میکنه و میتونیم ازش برای تشخیص بیماری استفاده کنیم! 🚀
📌 ۶. تست مدل با ورودی جدید
حالا یه نمونه داده جدید میسازیم و تست میکنیم که مدل بیماری قلبی رو درست پیشبینی میکنه یا نه:
# یک نمونه بیمار جدید (به جای اعداد، مقادیر مناسب دیتاست رو قرار بدید)
new_patient = np.array([[63, 1, 3, 145, 233, 1, 0, 150, 0, 2.3, 0, 0, 1]])
# پیشبینی
prediction = model.predict(new_patient)
print("نتیجه مدل برای بیمار جدید:", "⚠️ بیماری قلبی دارد" if prediction[0] == 1 else "✅ سالم است")
📌 ۷. جمعبندی پروژه
✔️ یاد گرفتیم که چطور با دادههای واقعی پزشکی کار کنیم.
✔️ با استفاده از جنگل تصادفی (Random Forest) یه مدل قوی برای تشخیص بیماری قلبی ساختیم.
✔️ مدل رو ارزیابی کردیم و دقتش رو بررسی کردیم.
✔️ در نهایت، یه نمونه داده جدید رو تست کردیم تا ببینیم مدل چطور کار میکنه.
🎯 این یه نمونه کاربردی و واقعی از الگوریتمهای یادگیری ماشین بود! 🚀
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
👍1🕊1
💡 چالش برای شما:
🔹 میتونید تعداد درختها (n_estimators) رو تغییر بدید و ببینید چقدر روی دقت مدل تاثیر داره؟
🔹 مدل رو با الگوریتمهای دیگه مثل SVM یا KNN مقایسه کنید!
🔹 تست کنید ببینید کدوم ویژگیها (Feature Importance) مهمترین تاثیر رو روی نتیجه دارند!
لینک کانال ما
🔹 میتونید تعداد درختها (n_estimators) رو تغییر بدید و ببینید چقدر روی دقت مدل تاثیر داره؟
🔹 مدل رو با الگوریتمهای دیگه مثل SVM یا KNN مقایسه کنید!
🔹 تست کنید ببینید کدوم ویژگیها (Feature Importance) مهمترین تاثیر رو روی نتیجه دارند!
لینک کانال ما
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
🍾1
🔥 اسکریپت کامل پیادهسازی Random Forest با دیتابیس داخلی 🔥
💡 این اسکریپت یک دیتاست پیشفرض (ساختگی) را درون خود دارد و از آن برای آموزش و تست مدل جنگل تصادفی استفاده میکند.
📌 ویژگیهای اسکریپت:
✅ دیتاست بهصورت داخلی در کد تعریف شده است.
✅ از کتابخانه sklearn برای پیادهسازی Random Forest استفاده شده است.
✅ دادهها به Train/Test تقسیم شده و مدل آموزش داده میشود.
✅ دقت مدل محاسبه شده و یک نمونه داده جدید تست میشود.
📌 اسکریپت کامل:
📌 توضیحات کد:
✔️ یک دیتاست ساختگی ایجاد شده که شامل اطلاعات بیماران مثل سن، فشار خون، کلسترول و قند خون است.
✔️ دادهها به دو بخش آموزشی و تست تقسیم شدهاند.
✔️ مدل جنگل تصادفی (Random Forest) ساخته و آموزش داده شده است.
✔️ دقت مدل محاسبه شده و یک گزارش دستهبندی نمایش داده شده است.
✔️ ماتریس سردرگمی برای نمایش عملکرد مدل رسم شده است.
✔️ یک نمونه داده جدید تست شده و پیشبینی انجام شده است.
✅ این اسکریپت آماده اجراست و هیچ دیتابیس خارجی نیاز ندارد! 🚀🔥
💡 این اسکریپت یک دیتاست پیشفرض (ساختگی) را درون خود دارد و از آن برای آموزش و تست مدل جنگل تصادفی استفاده میکند.
📌 ویژگیهای اسکریپت:
✅ دیتاست بهصورت داخلی در کد تعریف شده است.
✅ از کتابخانه sklearn برای پیادهسازی Random Forest استفاده شده است.
✅ دادهها به Train/Test تقسیم شده و مدل آموزش داده میشود.
✅ دقت مدل محاسبه شده و یک نمونه داده جدید تست میشود.
📌 اسکریپت کامل:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report
# 🚀 ۱. ایجاد دیتاست داخلی (ساختگی)
data = {
"سن": [25, 34, 45, 23, 42, 51, 60, 48, 37, 29, 41, 53, 39, 58, 30],
"فشار_خون": [120, 130, 140, 110, 135, 145, 150, 138, 132, 125, 136, 148, 128, 152, 122],
"کلسترول": [180, 190, 220, 160, 210, 230, 250, 240, 200, 185, 215, 245, 195, 260, 175],
"قند_خون": [0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0], # 0 = نرمال، 1 = بالا
"بیماری_قلبی": [0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0] # 0 = سالم، 1 = بیمار
}
# تبدیل دیتاست به DataFrame
df = pd.DataFrame(data)
# 🚀 ۲. آمادهسازی دادهها
X = df.drop(columns=["بیماری_قلبی"]) # ویژگیها (Feature)
y = df["بیماری_قلبی"] # برچسب (Label)
# تقسیم دادهها به آموزش (80٪) و تست (20٪)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 🚀 ۳. ساخت مدل جنگل تصادفی و آموزش آن
model = RandomForestClassifier(n_estimators=10, max_depth=5, random_state=42)
model.fit(X_train, y_train)
# 🚀 ۴. ارزیابی مدل
y_pred = model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"🎯 دقت مدل: {accuracy * 100:.2f}%")
print("\n📊 گزارش دستهبندی:\n", classification_report(y_test, y_pred))
# 🚀 ۵. رسم ماتریس سردرگمی
plt.figure(figsize=(5, 4))
sns.heatmap(pd.crosstab(y_test, y_pred), annot=True, fmt='d', cmap="Blues")
plt.xlabel("پیشبینی شده")
plt.ylabel("واقعی")
plt.title("📊 ماتریس سردرگمی")
plt.show()
# 🚀 ۶. تست مدل با یک نمونه جدید
new_patient = np.array([[50, 140, 220, 1]]) # مثال: فردی با فشار خون بالا و کلسترول زیاد
prediction = model.predict(new_patient)
print("🔍 نتیجه برای بیمار جدید:", "⚠️ بیمار است" if prediction[0] == 1 else "✅ سالم است")
📌 توضیحات کد:
✔️ یک دیتاست ساختگی ایجاد شده که شامل اطلاعات بیماران مثل سن، فشار خون، کلسترول و قند خون است.
✔️ دادهها به دو بخش آموزشی و تست تقسیم شدهاند.
✔️ مدل جنگل تصادفی (Random Forest) ساخته و آموزش داده شده است.
✔️ دقت مدل محاسبه شده و یک گزارش دستهبندی نمایش داده شده است.
✔️ ماتریس سردرگمی برای نمایش عملکرد مدل رسم شده است.
✔️ یک نمونه داده جدید تست شده و پیشبینی انجام شده است.
✅ این اسکریپت آماده اجراست و هیچ دیتابیس خارجی نیاز ندارد! 🚀🔥
👍3❤🔥1
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn import tree
# تولید دیتاست مصنوعی برای بیماری قلبی
# این دیتاست شامل 1000 نمونه و 20 ویژگی است، از جمله 2 ویژگی مهم
X, y = make_classification(n_samples=1000, n_features=20, n_informative=5, n_redundant=10, random_state=42)
# تقسیم دادهها به مجموعههای آموزش و آزمایش
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# ایجاد مدل درخت تصمیم
clf = DecisionTreeClassifier(random_state=42)
clf.fit(X_train, y_train)
# ارزیابی مدل
print("Accuracy on test set:", clf.score(X_test, y_test))
# رسم درخت
fig, ax = plt.subplots(figsize=(20, 10)) # اندازهی دلخواه برای رسم
tree.plot_tree(clf, filled=True, ax=ax)
# نمایش درخت
plt.show()
گفتم شاید براتون جالب باشه این میاد و بعد اجرای یک درخت اونو رسم میکنه
اینطوری میتونید نحوه عملکرد درخت رو گرافیکی ببینید نه فقط نتیجه توی ترمینال
(Chat gpt)
👍5🔥1
پارت ۱: مقدمه و توضیحات کلی درباره الگوریتم KNN 🎯🔍
۱.۱ معرفی الگوریتم KNN 🤖📊
K-Nearest Neighbors (KNN) یکی از سادهترین و در عین حال قدرتمندترین الگوریتمهای یادگیری ماشین در دسته طبقهبندی (Classification) و رگرسیون (Regression) است. این الگوریتم بدون نیاز به یادگیری پیچیده، فقط با بررسی همسایههای نزدیک، دادههای جدید را طبقهبندی میکند! 🚀
💡 KNN چگونه کار میکند؟
✅ مرحله ۱: یک داده جدید دریافت میشود که باید برچسبگذاری شود.
✅ مرحله ۲: فاصله آن داده با همه نقاط دادههای آموزشی محاسبه میشود. 📏
✅ مرحله ۳: K عدد از نزدیکترین همسایهها انتخاب میشوند. 🏡
✅ مرحله ۴: در طبقهبندی (Classification)، رأیگیری انجام شده و کلاسی که بیشترین رأی را دارد، انتخاب میشود. 📊✅
✅ مرحله ۵: در رگرسیون (Regression)، میانگین مقادیر همسایهها محاسبه شده و مقدار نهایی پیشبینی میشود. 🔢🔍
✳ نکته مهم: KNN به هیچ مدل پیچیدهای نیاز ندارد و فقط دادههای قبلی را برای تصمیمگیری بررسی میکند، به همین دلیل به آن یادگیری بر پایه نمونه (Instance-Based Learning) هم گفته میشود. 🔄
۱.۲ KNN در مسائل مولتیکلاس کلاسیفیکیشن 🎯🎨
KNN یکی از بهترین گزینهها برای مسائل طبقهبندی چندکلاسه (Multi-Class Classification) است! 💡 در این نوع مسائل، مدل باید دادهها را به بیش از دو کلاس مختلف تخصیص دهد.
🔹 مثال واقعی: فرض کنید یک مدل بخواهد نوع یک گل را بر اساس ویژگیهای آن پیشبینی کند. در اینجا سه کلاس داریم:
🌸 Setosa
🌺 Versicolor
🌻 Virginica
اگر یک گل جدید با ویژگیهای ناشناخته داده شود، KNN بررسی میکند که نزدیکترین گلهای مشابه از چه نوعی هستند و بر اساس اکثریت آراء، کلاس مناسب را انتخاب میکند. 🌱🌿
۱.۳ مزایا و معایب الگوریتم KNN ⚖️
🔷 مزایای KNN ✅
✅ سادگی و شهودی بودن – این الگوریتم بسیار ساده و قابل فهم است. 📚
✅ دقت بالا در بسیاری از مسائل – در صورتی که مقدار K مناسب انتخاب شود، KNN عملکرد بسیار خوبی دارد. 🎯
✅ عدم نیاز به یادگیری پیچیده – نیازی به آموزش مدل ندارد و فقط بر اساس دادههای موجود پیشبینی میکند. 🔄
🔶 معایب KNN ❌
❌ محاسبات سنگین برای دادههای حجیم – در صورتی که حجم دادههای آموزشی بزرگ باشد، پیدا کردن K همسایه نزدیکتر میتواند زمانبر باشد. ⏳🔍
❌ حساسیت به دادههای نامرتبط – در صورت وجود ویژگیهای غیرضروری، عملکرد مدل کاهش پیدا میکند. 🔻
۱.۴ چرا KNN را انتخاب کنیم؟ 🤔💡
📌 اگر به دنبال یک الگوریتم ساده، قدرتمند و مؤثر برای طبقهبندی چندکلاسه هستید، KNN یک انتخاب عالی است! 🎯
📌 این الگوریتم به راحتی در مسائل واقعی مثل تشخیص بیماریها، فیلتر کردن ایمیلهای اسپم، پیشبینی نوع محصول و حتی تشخیص چهره! استفاده میشود. 📊🔍
جمعبندی پارت ۱:
✅ KNN یک الگوریتم مبتنی بر شباهت است که دادههای جدید را بر اساس K همسایه نزدیک آن دستهبندی میکند.
✅ این الگوریتم برای مسائل طبقهبندی چندکلاسه بسیار مؤثر است و در بسیاری از مسائل دنیای واقعی کاربرد دارد.
✅ انتخاب مقدار K بسیار مهم است، زیرا مقدار نامناسب میتواند عملکرد مدل را تحت تأثیر قرار دهد.
[لینک کانال ما]
🔥 در پارت بعدی، نحوه آمادهسازی دادهها و پیشپردازش آنها را بررسی خواهیم کرد! 🔥
📌 منتظر پارت ۲ باشید... 🚀✨
#یادگیری_ماشین 🤖 #KNN 📊 #هوش_مصنوعی #طبقه_بندی #MachineLearning #AI #کلاسیفیکیشن 🎯
۱.۱ معرفی الگوریتم KNN 🤖📊
K-Nearest Neighbors (KNN) یکی از سادهترین و در عین حال قدرتمندترین الگوریتمهای یادگیری ماشین در دسته طبقهبندی (Classification) و رگرسیون (Regression) است. این الگوریتم بدون نیاز به یادگیری پیچیده، فقط با بررسی همسایههای نزدیک، دادههای جدید را طبقهبندی میکند! 🚀
💡 KNN چگونه کار میکند؟
✅ مرحله ۱: یک داده جدید دریافت میشود که باید برچسبگذاری شود.
✅ مرحله ۲: فاصله آن داده با همه نقاط دادههای آموزشی محاسبه میشود. 📏
✅ مرحله ۳: K عدد از نزدیکترین همسایهها انتخاب میشوند. 🏡
✅ مرحله ۴: در طبقهبندی (Classification)، رأیگیری انجام شده و کلاسی که بیشترین رأی را دارد، انتخاب میشود. 📊✅
✅ مرحله ۵: در رگرسیون (Regression)، میانگین مقادیر همسایهها محاسبه شده و مقدار نهایی پیشبینی میشود. 🔢🔍
✳ نکته مهم: KNN به هیچ مدل پیچیدهای نیاز ندارد و فقط دادههای قبلی را برای تصمیمگیری بررسی میکند، به همین دلیل به آن یادگیری بر پایه نمونه (Instance-Based Learning) هم گفته میشود. 🔄
۱.۲ KNN در مسائل مولتیکلاس کلاسیفیکیشن 🎯🎨
KNN یکی از بهترین گزینهها برای مسائل طبقهبندی چندکلاسه (Multi-Class Classification) است! 💡 در این نوع مسائل، مدل باید دادهها را به بیش از دو کلاس مختلف تخصیص دهد.
🔹 مثال واقعی: فرض کنید یک مدل بخواهد نوع یک گل را بر اساس ویژگیهای آن پیشبینی کند. در اینجا سه کلاس داریم:
🌸 Setosa
🌺 Versicolor
🌻 Virginica
اگر یک گل جدید با ویژگیهای ناشناخته داده شود، KNN بررسی میکند که نزدیکترین گلهای مشابه از چه نوعی هستند و بر اساس اکثریت آراء، کلاس مناسب را انتخاب میکند. 🌱🌿
۱.۳ مزایا و معایب الگوریتم KNN ⚖️
🔷 مزایای KNN ✅
✅ سادگی و شهودی بودن – این الگوریتم بسیار ساده و قابل فهم است. 📚
✅ دقت بالا در بسیاری از مسائل – در صورتی که مقدار K مناسب انتخاب شود، KNN عملکرد بسیار خوبی دارد. 🎯
✅ عدم نیاز به یادگیری پیچیده – نیازی به آموزش مدل ندارد و فقط بر اساس دادههای موجود پیشبینی میکند. 🔄
🔶 معایب KNN ❌
❌ محاسبات سنگین برای دادههای حجیم – در صورتی که حجم دادههای آموزشی بزرگ باشد، پیدا کردن K همسایه نزدیکتر میتواند زمانبر باشد. ⏳🔍
❌ حساسیت به دادههای نامرتبط – در صورت وجود ویژگیهای غیرضروری، عملکرد مدل کاهش پیدا میکند. 🔻
۱.۴ چرا KNN را انتخاب کنیم؟ 🤔💡
📌 اگر به دنبال یک الگوریتم ساده، قدرتمند و مؤثر برای طبقهبندی چندکلاسه هستید، KNN یک انتخاب عالی است! 🎯
📌 این الگوریتم به راحتی در مسائل واقعی مثل تشخیص بیماریها، فیلتر کردن ایمیلهای اسپم، پیشبینی نوع محصول و حتی تشخیص چهره! استفاده میشود. 📊🔍
جمعبندی پارت ۱:
✅ KNN یک الگوریتم مبتنی بر شباهت است که دادههای جدید را بر اساس K همسایه نزدیک آن دستهبندی میکند.
✅ این الگوریتم برای مسائل طبقهبندی چندکلاسه بسیار مؤثر است و در بسیاری از مسائل دنیای واقعی کاربرد دارد.
✅ انتخاب مقدار K بسیار مهم است، زیرا مقدار نامناسب میتواند عملکرد مدل را تحت تأثیر قرار دهد.
[لینک کانال ما]
🔥 در پارت بعدی، نحوه آمادهسازی دادهها و پیشپردازش آنها را بررسی خواهیم کرد! 🔥
📌 منتظر پارت ۲ باشید... 🚀✨
#یادگیری_ماشین 🤖 #KNN 📊 #هوش_مصنوعی #طبقه_بندی #MachineLearning #AI #کلاسیفیکیشن 🎯
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
پارت ۲: آمادهسازی دادهها و پیشپردازش در KNN 🔍📊
۲.۱ چرا پیشپردازش دادهها در KNN مهم است؟ 🤔⚙️
الگوریتم KNN کاملاً بر اساس محاسبه فاصله بین نقاط کار میکند، پس دادههای نامرتب یا ناسازگار میتوانند روی دقت مدل تأثیر منفی بگذارند. 😱 به همین دلیل، قبل از اجرای مدل، باید دادهها را پیشپردازش (Preprocessing) کنیم.
✅ چرا پیشپردازش مهم است؟
🔹 ویژگیهای نامربوط میتوانند باعث شوند که KNN تصمیم اشتباهی بگیرد. ❌
🔹 ویژگیهایی که مقیاس متفاوتی دارند ممکن است مدل را تحت تأثیر قرار دهند. مثلاً اگر یک ویژگی در مقیاس 0 تا 1 و ویژگی دیگر در مقیاس 1000 تا 100000 باشد، ویژگی بزرگتر اهمیت بیشتری خواهد داشت که ممکن است نادرست باشد! 😵📏
🔹 دادههای پرت (Outliers) ممکن است عملکرد KNN را مختل کنند. ⚠️
پس حالا بریم سراغ مراحل آمادهسازی دادهها! 🚀
۲.۲ مراحل پیشپردازش دادهها برای KNN 📊🔧
💡 ۱. بارگذاری دیتاست 📥
اولین قدم، بارگذاری مجموعه داده (Dataset) است. در اینجا از مجموعه داده Iris استفاده میکنیم که اطلاعات مربوط به سه نوع گل مختلف را دارد. 🌸🌺🌻
📌 این دیتاست شامل ۴ ویژگی است:
🔹 طول کاسبرگ (sepal length)
🔹 عرض کاسبرگ (sepal width)
🔹 طول گلبرگ (petal length)
🔹 عرض گلبرگ (petal width)
🔹 و ۳ کلاس مختلف برای انواع گل که مقدار
💡 ۲. بررسی دادههای ناقص و حذف آنها ⚠️
قبل از ادامه، باید مطمئن شویم که دادههای گمشده (Missing Data) وجود ندارد. 🚨
✅ اگر دادهای گمشده باشد، میتوانیم آن را با مقدار میانگین جایگزین کنیم:
💡 ۳. نرمالسازی ویژگیها (Feature Scaling) 📏⚖️
الگوریتم KNN به شدت تحت تأثیر مقیاس دادهها قرار دارد. اگر بعضی از ویژگیها دارای دامنه اعداد بزرگتر باشند، مدل دچار مشکل خواهد شد. 😬 پس نیاز به نرمالسازی (Normalization) یا استانداردسازی (Standardization) داریم.
📌 دو روش رایج:
1️⃣ Min-Max Scaling (مقادیر را بین ۰ و ۱ قرار میدهد)
2️⃣ Standard Scaling (مقادیر را نرمال میکند که میانگین ۰ و انحراف معیار ۱ باشد)
✅ حالا همه ویژگیها در یک محدوده مشابه قرار دارند و KNN عملکرد بهتری خواهد داشت! 🎯
💡 ۴. تقسیم دادهها به مجموعه آموزش و تست 📊
حالا که دادهها آماده شدند، باید آنها را به دو بخش تقسیم کنیم:
✅ دادههای آموزش (Train Set): برای یادگیری مدل
✅ دادههای تست (Test Set): برای ارزیابی عملکرد مدل
✅ ۸۰٪ دادهها برای آموزش و ۲۰٪ برای تست مدل استفاده خواهند شد.
۲.۳ جمعبندی پارت ۲:
✅ در این پارت یاد گرفتیم که چرا پیشپردازش دادهها در KNN اهمیت دارد.
✅ مراحل اصلی پیشپردازش را انجام دادیم:
🔹 بارگذاری دیتاست
🔹 بررسی دادههای گمشده و جایگزینی آنها
🔹 نرمالسازی و استانداردسازی ویژگیها
🔹 تقسیم دادهها به مجموعه آموزش و تست
[لینک کانال ما]
🔥 در پارت بعدی، به سراغ پیادهسازی مدل KNN با استفاده از sklearn میرویم! 🔥
📌 منتظر پارت ۳ باشید... 🚀✨
#یادگیری_ماشین 🤖 #KNN 📊 #هوش_مصنوعی #طبقه_بندی #MachineLearning #AI #کلاسیفیکیشن 🎯
۲.۱ چرا پیشپردازش دادهها در KNN مهم است؟ 🤔⚙️
الگوریتم KNN کاملاً بر اساس محاسبه فاصله بین نقاط کار میکند، پس دادههای نامرتب یا ناسازگار میتوانند روی دقت مدل تأثیر منفی بگذارند. 😱 به همین دلیل، قبل از اجرای مدل، باید دادهها را پیشپردازش (Preprocessing) کنیم.
✅ چرا پیشپردازش مهم است؟
🔹 ویژگیهای نامربوط میتوانند باعث شوند که KNN تصمیم اشتباهی بگیرد. ❌
🔹 ویژگیهایی که مقیاس متفاوتی دارند ممکن است مدل را تحت تأثیر قرار دهند. مثلاً اگر یک ویژگی در مقیاس 0 تا 1 و ویژگی دیگر در مقیاس 1000 تا 100000 باشد، ویژگی بزرگتر اهمیت بیشتری خواهد داشت که ممکن است نادرست باشد! 😵📏
🔹 دادههای پرت (Outliers) ممکن است عملکرد KNN را مختل کنند. ⚠️
پس حالا بریم سراغ مراحل آمادهسازی دادهها! 🚀
۲.۲ مراحل پیشپردازش دادهها برای KNN 📊🔧
💡 ۱. بارگذاری دیتاست 📥
اولین قدم، بارگذاری مجموعه داده (Dataset) است. در اینجا از مجموعه داده Iris استفاده میکنیم که اطلاعات مربوط به سه نوع گل مختلف را دارد. 🌸🌺🌻
import pandas as pd
from sklearn.datasets import load_iris
# بارگذاری دیتاست
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['target'] = iris.target # اضافه کردن برچسبها (کلاسها)
# نمایش ۵ نمونه اول
print(df.head())
📌 این دیتاست شامل ۴ ویژگی است:
🔹 طول کاسبرگ (sepal length)
🔹 عرض کاسبرگ (sepal width)
🔹 طول گلبرگ (petal length)
🔹 عرض گلبرگ (petal width)
🔹 و ۳ کلاس مختلف برای انواع گل که مقدار
target
آنها ۰، ۱ و ۲ است. 💡 ۲. بررسی دادههای ناقص و حذف آنها ⚠️
قبل از ادامه، باید مطمئن شویم که دادههای گمشده (Missing Data) وجود ندارد. 🚨
print(df.isnull().sum()) # بررسی دادههای خالی
✅ اگر دادهای گمشده باشد، میتوانیم آن را با مقدار میانگین جایگزین کنیم:
df.fillna(df.mean(), inplace=True) # جایگزینی مقادیر گمشده با میانگین هر ستون
💡 ۳. نرمالسازی ویژگیها (Feature Scaling) 📏⚖️
الگوریتم KNN به شدت تحت تأثیر مقیاس دادهها قرار دارد. اگر بعضی از ویژگیها دارای دامنه اعداد بزرگتر باشند، مدل دچار مشکل خواهد شد. 😬 پس نیاز به نرمالسازی (Normalization) یا استانداردسازی (Standardization) داریم.
📌 دو روش رایج:
1️⃣ Min-Max Scaling (مقادیر را بین ۰ و ۱ قرار میدهد)
2️⃣ Standard Scaling (مقادیر را نرمال میکند که میانگین ۰ و انحراف معیار ۱ باشد)
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
df.iloc[:, :-1] = scaler.fit_transform(df.iloc[:, :-1]) # استانداردسازی ویژگیها
✅ حالا همه ویژگیها در یک محدوده مشابه قرار دارند و KNN عملکرد بهتری خواهد داشت! 🎯
💡 ۴. تقسیم دادهها به مجموعه آموزش و تست 📊
حالا که دادهها آماده شدند، باید آنها را به دو بخش تقسیم کنیم:
✅ دادههای آموزش (Train Set): برای یادگیری مدل
✅ دادههای تست (Test Set): برای ارزیابی عملکرد مدل
from sklearn.model_selection import train_test_split
X = df.iloc[:, :-1] # ویژگیها (Features)
y = df['target'] # برچسبها (Labels)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
print(f"تعداد نمونههای آموزش: {X_train.shape[0]}")
print(f"تعداد نمونههای تست: {X_test.shape[0]}")
✅ ۸۰٪ دادهها برای آموزش و ۲۰٪ برای تست مدل استفاده خواهند شد.
۲.۳ جمعبندی پارت ۲:
✅ در این پارت یاد گرفتیم که چرا پیشپردازش دادهها در KNN اهمیت دارد.
✅ مراحل اصلی پیشپردازش را انجام دادیم:
🔹 بارگذاری دیتاست
🔹 بررسی دادههای گمشده و جایگزینی آنها
🔹 نرمالسازی و استانداردسازی ویژگیها
🔹 تقسیم دادهها به مجموعه آموزش و تست
[لینک کانال ما]
🔥 در پارت بعدی، به سراغ پیادهسازی مدل KNN با استفاده از sklearn میرویم! 🔥
📌 منتظر پارت ۳ باشید... 🚀✨
#یادگیری_ماشین 🤖 #KNN 📊 #هوش_مصنوعی #طبقه_بندی #MachineLearning #AI #کلاسیفیکیشن 🎯
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
👍1
پارت ۳: پیادهسازی مدل KNN با sklearn
در این بخش، مدل KNN را با استفاده از کتابخانه scikit-learn پیادهسازی میکنیم و آن را روی مجموعه داده Iris آزمایش خواهیم کرد.
۱. دریافت دادهها و آمادهسازی آنها
۲. ساخت و آموزش مدل KNN
۳. ارزیابی مدل و محاسبه دقت
۴. پیشبینی یک نمونه جدید
جمعبندی
در این بخش:
۱. دادههای Iris را بارگذاری و پردازش کردیم
۲. مدل KNN را با
۳. مدل را ارزیابی کردیم و دقت آن را محاسبه کردیم
۴. یک نمونه جدید را به مدل دادیم و کلاس آن را پیشبینی کردیم
در پارت بعدی، روشهای بهینهسازی مدل KNN را بررسی خواهیم کرد.
در این بخش، مدل KNN را با استفاده از کتابخانه scikit-learn پیادهسازی میکنیم و آن را روی مجموعه داده Iris آزمایش خواهیم کرد.
۱. دریافت دادهها و آمادهسازی آنها
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# دریافت دیتاست Iris
iris = load_iris()
X, y = iris.data, iris.target
# تقسیم دادهها به مجموعه آموزش و تست (۸۰٪ آموزش، ۲۰٪ تست)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# نرمالسازی دادهها برای بهبود عملکرد KNN
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
۲. ساخت و آموزش مدل KNN
from sklearn.neighbors import KNeighborsClassifier
# مقدار K را مشخص میکنیم
k = 3
# مدل KNN را میسازیم و آموزش میدهیم
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(X_train, y_train)
print("مدل KNN آموزش داده شد!")
۳. ارزیابی مدل و محاسبه دقت
from sklearn.metrics import accuracy_score
# پیشبینی دادههای تست
y_pred = knn.predict(X_test)
# محاسبه دقت مدل
accuracy = accuracy_score(y_test, y_pred)
print(f"دقت مدل: {accuracy:.2f}")
۴. پیشبینی یک نمونه جدید
import numpy as np
# یک نمونه جدید برای پیشبینی
new_sample = np.array([[5.1, 3.5, 1.4, 0.2]]) # ویژگیهای گل جدید
new_sample = scaler.transform(new_sample) # نرمالسازی نمونه
# انجام پیشبینی
predicted_class = knn.predict(new_sample)[0]
# نمایش نتیجه
print(f"مدل پیشبینی کرد که این گل از کلاس: {iris.target_names[predicted_class]} است")
جمعبندی
در این بخش:
۱. دادههای Iris را بارگذاری و پردازش کردیم
۲. مدل KNN را با
sklearn
پیادهسازی کردیم ۳. مدل را ارزیابی کردیم و دقت آن را محاسبه کردیم
۴. یک نمونه جدید را به مدل دادیم و کلاس آن را پیشبینی کردیم
در پارت بعدی، روشهای بهینهسازی مدل KNN را بررسی خواهیم کرد.
👍1
پارت ۴: بهینهسازی مدل KNN و انتخاب بهترین مقدار K 🎯🔧
۴.۱ چرا مقدار K مهم است؟ 🤔
مقدار K (تعداد همسایههای نزدیک) تأثیر زیادی روی دقت مدل KNN دارد! 😱
✅ اگر K خیلی کوچک باشد (مثلاً ۱ یا ۲):
🔹 مدل ممکن است بیش از حد به دادههای آموزش وابسته شود (Overfitting).
✅ اگر K خیلی بزرگ باشد (مثلاً ۲۰ یا ۳۰):
🔹 مدل ممکن است بیش از حد متوسطگیری کند و دقت کاهش یابد.
📌 بنابراین باید مقدار K را بهینهسازی کنیم تا بهترین عملکرد را داشته باشیم. 🚀
۴.۲ پیدا کردن بهترین مقدار K به صورت خودکار 🔄📊
یکی از بهترین راهها برای پیدا کردن مقدار مناسب K، تست کردن چند مقدار مختلف و بررسی دقت مدل است. 🎯
۱. آزمایش چند مقدار مختلف برای K
📌 با این نمودار، میتوانیم مقدار K را پیدا کنیم که دقت مدل بیشترین مقدار باشد! 🎯
۴.۳ بررسی تأثیر انتخاب ویژگیها (Feature Selection) 🎛️📉
برخی ویژگیها ممکن است نامربوط یا نویزی باشند و مدل را دچار مشکل کنند. بنابراین میتوانیم بهترین ویژگیها را انتخاب کنیم تا عملکرد مدل بهتر شود!
📌 برای بررسی اهمیت ویژگیها از روش
✅ این روش به ما نشان میدهد که کدام ویژگیها برای مدل مهمتر هستند و میتوانیم ویژگیهای کماهمیت را حذف کنیم!
۴.۴ مقایسه KNN با مدلهای دیگر 🤖⚖️
گاهی اوقات KNN بهترین انتخاب نیست و میتوان مدلهای دیگر را هم امتحان کرد.
🔹 درخت تصمیم (Decision Tree) 🌲
🔹 رگرسیون لجستیک (Logistic Regression) 📈
🔹 ماشین بردار پشتیبان (SVM) 🏆
📌 برای مقایسه، یک درخت تصمیم ساده را اجرا میکنیم:
✅ اگر مدل درخت تصمیم عملکرد بهتری داشت، ممکن است برای این مجموعه داده مناسبتر باشد!
۴.۵ جمعبندی نهایی پارت ۴:
✅ مقدار بهینه K را پیدا کردیم تا دقت مدل را بهبود دهیم.
✅ بررسی کردیم که همه ویژگیها مفید نیستند و برخی را میتوان حذف کرد.
✅ KNN را با مدلهای دیگر مقایسه کردیم تا ببینیم آیا گزینه بهتری وجود دارد یا نه.
🎯 حالا شما یک متخصص KNN هستید! 🎯🔥
📌 در آموزش بعدی، پیادهسازی دستی KNN را انجام خواهیم داد! 🚀
[لینک کانال ما]
#یادگیری_ماشین 🤖 #KNN 📊 #هوش_مصنوعی #بهینه_سازی #MachineLearning #AI #کلاسیفیکیشن 🎯
۴.۱ چرا مقدار K مهم است؟ 🤔
مقدار K (تعداد همسایههای نزدیک) تأثیر زیادی روی دقت مدل KNN دارد! 😱
✅ اگر K خیلی کوچک باشد (مثلاً ۱ یا ۲):
🔹 مدل ممکن است بیش از حد به دادههای آموزش وابسته شود (Overfitting).
✅ اگر K خیلی بزرگ باشد (مثلاً ۲۰ یا ۳۰):
🔹 مدل ممکن است بیش از حد متوسطگیری کند و دقت کاهش یابد.
📌 بنابراین باید مقدار K را بهینهسازی کنیم تا بهترین عملکرد را داشته باشیم. 🚀
۴.۲ پیدا کردن بهترین مقدار K به صورت خودکار 🔄📊
یکی از بهترین راهها برای پیدا کردن مقدار مناسب K، تست کردن چند مقدار مختلف و بررسی دقت مدل است. 🎯
۱. آزمایش چند مقدار مختلف برای K
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import accuracy_score
# لیستی برای ذخیره دقتها
accuracy_scores = []
# تست مقدار K از 1 تا 20
k_values = range(1, 21)
for k in k_values:
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(X_train, y_train) # آموزش مدل
y_pred = knn.predict(X_test) # پیشبینی
accuracy_scores.append(accuracy_score(y_test, y_pred)) # ذخیره دقت
# رسم نمودار تغییرات دقت بر حسب K
plt.figure(figsize=(8,5))
plt.plot(k_values, accuracy_scores, marker='o', linestyle='-', color='b', label="دقت مدل")
plt.xlabel("تعداد همسایههای K")
plt.ylabel("دقت مدل")
plt.title("بهترین مقدار K برای KNN")
plt.legend()
plt.grid()
plt.show()
📌 با این نمودار، میتوانیم مقدار K را پیدا کنیم که دقت مدل بیشترین مقدار باشد! 🎯
۴.۳ بررسی تأثیر انتخاب ویژگیها (Feature Selection) 🎛️📉
برخی ویژگیها ممکن است نامربوط یا نویزی باشند و مدل را دچار مشکل کنند. بنابراین میتوانیم بهترین ویژگیها را انتخاب کنیم تا عملکرد مدل بهتر شود!
📌 برای بررسی اهمیت ویژگیها از روش
SelectKBest
استفاده میکنیم. from sklearn.feature_selection import SelectKBest, f_classif
# انتخاب ۲ ویژگی برتر از ۴ ویژگی دیتاست
selector = SelectKBest(score_func=f_classif, k=2)
X_new = selector.fit_transform(X, y)
# نمایش نمره هر ویژگی
feature_scores = selector.scores_
for i, score in enumerate(feature_scores):
print(f"ویژگی {iris.feature_names[i]} → امتیاز: {score:.2f}")
✅ این روش به ما نشان میدهد که کدام ویژگیها برای مدل مهمتر هستند و میتوانیم ویژگیهای کماهمیت را حذف کنیم!
۴.۴ مقایسه KNN با مدلهای دیگر 🤖⚖️
گاهی اوقات KNN بهترین انتخاب نیست و میتوان مدلهای دیگر را هم امتحان کرد.
🔹 درخت تصمیم (Decision Tree) 🌲
🔹 رگرسیون لجستیک (Logistic Regression) 📈
🔹 ماشین بردار پشتیبان (SVM) 🏆
📌 برای مقایسه، یک درخت تصمیم ساده را اجرا میکنیم:
from sklearn.tree import DecisionTreeClassifier
dt = DecisionTreeClassifier()
dt.fit(X_train, y_train)
y_pred_dt = dt.predict(X_test)
# دقت مدل درخت تصمیم
print(f"دقت مدل درخت تصمیم: {accuracy_score(y_test, y_pred_dt):.2f}")
✅ اگر مدل درخت تصمیم عملکرد بهتری داشت، ممکن است برای این مجموعه داده مناسبتر باشد!
۴.۵ جمعبندی نهایی پارت ۴:
✅ مقدار بهینه K را پیدا کردیم تا دقت مدل را بهبود دهیم.
✅ بررسی کردیم که همه ویژگیها مفید نیستند و برخی را میتوان حذف کرد.
✅ KNN را با مدلهای دیگر مقایسه کردیم تا ببینیم آیا گزینه بهتری وجود دارد یا نه.
🎯 حالا شما یک متخصص KNN هستید! 🎯🔥
📌 در آموزش بعدی، پیادهسازی دستی KNN را انجام خواهیم داد! 🚀
[لینک کانال ما]
#یادگیری_ماشین 🤖 #KNN 📊 #هوش_مصنوعی #بهینه_سازی #MachineLearning #AI #کلاسیفیکیشن 🎯
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
👍1
پروژه کامل KNN: تشخیص دستخط ارقام (MNIST) 🔢🤖
✅ در این پروژه، یک مدل KNN را روی مجموعه داده MNIST پیادهسازی میکنیم تا بتواند دستخط اعداد (۰ تا ۹) را شناسایی کند! 🎯
📌 مراحل پروژه:
1️⃣ دریافت و آمادهسازی دادهها
2️⃣ نمایش چند نمونه از دادهها
3️⃣ تقسیم دادهها به مجموعه آموزش و تست
4️⃣ ساخت و آموزش مدل KNN
5️⃣ ارزیابی مدل و محاسبه دقت
6️⃣ پیشبینی یک نمونه جدید
۱. دریافت و آمادهسازی دادهها 📥
ابتدا مجموعه داده MNIST را بارگذاری کرده و آن را آماده میکنیم.
۲. نمایش چند نمونه از ارقام 🔢
برای درک بهتر، چند عدد دستنویس را نمایش میدهیم.
۳. تقسیم دادهها به مجموعه آموزش و تست 🎯
ما دادهها را به ۷۰٪ آموزش و ۳۰٪ تست تقسیم میکنیم.
۴. ساخت و آموزش مدل KNN 🤖
حالا مدل KNN را ایجاد کرده و آن را روی دادههای آموزشی تمرین میدهیم.
۵. ارزیابی مدل و محاسبه دقت 📊
حالا دقت مدل را بررسی میکنیم تا ببینیم چقدر خوب کار میکند!
📌 اگر دقت بالا باشد (مثلاً ۹۵٪)، یعنی مدل ما عملکرد خوبی دارد! 🚀
۶. پیشبینی یک نمونه جدید 🤔🔮
بیایید یک عدد تصادفی از دادههای تست انتخاب کرده و مدل را روی آن آزمایش کنیم!
✅ اگر مدل عدد صحیح را تشخیص دهد، یعنی عملکرد آن خوب است! 🎯
🎯 جمعبندی پروژه:
✅ یک مدل KNN برای تشخیص اعداد دستنویس ساختیم.
✅ مدل را روی مجموعه داده MNIST آموزش دادیم.
✅ دقت مدل را محاسبه کردیم و یک عدد جدید را تست کردیم.
📌 حالا شما میتوانید این مدل را روی تصاویر خودتان آزمایش کنید! 🤖🔥
[لینک کانال ما]
#یادگیری_ماشین 🤖 #KNN #هوش_مصنوعی #تشخیص_اعداد 🔢 #MachineLearning #AI #کلاسیفیکیشن 🎯
✅ در این پروژه، یک مدل KNN را روی مجموعه داده MNIST پیادهسازی میکنیم تا بتواند دستخط اعداد (۰ تا ۹) را شناسایی کند! 🎯
📌 مراحل پروژه:
1️⃣ دریافت و آمادهسازی دادهها
2️⃣ نمایش چند نمونه از دادهها
3️⃣ تقسیم دادهها به مجموعه آموزش و تست
4️⃣ ساخت و آموزش مدل KNN
5️⃣ ارزیابی مدل و محاسبه دقت
6️⃣ پیشبینی یک نمونه جدید
۱. دریافت و آمادهسازی دادهها 📥
ابتدا مجموعه داده MNIST را بارگذاری کرده و آن را آماده میکنیم.
from sklearn.datasets import fetch_openml
import numpy as np
import matplotlib.pyplot as plt
# دریافت دیتاست MNIST
mnist = fetch_openml('mnist_784', version=1, as_frame=False)
X, y = mnist.data, mnist.target # ویژگیها و برچسبها
# تبدیل برچسبها به اعداد صحیح
y = y.astype(int)
# نمایش ابعاد دیتاست
print(f"✅ تعداد نمونهها: {X.shape[0]}, تعداد ویژگیها: {X.shape[1]}")
۲. نمایش چند نمونه از ارقام 🔢
برای درک بهتر، چند عدد دستنویس را نمایش میدهیم.
# نمایش چند تصویر از دیتاست
fig, axes = plt.subplots(1, 5, figsize=(10,3))
for i, ax in enumerate(axes):
ax.imshow(X[i].reshape(28,28), cmap="gray")
ax.set_title(f"عدد: {y[i]}")
ax.axis("off")
plt.show()
۳. تقسیم دادهها به مجموعه آموزش و تست 🎯
ما دادهها را به ۷۰٪ آموزش و ۳۰٪ تست تقسیم میکنیم.
from sklearn.model_selection import train_test_split
# تقسیم دادهها
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
print(f"✅ دادههای آموزش: {X_train.shape[0]}, دادههای تست: {X_test.shape[0]}")
۴. ساخت و آموزش مدل KNN 🤖
حالا مدل KNN را ایجاد کرده و آن را روی دادههای آموزشی تمرین میدهیم.
from sklearn.neighbors import KNeighborsClassifier
# مقدار K را مشخص میکنیم
k = 3
# مدل KNN را میسازیم و آموزش میدهیم
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(X_train, y_train)
print("✅ مدل KNN آموزش داده شد!")
۵. ارزیابی مدل و محاسبه دقت 📊
حالا دقت مدل را بررسی میکنیم تا ببینیم چقدر خوب کار میکند!
from sklearn.metrics import accuracy_score
# پیشبینی دادههای تست
y_pred = knn.predict(X_test)
# محاسبه دقت
accuracy = accuracy_score(y_test, y_pred)
print(f"🎯 دقت مدل: {accuracy:.2f}")
📌 اگر دقت بالا باشد (مثلاً ۹۵٪)، یعنی مدل ما عملکرد خوبی دارد! 🚀
۶. پیشبینی یک نمونه جدید 🤔🔮
بیایید یک عدد تصادفی از دادههای تست انتخاب کرده و مدل را روی آن آزمایش کنیم!
import random
# انتخاب یک نمونه تصادفی از دادههای تست
index = random.randint(0, len(X_test))
sample_image = X_test[index].reshape(28, 28) # تبدیل به تصویر ۲۸×۲۸
# پیشبینی مدل
predicted_label = knn.predict([X_test[index]])[0]
# نمایش تصویر و پیشبینی مدل
plt.imshow(sample_image, cmap="gray")
plt.title(f"مدل پیشبینی کرد: {predicted_label}")
plt.axis("off")
plt.show()
✅ اگر مدل عدد صحیح را تشخیص دهد، یعنی عملکرد آن خوب است! 🎯
🎯 جمعبندی پروژه:
✅ یک مدل KNN برای تشخیص اعداد دستنویس ساختیم.
✅ مدل را روی مجموعه داده MNIST آموزش دادیم.
✅ دقت مدل را محاسبه کردیم و یک عدد جدید را تست کردیم.
📌 حالا شما میتوانید این مدل را روی تصاویر خودتان آزمایش کنید! 🤖🔥
[لینک کانال ما]
#یادگیری_ماشین 🤖 #KNN #هوش_مصنوعی #تشخیص_اعداد 🔢 #MachineLearning #AI #کلاسیفیکیشن 🎯
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
👍2👏1
📌 پارت ۱: مقدمه و مفاهیم KNN 🚀
💡 در این پارت، ابتدا با الگوریتم K-Nearest Neighbors (KNN) آشنا میشویم، نحوه عملکرد آن را بررسی میکنیم، و کاربردهای آن را شرح میدهیم. در پارتهای بعدی به پیادهسازی عملی این الگوریتم از صفر خواهیم پرداخت.
🔹 الگوریتم K-Nearest Neighbors چیست؟
KNN یک الگوریتم یادگیری نظارتشده (Supervised Learning) است که برای کلاسیفیکیشن (دستهبندی) و رگرسیون استفاده میشود.
✔ این الگوریتم بر اساس شباهت دادهها کار میکند و مدل خاصی نمیسازد! بلکه فقط دادههای آموزش را ذخیره میکند و هنگام پیشبینی، نمونه جدید را با دادههای قبلی مقایسه میکند.
✔ اگر K=3 باشد، مدل ۳ همسایه نزدیک به داده جدید را پیدا کرده و کلاس آن را بر اساس اکثریت رأی مشخص میکند.
📌 مراحل اجرای KNN
✅ گام ۱: مقدار K (تعداد همسایهها) را انتخاب میکنیم.
✅ گام ۲: فاصله داده جدید تا تمام نقاط موجود را محاسبه میکنیم.
✅ گام ۳: K نمونه نزدیکتر را انتخاب میکنیم.
✅ گام ۴: بر اساس رأیگیری اکثریت کلاس داده جدید را مشخص میکنیم.
📌 مثال: فرض کنید بخواهیم نوع یک میوه را بر اساس ویژگیهای آن مشخص کنیم. اگر K=3 باشد، مدل سه میوه نزدیکتر را پیدا میکند و بر اساس بیشترین تعداد رأی، نوع میوه جدید را تعیین میکند! 🍎🍊🍌
📌 انتخاب مقدار K مناسب
✔ مقدار K کوچک → ممکن است مدل دچار overfitting شود.
✔ مقدار K بزرگ → ممکن است تأثیر نویز کاهش یابد اما دستهبندی ضعیفتر شود.
✔ مقدار K معمولاً عدد فرد انتخاب میشود (برای جلوگیری از مساوی شدن تعداد رأیها).
📌 روشهای محاسبه فاصله در KNN
🔹 فاصله اقلیدسی (Euclidean Distance)
🔹 فاصله منهتن (Manhattan Distance)
🔹 فاصله چبیشف (Chebyshev Distance)
📌 در پارت بعدی، این روشها را توضیح داده و کد آنها را بهصورت دستی پیادهسازی میکنیم! 🚀
📌 کاربردهای KNN
🔹 سیستمهای پیشنهاد (Recommendation Systems) 🎵
🔹 تشخیص بیماری (Medical Diagnosis) 🏥
🔹 تشخیص چهره و اثر انگشت 🕵️♂️
🔹 پردازش تصویر و بینایی ماشین 🖼
📌 مزایا و معایب KNN
✅ مزایا:
✔ پیادهسازی ساده و قابل درک
✔ مدلی نمیسازد و به دادههای جدید حساس است
✔ برای دستهبندیهای پیچیده کارایی خوبی دارد
❌ معایب:
✖ در دادههای بزرگ کند است 🚀
✖ انتخاب مقدار K مناسب چالشبرانگیز است
✖ حساس به دادههای پرت (Outliers) است
لینک کانال ما
💡 در این پارت، ابتدا با الگوریتم K-Nearest Neighbors (KNN) آشنا میشویم، نحوه عملکرد آن را بررسی میکنیم، و کاربردهای آن را شرح میدهیم. در پارتهای بعدی به پیادهسازی عملی این الگوریتم از صفر خواهیم پرداخت.
🔹 الگوریتم K-Nearest Neighbors چیست؟
KNN یک الگوریتم یادگیری نظارتشده (Supervised Learning) است که برای کلاسیفیکیشن (دستهبندی) و رگرسیون استفاده میشود.
✔ این الگوریتم بر اساس شباهت دادهها کار میکند و مدل خاصی نمیسازد! بلکه فقط دادههای آموزش را ذخیره میکند و هنگام پیشبینی، نمونه جدید را با دادههای قبلی مقایسه میکند.
✔ اگر K=3 باشد، مدل ۳ همسایه نزدیک به داده جدید را پیدا کرده و کلاس آن را بر اساس اکثریت رأی مشخص میکند.
📌 مراحل اجرای KNN
✅ گام ۱: مقدار K (تعداد همسایهها) را انتخاب میکنیم.
✅ گام ۲: فاصله داده جدید تا تمام نقاط موجود را محاسبه میکنیم.
✅ گام ۳: K نمونه نزدیکتر را انتخاب میکنیم.
✅ گام ۴: بر اساس رأیگیری اکثریت کلاس داده جدید را مشخص میکنیم.
📌 مثال: فرض کنید بخواهیم نوع یک میوه را بر اساس ویژگیهای آن مشخص کنیم. اگر K=3 باشد، مدل سه میوه نزدیکتر را پیدا میکند و بر اساس بیشترین تعداد رأی، نوع میوه جدید را تعیین میکند! 🍎🍊🍌
📌 انتخاب مقدار K مناسب
✔ مقدار K کوچک → ممکن است مدل دچار overfitting شود.
✔ مقدار K بزرگ → ممکن است تأثیر نویز کاهش یابد اما دستهبندی ضعیفتر شود.
✔ مقدار K معمولاً عدد فرد انتخاب میشود (برای جلوگیری از مساوی شدن تعداد رأیها).
📌 روشهای محاسبه فاصله در KNN
🔹 فاصله اقلیدسی (Euclidean Distance)
🔹 فاصله منهتن (Manhattan Distance)
🔹 فاصله چبیشف (Chebyshev Distance)
📌 در پارت بعدی، این روشها را توضیح داده و کد آنها را بهصورت دستی پیادهسازی میکنیم! 🚀
📌 کاربردهای KNN
🔹 سیستمهای پیشنهاد (Recommendation Systems) 🎵
🔹 تشخیص بیماری (Medical Diagnosis) 🏥
🔹 تشخیص چهره و اثر انگشت 🕵️♂️
🔹 پردازش تصویر و بینایی ماشین 🖼
📌 مزایا و معایب KNN
✅ مزایا:
✔ پیادهسازی ساده و قابل درک
✔ مدلی نمیسازد و به دادههای جدید حساس است
✔ برای دستهبندیهای پیچیده کارایی خوبی دارد
❌ معایب:
✖ در دادههای بزرگ کند است 🚀
✖ انتخاب مقدار K مناسب چالشبرانگیز است
✖ حساس به دادههای پرت (Outliers) است
لینک کانال ما
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
👍1
📌 پارت ۲: پیادهسازی تابع محاسبه فاصله 🚀
💡 در این پارت، یاد میگیریم که چگونه فاصله بین نقاط را محاسبه کنیم. این مرحله یکی از مهمترین بخشهای الگوریتم KNN است، چون این الگوریتم بر اساس نزدیکی دادهها تصمیمگیری میکند.
📌 روشهای محاسبه فاصله در KNN
در KNN چندین روش برای اندازهگیری فاصله بین دادهها وجود دارد. سه روش پرکاربرد عبارتند از:
1️⃣ فاصله اقلیدسی (Euclidean Distance)
2️⃣ فاصله منهتن (Manhattan Distance)
3️⃣ فاصله چبیشف (Chebyshev Distance)
📌 روش ۱: فاصله اقلیدسی
تعریف: فاصله اقلیدسی بین دو نقطه، کوتاهترین فاصله مستقیم بین آنها در یک فضای چندبعدی است.
✔ فرمول:
پایین پست
✔ پیادهسازی در پایتون:
📌 روش ۲: فاصله منهتن
تعریف: فاصله منهتن مجموع قدرمطلق اختلافات در هر بعد است. این روش برای مسیرهای شبکهای (مانند خیابانهای شهر) بسیار مفید است.
✔ فرمول:
پایین پست
✔ پیادهسازی در پایتون:
📌 روش ۳: فاصله چبیشف
تعریف: فاصله چبیشف بیشترین تفاوت بین مختصات دو نقطه را میسنجد. این روش برای محاسباتی که نیاز به مقایسه تغییرات حداکثری دارند مناسب است.
✔ فرمول:
پایین پست
✔ پیادهسازی در پایتون:
[لینک کانال ما]
📌 در پارت بعدی، از این توابع برای پیدا کردن نزدیکترین K همسایه استفاده خواهیم کرد! 🚀
💡 در این پارت، یاد میگیریم که چگونه فاصله بین نقاط را محاسبه کنیم. این مرحله یکی از مهمترین بخشهای الگوریتم KNN است، چون این الگوریتم بر اساس نزدیکی دادهها تصمیمگیری میکند.
📌 روشهای محاسبه فاصله در KNN
در KNN چندین روش برای اندازهگیری فاصله بین دادهها وجود دارد. سه روش پرکاربرد عبارتند از:
1️⃣ فاصله اقلیدسی (Euclidean Distance)
2️⃣ فاصله منهتن (Manhattan Distance)
3️⃣ فاصله چبیشف (Chebyshev Distance)
📌 روش ۱: فاصله اقلیدسی
تعریف: فاصله اقلیدسی بین دو نقطه، کوتاهترین فاصله مستقیم بین آنها در یک فضای چندبعدی است.
✔ فرمول:
پایین پست
✔ پیادهسازی در پایتون:
import numpy as np
def euclidean_distance(point1, point2):
return np.sqrt(np.sum((np.array(point1) - np.array(point2)) ** 2))
# تست تابع
p1 = [2, 3]
p2 = [5, 7]
print("فاصله اقلیدسی:", euclidean_distance(p1, p2))
📌 روش ۲: فاصله منهتن
تعریف: فاصله منهتن مجموع قدرمطلق اختلافات در هر بعد است. این روش برای مسیرهای شبکهای (مانند خیابانهای شهر) بسیار مفید است.
✔ فرمول:
پایین پست
✔ پیادهسازی در پایتون:
def manhattan_distance(point1, point2):
return np.sum(np.abs(np.array(point1) - np.array(point2)))
# تست تابع
print("فاصله منهتن:", manhattan_distance(p1, p2))
📌 روش ۳: فاصله چبیشف
تعریف: فاصله چبیشف بیشترین تفاوت بین مختصات دو نقطه را میسنجد. این روش برای محاسباتی که نیاز به مقایسه تغییرات حداکثری دارند مناسب است.
✔ فرمول:
پایین پست
✔ پیادهسازی در پایتون:
def chebyshev_distance(point1, point2):
return np.max(np.abs(np.array(point1) - np.array(point2)))
# تست تابع
print("فاصله چبیشف:", chebyshev_distance(p1, p2))
[لینک کانال ما]
📌 در پارت بعدی، از این توابع برای پیدا کردن نزدیکترین K همسایه استفاده خواهیم کرد! 🚀
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
👍1
📌 پارت ۳: یافتن K همسایه نزدیکتر 🚀
💡 در این پارت، یاد میگیریم که چگونه برای یک داده جدید، K نزدیکترین همسایه را پیدا کنیم. این بخش، هسته اصلی الگوریتم KNN است!
📌 نحوه یافتن نزدیکترین همسایهها
✅ گام ۱: فاصله داده جدید را با تمام دادههای آموزش محاسبه میکنیم.
✅ گام ۲: دادهها را بر اساس فاصله از کوچک به بزرگ مرتب میکنیم.
✅ گام ۳: K داده اول را بهعنوان نزدیکترین همسایه انتخاب میکنیم.
📌 پیادهسازی تابع یافتن K همسایه نزدیکتر
📌 توضیح کد
🔹 محاسبه فاصله: با استفاده از تابع
🔹 مرتبسازی: دادهها را بر اساس فاصله از کوچک به بزرگ مرتب میکنیم.
🔹 انتخاب K همسایه: اولین K مقدار را انتخاب کرده و برمیگردانیم.
[لینک کانال ما]
📌 در پارت بعدی، این اطلاعات را برای پیشبینی کلاس استفاده خواهیم کرد! 🚀
💡 در این پارت، یاد میگیریم که چگونه برای یک داده جدید، K نزدیکترین همسایه را پیدا کنیم. این بخش، هسته اصلی الگوریتم KNN است!
📌 نحوه یافتن نزدیکترین همسایهها
✅ گام ۱: فاصله داده جدید را با تمام دادههای آموزش محاسبه میکنیم.
✅ گام ۲: دادهها را بر اساس فاصله از کوچک به بزرگ مرتب میکنیم.
✅ گام ۳: K داده اول را بهعنوان نزدیکترین همسایه انتخاب میکنیم.
📌 پیادهسازی تابع یافتن K همسایه نزدیکتر
import numpy as np
# تابع فاصله اقلیدسی از پارت قبل
def euclidean_distance(point1, point2):
return np.sqrt(np.sum((np.array(point1) - np.array(point2)) ** 2))
# تابع یافتن K همسایه نزدیکتر
def get_k_neighbors(training_data, labels, test_point, k):
distances = []
# محاسبه فاصله بین داده جدید و تمام نقاط آموزش
for i, train_point in enumerate(training_data):
distance = euclidean_distance(test_point, train_point)
distances.append((distance, labels[i]))
# مرتبسازی بر اساس فاصله (کوچکترین مقدار اول)
distances.sort(key=lambda x: x[0])
# انتخاب K همسایه اول
k_neighbors = distances[:k]
return k_neighbors
# تست تابع با داده فرضی
train_data = [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]
labels = ["A", "B", "A", "B", "A"]
test_sample = [4, 5]
neighbors = get_k_neighbors(train_data, labels, test_sample, k=3)
print("K همسایه نزدیکتر:", neighbors)
📌 توضیح کد
🔹 محاسبه فاصله: با استفاده از تابع
euclidean_distance
، فاصله داده جدید را با تمامی دادههای موجود محاسبه میکنیم. 🔹 مرتبسازی: دادهها را بر اساس فاصله از کوچک به بزرگ مرتب میکنیم.
🔹 انتخاب K همسایه: اولین K مقدار را انتخاب کرده و برمیگردانیم.
[لینک کانال ما]
📌 در پارت بعدی، این اطلاعات را برای پیشبینی کلاس استفاده خواهیم کرد! 🚀
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
👍1
📌 پارت ۴: پیشبینی کلاس داده جدید 🚀
💡 در این پارت، از نزدیکترین همسایههایی که در پارت قبل پیدا کردیم، برای پیشبینی کلاس داده جدید استفاده میکنیم!
📌 نحوه پیشبینی کلاس در KNN
✅ گام ۱: از K همسایه نزدیکتر که در پارت قبل به دست آوردیم، کلاسهایشان را استخراج میکنیم.
✅ گام ۲: تعداد دفعات تکرار هر کلاس را شمارش میکنیم.
✅ گام ۳: کلاسی که بیشترین رأی را دارد، بهعنوان خروجی در نظر میگیریم!
📌 پیادهسازی تابع پیشبینی کلاس
📌 توضیح کد
🔹 استخراج کلاسهای همسایهها: با استفاده از
🔹 شمارش تعداد تکرار هر کلاس: از
🔹 انتخاب کلاس با بیشترین رأی: تابع
📌 مثال خروجی
✅ فرض کنید همسایههای ما این کلاسها را داشته باشند:
🔹 کلاس A دو بار و کلاس B یک بار ظاهر شده است.
🔹 پس کلاس A بیشترین رأی را دارد و بهعنوان خروجی انتخاب میشود! ✅
لینک کانال ما
📌 در پارت بعدی، کل مراحل را در قالب یک کلاس منظم خواهیم کرد تا بتوانیم از این مدل در پروژههای مختلف استفاده کنیم! 🚀
💡 در این پارت، از نزدیکترین همسایههایی که در پارت قبل پیدا کردیم، برای پیشبینی کلاس داده جدید استفاده میکنیم!
📌 نحوه پیشبینی کلاس در KNN
✅ گام ۱: از K همسایه نزدیکتر که در پارت قبل به دست آوردیم، کلاسهایشان را استخراج میکنیم.
✅ گام ۲: تعداد دفعات تکرار هر کلاس را شمارش میکنیم.
✅ گام ۳: کلاسی که بیشترین رأی را دارد، بهعنوان خروجی در نظر میگیریم!
📌 پیادهسازی تابع پیشبینی کلاس
from collections import Counter
# تابع پیشبینی کلاس
def predict_class(k_neighbors):
# استخراج لیست کلاسها از همسایههای نزدیک
classes = [label for _, label in k_neighbors]
# شمارش تعداد دفعات تکرار هر کلاس
class_count = Counter(classes)
# انتخاب کلاس با بیشترین رأی
predicted_class = class_count.most_common(1)[0][0]
return predicted_class
# تست تابع با خروجی پارت قبل
predicted = predict_class(neighbors)
print("کلاس پیشبینی شده:", predicted)
📌 توضیح کد
🔹 استخراج کلاسهای همسایهها: با استفاده از
k_neighbors
، کلاس هر همسایه را ذخیره میکنیم. 🔹 شمارش تعداد تکرار هر کلاس: از
Counter
برای شمارش کلاسهای تکرارشده استفاده میکنیم. 🔹 انتخاب کلاس با بیشترین رأی: تابع
most_common(1)
کلاسی را که بیشترین تعداد همسایهها دارد، بهعنوان خروجی برمیگرداند. 📌 مثال خروجی
✅ فرض کنید همسایههای ما این کلاسها را داشته باشند:
[("A", 2.5), ("B", 3.1), ("A", 1.8)]
🔹 کلاس A دو بار و کلاس B یک بار ظاهر شده است.
🔹 پس کلاس A بیشترین رأی را دارد و بهعنوان خروجی انتخاب میشود! ✅
لینک کانال ما
📌 در پارت بعدی، کل مراحل را در قالب یک کلاس منظم خواهیم کرد تا بتوانیم از این مدل در پروژههای مختلف استفاده کنیم! 🚀
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
👍1
📌 پارت ۴: پیشبینی کلاس داده جدید 🚀
💡 در این پارت، از نزدیکترین همسایههایی که در پارت قبل پیدا کردیم، برای پیشبینی کلاس داده جدید استفاده میکنیم!
📌 نحوه پیشبینی کلاس در KNN
✅ گام ۱: از K همسایه نزدیکتر که در پارت قبل به دست آوردیم، کلاسهایشان را استخراج میکنیم.
✅ گام ۲: تعداد دفعات تکرار هر کلاس را شمارش میکنیم.
✅ گام ۳: کلاسی که بیشترین رأی را دارد، بهعنوان خروجی در نظر میگیریم!
📌 پیادهسازی تابع پیشبینی کلاس
📌 توضیح کد
🔹 استخراج کلاسهای همسایهها: با استفاده از
🔹 شمارش تعداد تکرار هر کلاس: از
🔹 انتخاب کلاس با بیشترین رأی: تابع
📌 مثال خروجی
✅ فرض کنید همسایههای ما این کلاسها را داشته باشند:
🔹 کلاس A دو بار و کلاس B یک بار ظاهر شده است.
🔹 پس کلاس A بیشترین رأی را دارد و بهعنوان خروجی انتخاب میشود! ✅
لینک کانال ما
📌 در پارت بعدی، کل مراحل را در قالب یک کلاس منظم خواهیم کرد تا بتوانیم از این مدل در پروژههای مختلف استفاده کنیم! 🚀
💡 در این پارت، از نزدیکترین همسایههایی که در پارت قبل پیدا کردیم، برای پیشبینی کلاس داده جدید استفاده میکنیم!
📌 نحوه پیشبینی کلاس در KNN
✅ گام ۱: از K همسایه نزدیکتر که در پارت قبل به دست آوردیم، کلاسهایشان را استخراج میکنیم.
✅ گام ۲: تعداد دفعات تکرار هر کلاس را شمارش میکنیم.
✅ گام ۳: کلاسی که بیشترین رأی را دارد، بهعنوان خروجی در نظر میگیریم!
📌 پیادهسازی تابع پیشبینی کلاس
from collections import Counter
# تابع پیشبینی کلاس
def predict_class(k_neighbors):
# استخراج لیست کلاسها از همسایههای نزدیک
classes = [label for _, label in k_neighbors]
# شمارش تعداد دفعات تکرار هر کلاس
class_count = Counter(classes)
# انتخاب کلاس با بیشترین رأی
predicted_class = class_count.most_common(1)[0][0]
return predicted_class
# تست تابع با خروجی پارت قبل
predicted = predict_class(neighbors)
print("کلاس پیشبینی شده:", predicted)
📌 توضیح کد
🔹 استخراج کلاسهای همسایهها: با استفاده از
k_neighbors
، کلاس هر همسایه را ذخیره میکنیم. 🔹 شمارش تعداد تکرار هر کلاس: از
Counter
برای شمارش کلاسهای تکرارشده استفاده میکنیم. 🔹 انتخاب کلاس با بیشترین رأی: تابع
most_common(1)
کلاسی را که بیشترین تعداد همسایهها دارد، بهعنوان خروجی برمیگرداند. 📌 مثال خروجی
✅ فرض کنید همسایههای ما این کلاسها را داشته باشند:
[("A", 2.5), ("B", 3.1), ("A", 1.8)]
🔹 کلاس A دو بار و کلاس B یک بار ظاهر شده است.
🔹 پس کلاس A بیشترین رأی را دارد و بهعنوان خروجی انتخاب میشود! ✅
لینک کانال ما
📌 در پارت بعدی، کل مراحل را در قالب یک کلاس منظم خواهیم کرد تا بتوانیم از این مدل در پروژههای مختلف استفاده کنیم! 🚀
Telegram
Python3
🎓 آموزش و پروژههای Python
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
آموزشهای کاربردی و پروژههای عملی Python برای همه سطوح. 🚀
👍1