Python3
200 subscribers
100 photos
6 videos
26 files
518 links
🎓 آموزش و پروژه‌های Python
آموزش‌های کاربردی و پروژه‌های عملی Python برای همه سطوح. 🚀
Download Telegram
پروژه کامل KNN: تشخیص دست‌خط ارقام (MNIST) 🔢🤖

در این پروژه، یک مدل 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 #کلاسیفیکیشن 🎯
👍2👏1