پارت ۴: بهینهسازی مدل 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