Python3
200 subscribers
101 photos
6 videos
26 files
518 links
🎓 آموزش و پروژه‌های Python
آموزش‌های کاربردی و پروژه‌های عملی Python برای همه سطوح. 🚀
Download Telegram
🌟 ۷ خبر مهم امروز از دنیای پایتون 🌟

📰 #1: گوگل سرویس جدید Cloud AI Notebooks را با پشتیبانی از پایتون عرضه کرد ☁️🤖
امروز گوگل سرویس Cloud AI Notebooks را معرفی کرد. این سرویس به طور ویژه برای پروژه‌های هوش مصنوعی و یادگیری ماشین طراحی شده و از پایتون پشتیبانی می‌کند. گوگل اعلام کرده که این ابزار جدید به توسعه‌دهندگان کمک می‌کند تا سریع‌تر و کارآمدتر کار کنند.


📰 #2: انتشار نسخه جدید FastAPI 0.70 🚀
کتابخانه محبوب FastAPI نسخه 0.70 خود را منتشر کرد. این نسخه شامل بهبودهایی در مستندات و رفع برخی باگ‌ها است. توسعه‌دهندگان می‌توانند از این به‌روزرسانی‌ها برای ساخت APIهای سریع و کارآمدتر بهره ببرند.


📰 #3: معرفی ابزار جدید Poetry برای مدیریت وابستگی‌ها 📦
ابزار Poetry به عنوان یک ابزار قدرتمند برای مدیریت وابستگی‌ها و بسته‌بندی پروژه‌های پایتون معرفی شده است. این ابزار با استفاده آسان و ویژگی‌های متنوع خود، جایگزین مناسبی برای pip و virtualenv محسوب می‌شود.


📰 #4: پیشرفت‌های جدید در Pandas 1.3.3 🧮
کتابخانه Pandas نسخه 1.3.3 خود را منتشر کرد. این نسخه شامل بهبودهایی در عملکرد و افزایش قابلیت‌های جدید برای تجزیه و تحلیل داده‌ها می‌باشد. اگر با داده‌ها کار می‌کنید، حتماً به این به‌روزرسانی نگاهی بیاندازید.


📰 #5: معرفی دوره جدید "Machine Learning with Python" توسط Coursera 📚
پلتفرم آموزشی Coursera دوره جدیدی با عنوان "Machine Learning with Python" را معرفی کرد. این دوره توسط متخصصان برجسته طراحی شده و برای تمامی سطوح مناسب است. اگر به یادگیری ماشین علاقه دارید، این دوره را از دست ندهید.


📰 #6: برگزاری کنفرانس PyCon 2024 در آمستردام 🇳🇱
خبر هیجان‌انگیز برای علاقه‌مندان به پایتون! کنفرانس سالانه PyCon 2024 در آمستردام برگزار خواهد شد. این رویداد فرصتی عالی برای شبکه‌سازی و آشنایی با آخرین پیشرفت‌ها و ابزارهای پایتون فراهم می‌کند.


📰 #7: به‌روزرسانی افزونه VSCode برای توسعه‌دهندگان پایتون 🛠️
افزونه VSCode برای توسعه‌دهندگان پایتون به‌روز شده و امکانات جدیدی از جمله تکمیل خودکار کد و دیباگینگ پیشرفته به آن افزوده شده است. این به‌روزرسانی تجربه توسعه با پایتون را بهبود می‌بخشد و کار را برای برنامه‌نویسان راحت‌تر می‌کند.


📢 با دنبال کردن کانال تلگرام ما، از آخرین اخبار و به‌روزرسانی‌های دنیای پایتون مطلع شوید!


(اینجا کلیک کن تا از اخبار مهم پایتون با خبر باشی)


#Python #Google #AI #FastAPI #Python #Poetry #DependencyManagement #MachineLearning #Python
#VSCode #IDE #Python
#PythonNews #TelegramChannel
👍2
import tkinter as tk
from tkinter import filedialog
from PIL import Image, ImageTk, ImageOps
import torch
import torchvision.transforms as transforms
import numpy as np

# تعریف مدل و بارگذاری وزن‌های آموزش‌دیده شده
class ComplexNN(nn.Module):
init__init__(self):
super(ComplexNNinit__init__()
self.conv1 = nn.Conv2d(1, 32, kernel_size=3, stride=1, padding=1)
self.conv2 = nn.Conv2d(32, 64, kernel_size=3, stride=1, padding=1)
self.pool = nn.MaxPool2d(kernel_size=2, stride=2, padding=0)
self.fc1 = nn.Linear(64 * 7 * 7, 128)
self.fc2 = nn.Linear(128, 10)
def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 64 * 7 * 7)
x = F.relu(self.fc1(x))
x = self.fc2(x)
return x

net = ComplexNN()
net.load_state_dict(torch.load('model.pth'))
net.eval()

# تعریف تبدیل‌ها
transform = transforms.Compose([
transforms.Grayscale(num_output_channels=1),
transforms.Resize((28, 28)),
transforms.ToTensor(),
transforms.Normalize((0.5,), (0.5,))
])

# ساخت برنامه tkinter
class AIApp:
def init(self, root):
self.root = root
self.root.title("AI Number Recognizer")

self.label = tk.Label(root, text="Load an image to recognize the number")
self.label.pack()

self.button = tk.Button(root, text="Load Image", command=self.load_image)
self.button.pack()

self.canvas = tk.Canvas(root, width=200, height=200)
self.canvas.pack()

self.result_label = tk.Label(root, text="")
self.result_label.pack()

def load_image(self):
file_path = filedialog.askopenfilename()
if file_path:
image = Image.open(file_path)
self.show_image(image)
number = self.predict_number(image)
self.result_label.config(text=f"Predicted Number: {number}")

def show_image(self, image):
image = ImageOps.fit(image, (200, 200), Image.ANTIALIAS)
photo = ImageTk.PhotoImage(image)
self.canvas.create_image(0, 0, anchor=tk.NW, image=photo)
self.canvas.image = photo

def predict_number(self, image):
image = transform(image).unsqueeze(0)
output = net(image)
_, predicted = torch.max(output.data, 1)
return predicted.item()

root = tk.Tk()
app = AIApp(root)
root.mainloop()

8. توضیحات تکمیلی 📚

این برنامه یک شبکه عصبی پیچیده برای تشخیص اعداد دست‌نویس ساخته شده با PyTorch را در یک رابط کاربری ساده با استفاده از tkinter تلفیق می‌کند. کاربران می‌توانند یک تصویر دست‌نویس از عددی را بارگذاری کرده و برنامه به طور خودکار عدد موجود در تصویر را تشخیص می‌دهد.

مزایا و کاربردهای استفاده از این سیستم AI

1. بهبود دقت: استفاده از شبکه عصبی پیچیده دقت بالایی در تشخیص اعداد دست‌نویس دارد.
2. انعطاف‌پذیری: می‌توان مدل را برای تشخیص اشیاء و الگوهای دیگر آموزش داد.
3. سهولت استفاده: رابط کاربری ساده به کاربران امکان می‌دهد به راحتی از مدل استفاده کنند

🔻بیا اینجا تا بیشتر یاد بگیری🔻


#یادگیری_ماشینی #شبکه_عصبی #هوش_مصنوعی #آموزش_پایتون #PyTorch #AI #کدنویسی #پایتون #الگوریتم
👍2
ادامه کد ☝️
# تعریف ذرات و نیروها
particle = Particle(0.0, 0.0, 1.0)
force = 10.0
time = 1.0

# اعمال نیرو و شبیه‌سازی حرکت ذره
for i in range(10):
particle.apply_force(force, time)
print(f"Time: {i*time}s, Position: {particle.position}, Velocity: {particle.velocity}")

استفاده از الگوریتم‌ها در هوش مصنوعی 🤖

الگوریتم‌های محاسباتی پیشرفته یکی از اجزای اصلی هوش مصنوعی هستند. به عنوان مثال، الگوریتم‌های یادگیری ماشین برای بهینه‌سازی و یادگیری از داده‌ها استفاده می‌شوند. یکی از الگوریتم‌های پایه‌ای در این زمینه، الگوریتم نزول گرادیان (Gradient Descent) است که برای به حداقل رساندن تابع هزینه در مسائل یادگیری ماشین استفاده می‌شود.

import numpy as np

def gradient_descent(X, y, learning_rate=0.01, iterations=1000):
m = len(y)
theta = np.zeros(X.shape[1])
for i in range(iterations):
gradients = (1/m) * np.dot(X.T, (np.dot(X, theta) - y))
theta -= learning_rate * gradients
return theta

# مثال با داده‌های مصنوعی
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
y = np.array([6, 8, 9, 11])
theta = gradient_descent(X, y)

print(f"Optimized Parameters: {theta}")

بهینه‌سازی الگوریتم‌ها برای کارایی بالا 🔄

برای کاربردهای سنگین مانند شبیه‌سازی‌های پیچیده و یا الگوریتم‌های یادگیری ماشین، بهینه‌سازی کد برای کارایی بالا اهمیت زیادی دارد. از جمله روش‌های بهینه‌سازی می‌توان به استفاده از کتابخانه‌های محاسباتی بهینه مانند NumPy، اجرای موازی (parallel processing)، و بهینه‌سازی حافظه اشاره کرد.

(🚩اینجا کلیک کن تا بیشتر یاد بگیری🚩)

#Algorithms #Computational_Programming #MachineLearning #AI #Python #برنامه‌نویسی #الگوریتم #شبیه‌سازی #محاسبات_پیشرفته #هوش_مصنوعی
پارت ۱: مقدمه‌ای بر شبکه‌های عصبی کانولوشنی (CNN) 🌐🤖

در این قسمت به کاربردها، ضرورت و مزایای الگوریتم CNN می‌پردازیم.

۱. شبکه عصبی کانولوشنی چیست؟ 🤔
شبکه‌های عصبی کانولوشنی (CNN) نوعی از شبکه‌های عصبی مصنوعی هستند که برای تحلیل داده‌های پیچیده مانند تصاویر و ویدئوها طراحی شده‌اند. این شبکه‌ها با استفاده از لایه‌های مختلف کانولوشنی قادرند ویژگی‌های مهم تصاویر را شناسایی کنند. CNN ها با تقلید از نحوه پردازش اطلاعات در مغز انسان، به شناسایی الگوها و ویژگی‌های خاص تصاویر می‌پردازند.

۲. کاربردهای الگوریتم CNN 📸🧠
- تشخیص تصویر: یکی از اصلی‌ترین کاربردهای CNN، شناسایی و دسته‌بندی تصاویر است. به‌طور مثال، در تشخیص چهره‌ها در تصاویر یا شناسایی اشیاء.
- پردازش ویدئو: در تحلیل ویدئوها، CNN ها برای شناسایی حرکت، شناسایی اشیاء متحرک و تحلیل لحظه به لحظه تصاویر کاربرد دارند.
- پزشکی: در تصاویر پزشکی مانند اسکن‌های MRI، سی‌تی‌اسکن‌ها و رادیوگرافی‌ها، برای شناسایی ناهنجاری‌ها و بیماری‌ها مانند تومورها یا بیماری‌های قلبی.
- خودروهای خودران: در صنعت خودروهای خودران برای تشخیص موانع، علائم رانندگی، مسیرها و شناسایی عابران پیاده.

۳. چرا از CNN استفاده می‌کنیم؟
در مقایسه با سایر الگوریتم‌ها، CNN‌ها برای پردازش تصاویر بسیار کارآمدتر هستند زیرا خود به‌طور خودکار ویژگی‌های تصاویر را استخراج و شناسایی می‌کنند. این ویژگی به‌ویژه در پردازش داده‌های پیچیده و حجیم مانند تصاویر پزشکی یا ویدئوها مفید است. علاوه بر این، به دلیل استفاده از ساختار لایه‌ای، CNN ها قادرند اطلاعات را به‌طور دقیق و با سرعت بالا پردازش کنند.

۴. مزایای CNN 🏆
- دقت بالا: توانایی شناسایی دقیق ویژگی‌ها و الگوهای پیچیده در تصاویر.
- کاهش نیاز به پردازش دستی: برخلاف دیگر الگوریتم‌ها که نیاز به استخراج ویژگی‌های دستی دارند، CNN خود به‌طور اتوماتیک ویژگی‌ها را استخراج می‌کند.
- مقیاس‌پذیری: با افزایش حجم داده‌ها، عملکرد CNN‌ها به خوبی مقیاس‌پذیر است و می‌توانند در تحلیل داده‌های بزرگ به‌خوبی عمل کنند.
- زمان اجرا سریعتر: به‌دلیل استفاده از فیلترهای کانولوشن و تکنیک‌های مختلف مانند pooling، این شبکه‌ها قادر به پردازش سریعتر تصاویر هستند.

این‌ها تنها بخشی از کاربردها و مزایای شبکه‌های عصبی کانولوشنی هستند. در قسمت‌های بعدی، با نحوه پیاده‌سازی CNN در پایتون آشنا خواهیم شد.



برای دریافت آموزش‌های بیشتر و پیاده‌سازی کامل CNN در پایتون، به کانال تلگرام ما بپیوندید! 💬
🔗 [لینک کانال تلگرام]

#AI #DeepLearning #CNN #Python
@app.route('/predict', methods=['POST'])
def predict():
img = request.files['image']
# پردازش تصویر و پیش‌بینی با مدل
img_array = preprocess_image(img)
prediction = model.predict(img_array)
predicted_class = prediction.argmax()
return jsonify({'prediction': predicted_class})

if name == 'main':
app.run(debug=True)

۵. نتیجه‌گیری: از آموزش تا اجرا 💡
در این قسمت از آموزش، یاد گرفتید که چگونه یک مدل CNN را در پروژه‌های واقعی پیاده‌سازی و استفاده کنید. با استفاده از تکنیک‌های بهینه‌سازی و ابزارهایی مانند TensorFlow Lite، می‌توانید مدل‌های خود را بهبود داده و در سیستم‌های عملی پیاده‌سازی کنید. اکنون می‌توانید از این مدل‌ها برای شناسایی تصاویر، پیش‌بینی داده‌ها و سایر کاربردهای عملی استفاده کنید.



برای یادگیری بیشتر و دریافت آموزش‌های پیشرفته‌تر در زمینه پیاده‌سازی مدل‌های یادگیری عمیق و CNN، به کانال تلگرام ما بپیوندید! 💬
🔗 [لینک کانال تلگرام]

#AI #CNN #DeepLearning #TensorFlow
۵. مشکل: استفاده از داده‌های نادرست یا کیفیت پایین 🔍
اگر داده‌هایی که برای آموزش استفاده می‌کنید نادرست یا کیفیت پایین باشند، مدل شما عملکرد ضعیفی خواهد داشت.

راه‌حل‌ها:
- پیش‌پردازش داده‌ها: قبل از استفاده از داده‌ها، آن‌ها را تمیز و نرمال کنید. این ممکن است شامل تغییر اندازه تصاویر، حذف داده‌های ناقص یا اشتباه و یا نرمال‌سازی داده‌ها باشد.


  X_train = X_train / 255.0  # نرمال‌سازی داده‌ها

- مطمئن شوید که داده‌ها متنوع و متوازن هستند تا مدل شما قادر به یادگیری ویژگی‌های مختلف و تعمیم‌دادن به داده‌های جدید باشد.

۶. مشکل: زمان آموزش طولانی (Long Training Time)
آموزش مدل‌های CNN ممکن است زمان‌بر باشد، به‌ویژه اگر داده‌های زیادی داشته باشید و مدل پیچیده‌ای بسازید.

راه‌حل‌ها:
- استفاده از GPU: آموزش مدل‌های CNN معمولاً روی GPU سریع‌تر از CPU انجام می‌شود. بنابراین، از کارت‌های گرافیکی برای آموزش سریع‌تر استفاده کنید.


  with tf.device('/GPU:0'):
model.fit(X_train, y_train, epochs=10)

- استفاده از Batch Normalization: این تکنیک می‌تواند به تسریع فرآیند آموزش کمک کند.


  from tensorflow.keras.layers import BatchNormalization
model.add(BatchNormalization())



نتیجه‌گیری
در این پارت، به مشکلات رایج در پیاده‌سازی مدل‌های CNN پرداخته و روش‌هایی برای جلوگیری از آن‌ها و بهبود عملکرد مدل ارائه شد. با اعمال نکات و راه‌حل‌های ذکر شده، می‌توانید مدل‌های خود را بهینه‌تر و با دقت بالاتر اجرا کنید.



برای دریافت نکات بیشتر و آموزش‌های پیشرفته در این زمینه، به کانال تلگرام ما بپیوندید! 💬
🔗 [لینک کانال تلگرام]

#DeepLearning #CNN #MachineLearning #AI
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 🔍📊



۲.۱ چرا پیش‌پردازش داده‌ها در 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 #کلاسیفیکیشن 🎯
👍1
پارت ۴: بهینه‌سازی مدل KNN و انتخاب بهترین مقدار K 🎯🔧



۴.۱ چرا مقدار 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 #کلاسیفیکیشن 🎯
👍1
پروژه کامل 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