فصل کامل: وباسکرپینگ و کار با API در پایتون
درخواستهای HTTP (Requests)
دریافت دادهها از وبسایتها
تجزیه HTML با BeautifulSoup
دانلود فایل و تصویر
کار با API و JSON
وباسکرپینگ پیشرفته (Session، Headers، Auth)
---
بخش ۱ – مقدمات Requests (سوال 1–20)
1. نصب کتابخانه Requests
pip install requests
2. وارد کردن Requests
import requests
3. ارسال درخواست GET
response = requests.get("https://example.com")
print(response.text)
4. وضعیت درخواست
print(response.status_code)
5. بررسی موفقیت
if response.ok:
print("Success!")
6. هدرها
print(response.headers)
7. دریافت باینری (مثل تصویر)
content = response.content
8. ذخیره در فایل
with open("page.html", "wb") as f:
f.write(response.content)
9. ارسال پارامتر در URL
params = {"q": "python"}
requests.get("https://www.google.com/search", params=params)
10. درخواست POST
data = {"username": "admin", "password": "123"}
requests.post("https://example.com/login", data=data)
11. ارسال JSON
json_data = {"name": "Ali", "age": 25}
requests.post("https://example.com/api", json=json_data)
12. هدر سفارشی
headers = {"User-Agent": "MyApp"}
requests.get("https://example.com", headers=headers)
13. Timeout
requests.get("https://example.com", timeout=5)
14. Session
s = requests.Session()
s.get("https://example.com")
15. کوکیها
print(response.cookies)
16. ارسال کوکی
cookies = {"session": "abcd"}
requests.get("https://example.com", cookies=cookies)
17. بررسی Redirect
print(response.history)
18. جلوگیری از Redirect
requests.get("https://example.com", allow_redirects=False)
19. دانلود تصویر
img = requests.get("https://example.com/image.jpg")
with open("image.jpg", "wb") as f:
f.write(img.content)
20. آپلود فایل
files = {"file": open("test.txt", "rb")}
requests.post("https://example.com/upload", files=files)
---
بخش ۲ – کار با BeautifulSoup (سوال 21–40)
21. نصب
pip install beautifulsoup4
22. وارد کردن
from bs4 import BeautifulSoup
23. ایجاد شیء Soup
soup = BeautifulSoup(response.text, "html.parser")
24. یافتن اولین تگ
print(soup.find("h1"))
25. یافتن همه تگها
print(soup.find_all("p"))
26. دسترسی به متن
print(soup.find("p").get_text())
27. دسترسی به ویژگی
print(soup.find("a")["href"])
28. جستجو با کلاس
soup.find_all("div", class_="content")
29. جستجو با id
soup.find(id="main")
30. انتخاب با CSS Selector
soup.select("div.content > p")
31. یافتن چندین نوع تگ
soup.find_all(["h1", "h2"])
32. یافتن با شرط تابع
soup.find_all(lambda tag: tag.name == "p" and "Python" in tag.text)
33. تغییر متن تگ
tag = soup.find("h1")
tag.string = "New Title"
34. حذف تگ
tag.decompose()
35. پیمایش والد
tag.parent
36. پیمایش فرزند
tag.contents
37. پیمایش خواهر
tag.find_next_sibling()
38. پیمایش قبلی
tag.find_previous_sibling()
39. یافتن لینکها
for a in soup.find_all("a", href=True):
print(a["href"])
40. ذخیره HTML تمیز
with open("clean.html", "w", encoding="utf-8") as f:
f.write(soup.prettify())
---
بخش ۳ – کار با API و JSON (سوال 41–60)
41. دریافت JSON
r = requests.get("https://api.github.com")
print(r.json())
42. ارسال JSON
requests.post("https://example.com/api", json={"id": 1})
43. پردازش JSON
data = r.json()
print(data["current_user_url"])
44. استفاده از پارامتر در API
requests.get("https://api.agify.io", params={"name": "Ali"})
45. بررسی نرخ محدودیت
print(r.headers.get("X-RateLimit-Limit"))
46. API با احراز هویت
requests.get("https://api.github.com/user", auth=("user", "pass"))
47. API با Token
headers = {"Authorization": "Bearer TOKEN"}
requests.get("https://api.example.com", headers=headers)
48. API با Session
s = requests.Session()
s.headers.update({"Authorization": "Bearer TOKEN"})
49. بررسی خطا
r.raise_for_status()
50. API POST با فایل
files = {"file": open("test.csv", "rb")}
requests.post("https://api.example.com/upload", files=files)
51. API PUT
requests.put("https://api.example.com/user/1", json={"name": "New"})
52. API DELETE
requests.delete("https://api.example.com/user/1")
53. بررسی Content-Type
print(r.headers["Content-Type"])
54. ذخیره JSON در فایل
درخواستهای HTTP (Requests)
دریافت دادهها از وبسایتها
تجزیه HTML با BeautifulSoup
دانلود فایل و تصویر
کار با API و JSON
وباسکرپینگ پیشرفته (Session، Headers، Auth)
---
بخش ۱ – مقدمات Requests (سوال 1–20)
1. نصب کتابخانه Requests
pip install requests
2. وارد کردن Requests
import requests
3. ارسال درخواست GET
response = requests.get("https://example.com")
print(response.text)
4. وضعیت درخواست
print(response.status_code)
5. بررسی موفقیت
if response.ok:
print("Success!")
6. هدرها
print(response.headers)
7. دریافت باینری (مثل تصویر)
content = response.content
8. ذخیره در فایل
with open("page.html", "wb") as f:
f.write(response.content)
9. ارسال پارامتر در URL
params = {"q": "python"}
requests.get("https://www.google.com/search", params=params)
10. درخواست POST
data = {"username": "admin", "password": "123"}
requests.post("https://example.com/login", data=data)
11. ارسال JSON
json_data = {"name": "Ali", "age": 25}
requests.post("https://example.com/api", json=json_data)
12. هدر سفارشی
headers = {"User-Agent": "MyApp"}
requests.get("https://example.com", headers=headers)
13. Timeout
requests.get("https://example.com", timeout=5)
14. Session
s = requests.Session()
s.get("https://example.com")
15. کوکیها
print(response.cookies)
16. ارسال کوکی
cookies = {"session": "abcd"}
requests.get("https://example.com", cookies=cookies)
17. بررسی Redirect
print(response.history)
18. جلوگیری از Redirect
requests.get("https://example.com", allow_redirects=False)
19. دانلود تصویر
img = requests.get("https://example.com/image.jpg")
with open("image.jpg", "wb") as f:
f.write(img.content)
20. آپلود فایل
files = {"file": open("test.txt", "rb")}
requests.post("https://example.com/upload", files=files)
---
بخش ۲ – کار با BeautifulSoup (سوال 21–40)
21. نصب
pip install beautifulsoup4
22. وارد کردن
from bs4 import BeautifulSoup
23. ایجاد شیء Soup
soup = BeautifulSoup(response.text, "html.parser")
24. یافتن اولین تگ
print(soup.find("h1"))
25. یافتن همه تگها
print(soup.find_all("p"))
26. دسترسی به متن
print(soup.find("p").get_text())
27. دسترسی به ویژگی
print(soup.find("a")["href"])
28. جستجو با کلاس
soup.find_all("div", class_="content")
29. جستجو با id
soup.find(id="main")
30. انتخاب با CSS Selector
soup.select("div.content > p")
31. یافتن چندین نوع تگ
soup.find_all(["h1", "h2"])
32. یافتن با شرط تابع
soup.find_all(lambda tag: tag.name == "p" and "Python" in tag.text)
33. تغییر متن تگ
tag = soup.find("h1")
tag.string = "New Title"
34. حذف تگ
tag.decompose()
35. پیمایش والد
tag.parent
36. پیمایش فرزند
tag.contents
37. پیمایش خواهر
tag.find_next_sibling()
38. پیمایش قبلی
tag.find_previous_sibling()
39. یافتن لینکها
for a in soup.find_all("a", href=True):
print(a["href"])
40. ذخیره HTML تمیز
with open("clean.html", "w", encoding="utf-8") as f:
f.write(soup.prettify())
---
بخش ۳ – کار با API و JSON (سوال 41–60)
41. دریافت JSON
r = requests.get("https://api.github.com")
print(r.json())
42. ارسال JSON
requests.post("https://example.com/api", json={"id": 1})
43. پردازش JSON
data = r.json()
print(data["current_user_url"])
44. استفاده از پارامتر در API
requests.get("https://api.agify.io", params={"name": "Ali"})
45. بررسی نرخ محدودیت
print(r.headers.get("X-RateLimit-Limit"))
46. API با احراز هویت
requests.get("https://api.github.com/user", auth=("user", "pass"))
47. API با Token
headers = {"Authorization": "Bearer TOKEN"}
requests.get("https://api.example.com", headers=headers)
48. API با Session
s = requests.Session()
s.headers.update({"Authorization": "Bearer TOKEN"})
49. بررسی خطا
r.raise_for_status()
50. API POST با فایل
files = {"file": open("test.csv", "rb")}
requests.post("https://api.example.com/upload", files=files)
51. API PUT
requests.put("https://api.example.com/user/1", json={"name": "New"})
52. API DELETE
requests.delete("https://api.example.com/user/1")
53. بررسی Content-Type
print(r.headers["Content-Type"])
54. ذخیره JSON در فایل
import json
with open("data.json", "w") as f:
json.dump(r.json(), f)
55. خواندن JSON از فایل
with open("data.json") as f:
data = json.load(f)
56. تبدیل JSON به رشته
json.dumps(data)
57. تبدیل رشته به JSON
json.loads('{"a": 1}')
58. فیلتر داده API
users = [u for u in data if u["age"] > 30]
59. پردازش API در حلقه
for user in data["users"]:
print(user["name"])
60. بررسی وجود کلید
if "users" in data:
print("Users exist")
---
بخش ۴ – وباسکرپینگ پیشرفته (سوال 61–80)
61. ریکوئست با Proxy
proxies = {"http": "http://proxy.com:8080"}
requests.get("https://example.com", proxies=proxies)
62. ریکوئست HTTPS ناامن
requests.get("https://self-signed.badssl.com/", verify=False)
63. اسکرپینگ با Headers مرورگر
headers = {"User-Agent": "Mozilla/5.0"}
requests.get("https://example.com", headers=headers)
64. اسکرپینگ صفحات متعدد
for page in range(1, 6):
requests.get(f"https://example.com?page={page}")
65. دریافت و ذخیره PDF
pdf = requests.get("https://example.com/file.pdf")
with open("file.pdf", "wb") as f:
f.write(pdf.content)
66. دانلود دستهای تصاویر
urls = ["img1.jpg", "img2.jpg"]
for url in urls:
r = requests.get(url)
with open(url.split("/")[-1], "wb") as f:
f.write(r.content)
67. Session Login
s = requests.Session()
s.post("https://example.com/login", data={"u": "admin", "p": "123"})
68. استفاده از API بعد از Login
r = s.get("https://example.com/profile")
69. استخراج جدول HTML
table = soup.find("table")
70. ذخیره جدول در CSV
import csv
rows = table.find_all("tr")
with open("table.csv", "w", newline="") as f:
writer = csv.writer(f)
for row in rows:
cols = [c.text for c in row.find_all(["td", "th"])]
writer.writerow(cols)
71. شبیهسازی فرم HTML
requests.post("https://example.com/form", data={"name": "Ali"})
72. استفاده از Referer
headers = {"Referer": "https://google.com"}
73. محدودیت نرخ درخواست
import time
time.sleep(2)
74. ذخیره HTML صفحه
with open("page.html", "w", encoding="utf-8") as f:
f.write(response.text)
75. جستجوی کلمه خاص در HTML
if "Python" in response.text:
print("Found!")
76. استخراج متا تگها
meta = soup.find_all("meta")
77. استخراج عنوان صفحه
print(soup.title.string)
78. استخراج اسکریپتها
scripts = soup.find_all("script")
79. استخراج تصاویر
imgs = soup.find_all("img", src=True)
80. دانلود همه تصاویر
for img in imgs:
url = img["src"]
r = requests.get(url)
with open(url.split("/")[-1], "wb") as f:
f.write(r.content)
---
بخش ۵ – تمرینهای ترکیبی Requests + API + BeautifulSoup (سوال 81–100)
81. جستجوی کتاب در Google Books API
82. دریافت نرخ ارز از API آزاد
83. اسکرپینگ اخبار از یک سایت خبری
84. استخراج قیمتها از سایت فروشگاهی
85. دانلود عکس پروفایل کاربر از API
86. جمعآوری ایمیلها از HTML
87. ذخیره دادههای API در دیتابیس SQLite
88. دانلود و پردازش JSON هواشناسی
89. اسکرپینگ پستهای وبلاگ و ذخیره در CSV
90. استخراج لیست محصولات یک دستهبندی
91. اتصال به API تلگرام و ارسال پیام
92. دانلود و ذخیره PDF گزارش
93. استخراج لینکهای دانلود از HTML
94. ساخت کرالر برای چند صفحه
95. پردازش دادههای API و نمایش نمودار
96. استفاده از API ترجمه گوگل
97. ذخیره تصاویر API به پوشه
98. دریافت داده و ارسال دوباره به API دیگر
99. ساخت گزارش از دادههای اسکرپ شده
100. پروژه نهایی: ترکیب API + اسکرپینگ + دیتابیس
---
with open("data.json", "w") as f:
json.dump(r.json(), f)
55. خواندن JSON از فایل
with open("data.json") as f:
data = json.load(f)
56. تبدیل JSON به رشته
json.dumps(data)
57. تبدیل رشته به JSON
json.loads('{"a": 1}')
58. فیلتر داده API
users = [u for u in data if u["age"] > 30]
59. پردازش API در حلقه
for user in data["users"]:
print(user["name"])
60. بررسی وجود کلید
if "users" in data:
print("Users exist")
---
بخش ۴ – وباسکرپینگ پیشرفته (سوال 61–80)
61. ریکوئست با Proxy
proxies = {"http": "http://proxy.com:8080"}
requests.get("https://example.com", proxies=proxies)
62. ریکوئست HTTPS ناامن
requests.get("https://self-signed.badssl.com/", verify=False)
63. اسکرپینگ با Headers مرورگر
headers = {"User-Agent": "Mozilla/5.0"}
requests.get("https://example.com", headers=headers)
64. اسکرپینگ صفحات متعدد
for page in range(1, 6):
requests.get(f"https://example.com?page={page}")
65. دریافت و ذخیره PDF
pdf = requests.get("https://example.com/file.pdf")
with open("file.pdf", "wb") as f:
f.write(pdf.content)
66. دانلود دستهای تصاویر
urls = ["img1.jpg", "img2.jpg"]
for url in urls:
r = requests.get(url)
with open(url.split("/")[-1], "wb") as f:
f.write(r.content)
67. Session Login
s = requests.Session()
s.post("https://example.com/login", data={"u": "admin", "p": "123"})
68. استفاده از API بعد از Login
r = s.get("https://example.com/profile")
69. استخراج جدول HTML
table = soup.find("table")
70. ذخیره جدول در CSV
import csv
rows = table.find_all("tr")
with open("table.csv", "w", newline="") as f:
writer = csv.writer(f)
for row in rows:
cols = [c.text for c in row.find_all(["td", "th"])]
writer.writerow(cols)
71. شبیهسازی فرم HTML
requests.post("https://example.com/form", data={"name": "Ali"})
72. استفاده از Referer
headers = {"Referer": "https://google.com"}
73. محدودیت نرخ درخواست
import time
time.sleep(2)
74. ذخیره HTML صفحه
with open("page.html", "w", encoding="utf-8") as f:
f.write(response.text)
75. جستجوی کلمه خاص در HTML
if "Python" in response.text:
print("Found!")
76. استخراج متا تگها
meta = soup.find_all("meta")
77. استخراج عنوان صفحه
print(soup.title.string)
78. استخراج اسکریپتها
scripts = soup.find_all("script")
79. استخراج تصاویر
imgs = soup.find_all("img", src=True)
80. دانلود همه تصاویر
for img in imgs:
url = img["src"]
r = requests.get(url)
with open(url.split("/")[-1], "wb") as f:
f.write(r.content)
---
بخش ۵ – تمرینهای ترکیبی Requests + API + BeautifulSoup (سوال 81–100)
81. جستجوی کتاب در Google Books API
82. دریافت نرخ ارز از API آزاد
83. اسکرپینگ اخبار از یک سایت خبری
84. استخراج قیمتها از سایت فروشگاهی
85. دانلود عکس پروفایل کاربر از API
86. جمعآوری ایمیلها از HTML
87. ذخیره دادههای API در دیتابیس SQLite
88. دانلود و پردازش JSON هواشناسی
89. اسکرپینگ پستهای وبلاگ و ذخیره در CSV
90. استخراج لیست محصولات یک دستهبندی
91. اتصال به API تلگرام و ارسال پیام
92. دانلود و ذخیره PDF گزارش
93. استخراج لینکهای دانلود از HTML
94. ساخت کرالر برای چند صفحه
95. پردازش دادههای API و نمایش نمودار
96. استفاده از API ترجمه گوگل
97. ذخیره تصاویر API به پوشه
98. دریافت داده و ارسال دوباره به API دیگر
99. ساخت گزارش از دادههای اسکرپ شده
100. پروژه نهایی: ترکیب API + اسکرپینگ + دیتابیس
---
فصل رابط گرافیکی (GUI)
---
بخش ۱ – مبانی ایجاد پنجره و ویجتها (سوال 1–20)
1. ایجاد یک پنجره ساده
import tkinter as tk
root = tk.Tk()
root.mainloop()
2. تغییر عنوان پنجره
root.title("My First GUI")
3. تغییر اندازه اولیه پنجره
root.geometry("400x300")
4. اضافه کردن یک Label
label = tk.Label(root, text="Hello, Tkinter!")
label.pack()
5. تغییر رنگ متن Label
label.config(fg="red")
6. تغییر رنگ پسزمینه پنجره
root.configure(bg="lightblue")
7. اضافه کردن دکمه ساده
btn = tk.Button(root, text="Click Me")
btn.pack()
8. تعریف تابع برای دکمه
def say_hello():
print("Hello!")
btn = tk.Button(root, text="Click", command=say_hello)
btn.pack()
9. اضافه کردن ورودی متن
entry = tk.Entry(root)
entry.pack()
10. گرفتن مقدار ورودی
def show_input():
print(entry.get())
11. اضافه کردن TextBox چند خطی
text_box = tk.Text(root, height=5, width=30)
text_box.pack()
12. افزودن Checkbutton
chk_var = tk.BooleanVar()
chk = tk.Checkbutton(root, text="Accept", variable=chk_var)
chk.pack()
13. افزودن Radiobutton
r_var = tk.StringVar(value="A")
tk.Radiobutton(root, text="Option A", variable=r_var, value="A").pack()
tk.Radiobutton(root, text="Option B", variable=r_var, value="B").pack()
14. افزودن Listbox
lst = tk.Listbox(root)
lst.insert(1, "Apple")
lst.insert(2, "Banana")
lst.pack()
15. انتخاب آیتم در Listbox
def show_selected():
print(lst.get(lst.curselection()))
16. استفاده از Frame
frame = tk.Frame(root, bg="gray")
frame.pack()
17. افزودن Scrollbar
scroll = tk.Scrollbar(root)
scroll.pack(side=tk.RIGHT, fill=tk.Y)
18. تغییر آیکون پنجره
root.iconbitmap("icon.ico")
19. بستن پنجره با کد
root.destroy()
20. اجرای حلقه اصلی
root.mainloop()
---
---
بخش ۱ – مبانی ایجاد پنجره و ویجتها (سوال 1–20)
1. ایجاد یک پنجره ساده
import tkinter as tk
root = tk.Tk()
root.mainloop()
2. تغییر عنوان پنجره
root.title("My First GUI")
3. تغییر اندازه اولیه پنجره
root.geometry("400x300")
4. اضافه کردن یک Label
label = tk.Label(root, text="Hello, Tkinter!")
label.pack()
5. تغییر رنگ متن Label
label.config(fg="red")
6. تغییر رنگ پسزمینه پنجره
root.configure(bg="lightblue")
7. اضافه کردن دکمه ساده
btn = tk.Button(root, text="Click Me")
btn.pack()
8. تعریف تابع برای دکمه
def say_hello():
print("Hello!")
btn = tk.Button(root, text="Click", command=say_hello)
btn.pack()
9. اضافه کردن ورودی متن
entry = tk.Entry(root)
entry.pack()
10. گرفتن مقدار ورودی
def show_input():
print(entry.get())
11. اضافه کردن TextBox چند خطی
text_box = tk.Text(root, height=5, width=30)
text_box.pack()
12. افزودن Checkbutton
chk_var = tk.BooleanVar()
chk = tk.Checkbutton(root, text="Accept", variable=chk_var)
chk.pack()
13. افزودن Radiobutton
r_var = tk.StringVar(value="A")
tk.Radiobutton(root, text="Option A", variable=r_var, value="A").pack()
tk.Radiobutton(root, text="Option B", variable=r_var, value="B").pack()
14. افزودن Listbox
lst = tk.Listbox(root)
lst.insert(1, "Apple")
lst.insert(2, "Banana")
lst.pack()
15. انتخاب آیتم در Listbox
def show_selected():
print(lst.get(lst.curselection()))
16. استفاده از Frame
frame = tk.Frame(root, bg="gray")
frame.pack()
17. افزودن Scrollbar
scroll = tk.Scrollbar(root)
scroll.pack(side=tk.RIGHT, fill=tk.Y)
18. تغییر آیکون پنجره
root.iconbitmap("icon.ico")
19. بستن پنجره با کد
root.destroy()
20. اجرای حلقه اصلی
root.mainloop()
---
بخش ۲ – مدیریت رویدادها و Layout پیشرفته (سوال 21–40)
21. تغییر متن Label با کلیک دکمه
22. گرفتن رویداد کلیک ماوس
23. گرفتن رویداد کلید کیبورد
24. استفاده از grid برای چیدمان
25. استفاده از place برای موقعیت دقیق
26. افزودن منوی کشویی (Menu)
27. استفاده از MessageBox
28. سوال Yes/No با MessageBox
29. انتخاب رنگ با ColorChooser
30. انتخاب فایل با FileDialog
31. انتخاب چند فایل
32. انتخاب پوشه
33. باز کردن تصویر با PhotoImage
34. تغییر فونت متن
35. Tooltip ساده
36. تغییر اندازه ویجت هنگام تغییر پنجره
37. ایجاد چند پنجره (Toplevel)
38. بستن پنجره فرعی
39. غیرفعال کردن دکمه
40. فعال کردن دوباره دکمه
21. تغییر متن Label با کلیک دکمه
def change_text(): label.config(text="Text Changed!") btn = tk.Button(root, text="Change", command=change_text) btn.pack() 22. گرفتن رویداد کلیک ماوس
def on_click(event): print(f"Clicked at {event.x}, {event.y}") root.bind("<Button-1>", on_click) 23. گرفتن رویداد کلید کیبورد
def on_key(event): print("Key pressed:", event.char) root.bind("<Key>", on_key) 24. استفاده از grid برای چیدمان
tk.Label(root, text="Name").grid(row=0, column=0) tk.Entry(root).grid(row=0, column=1) 25. استفاده از place برای موقعیت دقیق
tk.Label(root, text="Fixed Position").place(x=50, y=50) 26. افزودن منوی کشویی (Menu)
menu = tk.Menu(root) root.config(menu=menu) file_menu = tk.Menu(menu, tearoff=0) menu.add_cascade(label="File", menu=file_menu) file_menu.add_command(label="Exit", command=root.quit) 27. استفاده از MessageBox
from tkinter import messagebox messagebox.showinfo("Title", "This is a message") 28. سوال Yes/No با MessageBox
if messagebox.askyesno("Confirm", "Do you agree?"): print("Yes!") 29. انتخاب رنگ با ColorChooser
from tkinter import colorchooser color = colorchooser.askcolor()[1] print(color) 30. انتخاب فایل با FileDialog
from tkinter import filedialog file_path = filedialog.askopenfilename() print(file_path) 31. انتخاب چند فایل
files = filedialog.askopenfilenames() print(files) 32. انتخاب پوشه
folder = filedialog.askdirectory() print(folder) 33. باز کردن تصویر با PhotoImage
img = tk.PhotoImage(file="image.png") tk.Label(root, image=img).pack() 34. تغییر فونت متن
import tkinter.font as tkFont label.config(font=("Arial", 16, "bold")) 35. Tooltip ساده
def show_tooltip(event): print("Tooltip: Click the button!") btn.bind("<Enter>", show_tooltip) 36. تغییر اندازه ویجت هنگام تغییر پنجره
root.columnconfigure(0, weight=1) root.rowconfigure(0, weight=1) 37. ایجاد چند پنجره (Toplevel)
win = tk.Toplevel(root) win.title("New Window") 38. بستن پنجره فرعی
win.destroy() 39. غیرفعال کردن دکمه
btn.config(state=tk.DISABLED) 40. فعال کردن دوباره دکمه
btn.config(state=tk.NORMAL)41. استفاده از Spinbox
42. گرفتن مقدار Spinbox
43. استفاده از Listbox
44. انتخاب آیتم از Listbox
45. استفاده از Canvas برای ترسیم خط
46. ترسیم دایره در Canvas
47. ترسیم مستطیل در Canvas
48. افزودن متن به Canvas
49. حرکت شیء در Canvas
50. استفاده از Progressbar
51. افزایش Progressbar
52. حالت نامحدود Progressbar
53. استفاده از Treeview
54. افزودن نوار اسکرول
55. نمایش پاپآپ منو با کلیک راست
56. تغییر رنگ پسزمینه پنجره
57. استفاده از Frame برای گروهبندی
58. افزودن ویجت به Frame
59. تغییر آیکون پنجره
60. تغییر حالت تمامصفحه
بخش ۴ – پروژههای کوچک (سوال 61–80)
61. تایمر ساده
62. ساعت دیجیتال
63. تغییر پسزمینه خودکار
64. شمارش معکوس
65. ماشین حساب ساده
66. دفترچه یادداشت ساده
67. ذخیره متن دفترچه یادداشت
68. باز کردن فایل در دفترچه یادداشت
69. تغییر متن بر اساس انتخاب منو
70. تغییر اندازه فونت Text
71. نمایش تصویر انتخابی کاربر
72. تغییر زبان برنامه
73. ایجاد دکمههای داینامیک
74. فرم ورود ساده
spin = tk.Spinbox(root, from_=0, to=10) spin.pack() 42. گرفتن مقدار Spinbox
print(spin.get()) 43. استفاده از Listbox
lb = tk.Listbox(root) lb.insert(1, "Python") lb.insert(2, "Java") lb.pack() 44. انتخاب آیتم از Listbox
def show_selected(event): print(lb.get(lb.curselection())) lb.bind("<<ListboxSelect>>", show_selected) 45. استفاده از Canvas برای ترسیم خط
canvas = tk.Canvas(root, width=200, height=200) canvas.pack() canvas.create_line(0, 0, 200, 200, fill="red", width=3) 46. ترسیم دایره در Canvas
canvas.create_oval(50, 50, 150, 150, fill="blue") 47. ترسیم مستطیل در Canvas
canvas.create_rectangle(20, 20, 100, 80, fill="green") 48. افزودن متن به Canvas
canvas.create_text(100, 100, text="Hello", font=("Arial", 14)) 49. حرکت شیء در Canvas
rect = canvas.create_rectangle(50, 50, 100, 100, fill="red") canvas.move(rect, 10, 0) 50. استفاده از Progressbar
from tkinter import ttk pb = ttk.Progressbar(root, length=200, mode="determinate") pb["value"] = 50 pb.pack() 51. افزایش Progressbar
pb["value"] += 10 52. حالت نامحدود Progressbar
pb.config(mode="indeterminate") pb.start() 53. استفاده از Treeview
tree = ttk.Treeview(root) tree["columns"] = ("one", "two") tree.heading("one", text="Column 1") tree.heading("two", text="Column 2") tree.insert("", "end", values=("A", "B")) tree.pack() 54. افزودن نوار اسکرول
scroll = tk.Scrollbar(root, orient="vertical", command=lb.yview) lb.config(yscrollcommand=scroll.set) scroll.pack(side="right", fill="y") 55. نمایش پاپآپ منو با کلیک راست
popup = tk.Menu(root, tearoff=0) popup.add_command(label="Option 1") def show_popup(event): popup.post(event.x_root, event.y_root) root.bind("<Button-3>", show_popup) 56. تغییر رنگ پسزمینه پنجره
root.config(bg="lightblue") 57. استفاده از Frame برای گروهبندی
frame = tk.Frame(root, bg="yellow", padx=10, pady=10) frame.pack() 58. افزودن ویجت به Frame
tk.Label(frame, text="Inside Frame").pack() 59. تغییر آیکون پنجره
root.iconbitmap("icon.ico") 60. تغییر حالت تمامصفحه
root.attributes("-fullscreen", True) بخش ۴ – پروژههای کوچک (سوال 61–80)
61. تایمر ساده
counter = 0 def update_timer(): global counter counter += 1 label.config(text=str(counter)) root.after(1000, update_timer) update_timer() 62. ساعت دیجیتال
import time def clock(): label.config(text=time.strftime("%H:%M:%S")) root.after(1000, clock) clock() 63. تغییر پسزمینه خودکار
colors = ["red", "blue", "green"] def change_bg(): root.config(bg=colors[counter % len(colors)]) root.after(1000, change_bg) change_bg() 64. شمارش معکوس
time_left = 10 def countdown(): global time_left if time_left > 0: time_left -= 1 label.config(text=str(time_left)) root.after(1000, countdown) countdown() 65. ماشین حساب ساده
expr = "" def press(num): global expr expr += str(num) label.config(text=expr) def equal(): global expr label.config(text=str(eval(expr))) expr = "" 66. دفترچه یادداشت ساده
text_area = tk.Text(root) text_area.pack() 67. ذخیره متن دفترچه یادداشت
def save_file(): with open("note.txt", "w") as f: f.write(text_area.get("1.0", tk.END)) 68. باز کردن فایل در دفترچه یادداشت
def open_file(): with open("note.txt") as f: text_area.delete("1.0", tk.END) text_area.insert(tk.END, f.read()) 69. تغییر متن بر اساس انتخاب منو
def set_text(): label.config(text="Menu Selected") file_menu.add_command(label="Set Text", command=set_text) 70. تغییر اندازه فونت Text
text_area.config(font=("Arial", 14)) 71. نمایش تصویر انتخابی کاربر
path = filedialog.askopenfilename() img = tk.PhotoImage(file=path) tk.Label(root, image=img).pack() 72. تغییر زبان برنامه
lang = tk.StringVar(value="English") tk.OptionMenu(root, lang, "English", "Persian", "Arabic").pack() 73. ایجاد دکمههای داینامیک
for i in range(5): tk.Button(root, text=f"Button {i}").pack() 74. فرم ورود ساده
tk.Label(root, text="Username").pack() username = tk.Entry(root) username.pack() tk.Label(root, text="Password").pack() password = tk.Entry(root, show="*") password.pack()75. بررسی ورود کاربر
76. اسلایدشو تصویر
77. کشیدن با ماوس روی Canvas
78. بازی کلیک سریع
79. نمایش پیشرفت تایمر در Progressbar
80. دکمه تغییر حالت تاریک/روشن
بخش ۵ – پروژههای کامل (سوال 81–100)
81. بازی حدس عدد
82. بازی حرکت دکمه فرار
83. تایمر Pomodoro
84. برنامه مدیریت کارها (To-Do List)
85. جستجوی فایل در پوشه و نمایش
86. ساخت گالری عکس
87. ماشین حساب علمی
88. برنامه ثبت هزینهها
89. نمایش آبوهوا (API)
90. ساخت چتروم ساده (Socket)
91. نمایش PDF در Tkinter
92. ادغام PDF با دکمه
93. ارسال ایمیل از طریق Tkinter
94. اجرای دستورات ترمینال
95. برنامه مدیریت رمز عبور
96. بازی مار با Tkinter
97. بازی پینگ پنگ
98. پخش موزیک
99. ویرایش تصویر (PIL)
100. خروج از برنامه با کلید Esc
def login(): if username.get() == "admin" and password.get() == "123": messagebox.showinfo("Login", "Welcome!") 76. اسلایدشو تصویر
images = ["img1.png", "img2.png"] index = 0 def slideshow(): global index img = tk.PhotoImage(file=images[index]) label.config(image=img) label.image = img index = (index + 1) % len(images) root.after(2000, slideshow) slideshow() 77. کشیدن با ماوس روی Canvas
def paint(event): x1, y1 = (event.x - 2), (event.y - 2) x2, y2 = (event.x + 2), (event.y + 2) canvas.create_oval(x1, y1, x2, y2, fill="black") canvas.bind("<B1-Motion>", paint) 78. بازی کلیک سریع
score = 0 def click_game(): global score score += 1 label.config(text=str(score)) 79. نمایش پیشرفت تایمر در Progressbar
pb["value"] = (counter / 10) * 100 80. دکمه تغییر حالت تاریک/روشن
def toggle_theme(): current = root.cget("bg") root.config(bg="black" if current != "black" else "white") بخش ۵ – پروژههای کامل (سوال 81–100)
81. بازی حدس عدد
import random number = random.randint(1, 10) def guess(): if int(entry.get()) == number: messagebox.showinfo("Win", "Correct!") 82. بازی حرکت دکمه فرار
def move_btn(event): btn.place(x=random.randint(0, 300), y=random.randint(0, 300)) btn.bind("<Enter>", move_btn) 83. تایمر Pomodoro
work_time = 25*60 84. برنامه مدیریت کارها (To-Do List)
tasks = [] 85. جستجوی فایل در پوشه و نمایش
from pathlib import Path 86. ساخت گالری عکس
# مشابه اسلایدشو 87. ماشین حساب علمی
import math 88. برنامه ثبت هزینهها
expenses = [] 89. نمایش آبوهوا (API)
import requests 90. ساخت چتروم ساده (Socket)
import socket 91. نمایش PDF در Tkinter
import fitz 92. ادغام PDF با دکمه
import PyPDF2 93. ارسال ایمیل از طریق Tkinter
import smtplib 94. اجرای دستورات ترمینال
import subprocess 95. برنامه مدیریت رمز عبور
import hashlib 96. بازی مار با Tkinter
# canvas + after 97. بازی پینگ پنگ
# canvas + حرکت توپ 98. پخش موزیک
import pygame 99. ویرایش تصویر (PIL)
from PIL import Image 100. خروج از برنامه با کلید Esc
root.bind("<Escape>", lambda e: root.quit())فصل هوش مصنوعی و یادگیری ماشین/عمیق
---
بخش ۱: مبانی هوش مصنوعی و داده (سوال 1–20)
1. ایجاد یک آرایه ساده با NumPy
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
2. ایجاد آرایه صفرها و یکها
import numpy as np
zeros = np.zeros((3, 3))
ones = np.ones((2, 4))
print(zeros)
print(ones)
3. ایجاد آرایه با مقادیر تصادفی
import numpy as np
rand_arr = np.random.rand(3, 3)
print(rand_arr)
4. ایجاد آرایه با مقادیر عددی پشت سر هم
import numpy as np
seq = np.arange(0, 10, 2)
print(seq)
5. تغییر شکل (reshape) آرایه
import numpy as np
arr = np.arange(12).reshape(3, 4)
print(arr)
6. محاسبه میانگین، ماکسیمم و مینیمم
import numpy as np
arr = np.array([5, 8, 2, 9])
print(arr.mean(), arr.max(), arr.min())
7. محاسبه انحراف معیار و واریانس
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr.std(), arr.var())
8. خواندن یک فایل CSV با Pandas
import pandas as pd
df = pd.read_csv("data.csv")
print(df.head())
9. نمایش اطلاعات کلی DataFrame
import pandas as pd
df = pd.read_csv("data.csv")
print(df.info())
10. نمایش آمار توصیفی دادهها
import pandas as pd
df = pd.read_csv("data.csv")
print(df.describe())
11. انتخاب یک ستون خاص
import pandas as pd
df = pd.read_csv("data.csv")
print(df["Age"])
12. انتخاب چند ستون خاص
import pandas as pd
df = pd.read_csv("data.csv")
print(df[["Name", "Age"]])
13. فیلتر کردن ردیفها با شرط
import pandas as pd
df = pd.read_csv("data.csv")
print(df[df["Age"] > 30])
14. مرتبسازی دادهها بر اساس یک ستون
import pandas as pd
df = pd.read_csv("data.csv")
print(df.sort_values("Age"))
15. پر کردن مقادیر گمشده با مقدار خاص
import pandas as pd
df = pd.read_csv("data.csv")
df.fillna(0, inplace=True)
print(df)
16. حذف ردیفهایی با مقادیر گمشده
import pandas as pd
df = pd.read_csv("data.csv")
df.dropna(inplace=True)
print(df)
17. تغییر نام ستونها
import pandas as pd
df = pd.read_csv("data.csv")
df.rename(columns={"Age": "Years"}, inplace=True)
print(df)
18. ایجاد یک ستون جدید بر اساس محاسبات
import pandas as pd
df = pd.read_csv("data.csv")
df["Age_plus_5"] = df["Age"] + 5
print(df)
19. ذخیره DataFrame به CSV
import pandas as pd
df = pd.read_csv("data.csv")
df.to_csv("new_data.csv", index=False)
20. ترکیب دو DataFrame
import pandas as pd
df1 = pd.DataFrame({"Name": ["Ali", "Sara"], "Age": [25, 30]})
df2 = pd.DataFrame({"Name": ["Reza", "Mina"], "Age": [22, 35]})
merged = pd.concat([df1, df2])
print(merged)
---
---
بخش ۱: مبانی هوش مصنوعی و داده (سوال 1–20)
1. ایجاد یک آرایه ساده با NumPy
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
2. ایجاد آرایه صفرها و یکها
import numpy as np
zeros = np.zeros((3, 3))
ones = np.ones((2, 4))
print(zeros)
print(ones)
3. ایجاد آرایه با مقادیر تصادفی
import numpy as np
rand_arr = np.random.rand(3, 3)
print(rand_arr)
4. ایجاد آرایه با مقادیر عددی پشت سر هم
import numpy as np
seq = np.arange(0, 10, 2)
print(seq)
5. تغییر شکل (reshape) آرایه
import numpy as np
arr = np.arange(12).reshape(3, 4)
print(arr)
6. محاسبه میانگین، ماکسیمم و مینیمم
import numpy as np
arr = np.array([5, 8, 2, 9])
print(arr.mean(), arr.max(), arr.min())
7. محاسبه انحراف معیار و واریانس
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr.std(), arr.var())
8. خواندن یک فایل CSV با Pandas
import pandas as pd
df = pd.read_csv("data.csv")
print(df.head())
9. نمایش اطلاعات کلی DataFrame
import pandas as pd
df = pd.read_csv("data.csv")
print(df.info())
10. نمایش آمار توصیفی دادهها
import pandas as pd
df = pd.read_csv("data.csv")
print(df.describe())
11. انتخاب یک ستون خاص
import pandas as pd
df = pd.read_csv("data.csv")
print(df["Age"])
12. انتخاب چند ستون خاص
import pandas as pd
df = pd.read_csv("data.csv")
print(df[["Name", "Age"]])
13. فیلتر کردن ردیفها با شرط
import pandas as pd
df = pd.read_csv("data.csv")
print(df[df["Age"] > 30])
14. مرتبسازی دادهها بر اساس یک ستون
import pandas as pd
df = pd.read_csv("data.csv")
print(df.sort_values("Age"))
15. پر کردن مقادیر گمشده با مقدار خاص
import pandas as pd
df = pd.read_csv("data.csv")
df.fillna(0, inplace=True)
print(df)
16. حذف ردیفهایی با مقادیر گمشده
import pandas as pd
df = pd.read_csv("data.csv")
df.dropna(inplace=True)
print(df)
17. تغییر نام ستونها
import pandas as pd
df = pd.read_csv("data.csv")
df.rename(columns={"Age": "Years"}, inplace=True)
print(df)
18. ایجاد یک ستون جدید بر اساس محاسبات
import pandas as pd
df = pd.read_csv("data.csv")
df["Age_plus_5"] = df["Age"] + 5
print(df)
19. ذخیره DataFrame به CSV
import pandas as pd
df = pd.read_csv("data.csv")
df.to_csv("new_data.csv", index=False)
20. ترکیب دو DataFrame
import pandas as pd
df1 = pd.DataFrame({"Name": ["Ali", "Sara"], "Age": [25, 30]})
df2 = pd.DataFrame({"Name": ["Reza", "Mina"], "Age": [22, 35]})
merged = pd.concat([df1, df2])
print(merged)
---
---
بخش ۲: NumPy و Pandas پیشرفته (سوال 21–40)
21. انتخاب یک بخش خاص از آرایه (Slicing)
import numpy as np
arr = np.arange(10)
print(arr[2:7])
22. انتخاب سطر و ستون خاص از ماتریس
import numpy as np
arr = np.arange(1, 10).reshape(3, 3)
print(arr[1, 2]) # سطر دوم، ستون سوم
23. عملیات جمع و ضرب عنصر به عنصر
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b)
print(a * b)
24. ضرب ماتریسی
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print(np.dot(a, b))
25. ترانهاده (Transpose) یک ماتریس
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.T)
26. انتخاب دادهها با ماسک شرطی
import numpy as np
arr = np.arange(10)
print(arr[arr > 5])
27. جایگزینی مقادیر بر اساس شرط
import numpy as np
arr = np.arange(10)
arr[arr < 5] = 0
print(arr)
28. پیدا کردن اندیس بیشترین مقدار
import numpy as np
arr = np.array([10, 20, 5, 40])
print(np.argmax(arr))
29. پیدا کردن اندیس کمترین مقدار
import numpy as np
arr = np.array([10, 20, 5, 40])
print(np.argmin(arr))
30. ذخیره و بارگذاری آرایه NumPy
import numpy as np
arr = np.arange(5)
np.save("array.npy", arr)
loaded = np.load("array.npy")
print(loaded)
31. گروهبندی دادهها در Pandas
import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara", "Ali"], "Score": [90, 85, 95]})
print(df.groupby("Name").mean())
32. شمارش تعداد هر مقدار در یک ستون
import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara", "Ali", "Mina"]})
print(df["Name"].value_counts())
33. ادغام دو جدول بر اساس ستون مشترک
import pandas as pd
df1 = pd.DataFrame({"ID": [1, 2], "Name": ["Ali", "Sara"]})
df2 = pd.DataFrame({"ID": [1, 2], "Score": [90, 85]})
merged = pd.merge(df1, df2, on="ID")
print(merged)
34. تبدیل ستون به نوع داده جدید
import pandas as pd
df = pd.DataFrame({"Age": ["25", "30", "35"]})
df["Age"] = df["Age"].astype(int)
print(df)
35. انتخاب سطر با اندیس خاص
import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara", "Mina"]})
print(df.iloc[1])
36. تغییر اندیس DataFrame
import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara"], "Age": [25, 30]})
df.index = ["A", "B"]
print(df)
37. ادغام دادهها با append
import pandas as pd
df1 = pd.DataFrame({"Name": ["Ali"], "Age": [25]})
df2 = pd.DataFrame({"Name": ["Sara"], "Age": [30]})
print(df1.append(df2, ignore_index=True))
38. Pivot Table در Pandas
import pandas as pd
df = pd.DataFrame({
"Name": ["Ali", "Sara", "Ali"],
"Subject": ["Math", "Math", "English"],
"Score": [90, 85, 95]
})
print(df.pivot_table(values="Score", index="Name", columns="Subject"))
39. ذخیره DataFrame به Excel
import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara"], "Age": [25, 30]})
df.to_excel("data.xlsx", index=False)
40. خواندن فایل Excel
import pandas as pd
df = pd.read_excel("data.xlsx")
print(df)
بخش ۲: NumPy و Pandas پیشرفته (سوال 21–40)
21. انتخاب یک بخش خاص از آرایه (Slicing)
import numpy as np
arr = np.arange(10)
print(arr[2:7])
22. انتخاب سطر و ستون خاص از ماتریس
import numpy as np
arr = np.arange(1, 10).reshape(3, 3)
print(arr[1, 2]) # سطر دوم، ستون سوم
23. عملیات جمع و ضرب عنصر به عنصر
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b)
print(a * b)
24. ضرب ماتریسی
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print(np.dot(a, b))
25. ترانهاده (Transpose) یک ماتریس
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.T)
26. انتخاب دادهها با ماسک شرطی
import numpy as np
arr = np.arange(10)
print(arr[arr > 5])
27. جایگزینی مقادیر بر اساس شرط
import numpy as np
arr = np.arange(10)
arr[arr < 5] = 0
print(arr)
28. پیدا کردن اندیس بیشترین مقدار
import numpy as np
arr = np.array([10, 20, 5, 40])
print(np.argmax(arr))
29. پیدا کردن اندیس کمترین مقدار
import numpy as np
arr = np.array([10, 20, 5, 40])
print(np.argmin(arr))
30. ذخیره و بارگذاری آرایه NumPy
import numpy as np
arr = np.arange(5)
np.save("array.npy", arr)
loaded = np.load("array.npy")
print(loaded)
31. گروهبندی دادهها در Pandas
import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara", "Ali"], "Score": [90, 85, 95]})
print(df.groupby("Name").mean())
32. شمارش تعداد هر مقدار در یک ستون
import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara", "Ali", "Mina"]})
print(df["Name"].value_counts())
33. ادغام دو جدول بر اساس ستون مشترک
import pandas as pd
df1 = pd.DataFrame({"ID": [1, 2], "Name": ["Ali", "Sara"]})
df2 = pd.DataFrame({"ID": [1, 2], "Score": [90, 85]})
merged = pd.merge(df1, df2, on="ID")
print(merged)
34. تبدیل ستون به نوع داده جدید
import pandas as pd
df = pd.DataFrame({"Age": ["25", "30", "35"]})
df["Age"] = df["Age"].astype(int)
print(df)
35. انتخاب سطر با اندیس خاص
import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara", "Mina"]})
print(df.iloc[1])
36. تغییر اندیس DataFrame
import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara"], "Age": [25, 30]})
df.index = ["A", "B"]
print(df)
37. ادغام دادهها با append
import pandas as pd
df1 = pd.DataFrame({"Name": ["Ali"], "Age": [25]})
df2 = pd.DataFrame({"Name": ["Sara"], "Age": [30]})
print(df1.append(df2, ignore_index=True))
38. Pivot Table در Pandas
import pandas as pd
df = pd.DataFrame({
"Name": ["Ali", "Sara", "Ali"],
"Subject": ["Math", "Math", "English"],
"Score": [90, 85, 95]
})
print(df.pivot_table(values="Score", index="Name", columns="Subject"))
39. ذخیره DataFrame به Excel
import pandas as pd
df = pd.DataFrame({"Name": ["Ali", "Sara"], "Age": [25, 30]})
df.to_excel("data.xlsx", index=False)
40. خواندن فایل Excel
import pandas as pd
df = pd.read_excel("data.xlsx")
print(df)
(سوال 41–100) و اینطوری کامل میشه.
بخش ۳: مصورسازی دادهها (Matplotlib / Seaborn) — سوال 41–60
41. رسم یک نمودار خطی ساده
42. تغییر رنگ و سبک خط
43. افزودن عنوان و برچسب محورها
44. رسم چند خط در یک نمودار
45. رسم نمودار میلهای (Bar Chart)
46. نمودار میلهای افقی
47. رسم نمودار دایرهای (Pie Chart)
48. رسم نمودار Scatter
49. تغییر اندازه شکل
50. ذخیره نمودار به فایل
51. استفاده از Seaborn برای نمودار خطی
52. نمودار Scatter با Seaborn
53. نمودار جعبهای (Boxplot)
54. نمودار Histogram
55. Heatmap با Seaborn
56. Pairplot در Seaborn
57. اضافه کردن رنگبندی به نمودار میلهای
58. رسم KDE Plot
59. رسم نمودار با DataFrame مستقیم
60. ذخیره نمودار Seaborn
بخش ۴: مقدمات یادگیری ماشین (scikit-learn) — سوال 61–80
61. نصب scikit-learn
62. وارد کردن کتابخانههای پایه
63. ساخت داده نمونه با NumPy
64. تقسیم داده به آموزش و تست
65. ایجاد مدل رگرسیون خطی و آموزش
66. پیشبینی مقادیر
67. محاسبه دقت مدل
68. مدل طبقهبندی با Logistic Regression
69. استفاده از Decision Tree
70. رسم درخت تصمیم
71. مدل Random Forest
72. نرمالسازی دادهها
73. استانداردسازی دادهها
74. استفاده از KNN
75. مدل SVM
76. Confusion Matrix
77. Classification Report
بخش ۳: مصورسازی دادهها (Matplotlib / Seaborn) — سوال 41–60
41. رسم یک نمودار خطی ساده
import matplotlib.pyplot as plt x = [1, 2, 3, 4] y = [1, 4, 9, 16] plt.plot(x, y) plt.show() 42. تغییر رنگ و سبک خط
plt.plot(x, y, color='red', linestyle='--', marker='o') plt.show() 43. افزودن عنوان و برچسب محورها
plt.plot(x, y) plt.title("My Chart") plt.xlabel("X Axis") plt.ylabel("Y Axis") plt.show() 44. رسم چند خط در یک نمودار
plt.plot(x, y, label="Squared") plt.plot(x, [i**3 for i in x], label="Cubed") plt.legend() plt.show() 45. رسم نمودار میلهای (Bar Chart)
plt.bar(["A", "B", "C"], [3, 7, 5]) plt.show() 46. نمودار میلهای افقی
plt.barh(["A", "B", "C"], [3, 7, 5]) plt.show() 47. رسم نمودار دایرهای (Pie Chart)
plt.pie([30, 50, 20], labels=["A", "B", "C"], autopct="%1.1f%%") plt.show() 48. رسم نمودار Scatter
plt.scatter([5, 7, 8], [7, 8, 6]) plt.show() 49. تغییر اندازه شکل
plt.figure(figsize=(8, 5)) plt.plot(x, y) plt.show() 50. ذخیره نمودار به فایل
plt.plot(x, y) plt.savefig("chart.png") 51. استفاده از Seaborn برای نمودار خطی
import seaborn as sns sns.lineplot(x=[1, 2, 3], y=[4, 5, 6]) plt.show() 52. نمودار Scatter با Seaborn
sns.scatterplot(x=[5, 7, 8], y=[7, 8, 6]) plt.show() 53. نمودار جعبهای (Boxplot)
sns.boxplot(x=[7, 8, 5, 6, 9]) plt.show() 54. نمودار Histogram
sns.histplot([1, 2, 2, 3, 3, 3, 4]) plt.show() 55. Heatmap با Seaborn
import numpy as np data = np.random.rand(3, 3) sns.heatmap(data, annot=True) plt.show() 56. Pairplot در Seaborn
import pandas as pd df = sns.load_dataset("iris") sns.pairplot(df, hue="species") plt.show() 57. اضافه کردن رنگبندی به نمودار میلهای
sns.barplot(x=["A", "B", "C"], y=[3, 7, 5], palette="coolwarm") plt.show() 58. رسم KDE Plot
sns.kdeplot([1, 2, 2, 3, 4, 5]) plt.show() 59. رسم نمودار با DataFrame مستقیم
df = pd.DataFrame({"x": [1, 2, 3], "y": [4, 5, 6]}) sns.lineplot(data=df, x="x", y="y") plt.show() 60. ذخیره نمودار Seaborn
plot = sns.lineplot(x=[1, 2, 3], y=[4, 5, 6]) plt.savefig("seaborn_chart.png") بخش ۴: مقدمات یادگیری ماشین (scikit-learn) — سوال 61–80
61. نصب scikit-learn
pip install scikit-learn 62. وارد کردن کتابخانههای پایه
from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression 63. ساخت داده نمونه با NumPy
import numpy as np X = np.array([[1], [2], [3], [4]]) y = np.array([2, 4, 6, 8]) 64. تقسیم داده به آموزش و تست
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25) 65. ایجاد مدل رگرسیون خطی و آموزش
model = LinearRegression() model.fit(X_train, y_train) 66. پیشبینی مقادیر
predictions = model.predict(X_test) print(predictions) 67. محاسبه دقت مدل
print(model.score(X_test, y_test)) 68. مدل طبقهبندی با Logistic Regression
from sklearn.linear_model import LogisticRegression X = [[0, 0], [1, 1]] y = [0, 1] clf = LogisticRegression().fit(X, y) print(clf.predict([[2, 2]])) 69. استفاده از Decision Tree
from sklearn.tree import DecisionTreeClassifier clf = DecisionTreeClassifier().fit(X, y) 70. رسم درخت تصمیم
from sklearn import tree tree.plot_tree(clf) plt.show() 71. مدل Random Forest
from sklearn.ensemble import RandomForestClassifier clf = RandomForestClassifier().fit(X, y) 72. نرمالسازی دادهها
from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() X_scaled = scaler.fit_transform(X) 73. استانداردسازی دادهها
from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_std = scaler.fit_transform(X) 74. استفاده از KNN
from sklearn.neighbors import KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=3).fit(X, y) 75. مدل SVM
from sklearn import svm clf = svm.SVC().fit(X, y) 76. Confusion Matrix
from sklearn.metrics import confusion_matrix print(confusion_matrix(y_test, model.predict(X_test))) 77. Classification Report
from sklearn.metrics import classification_report print(classification_report(y_test, model.predict(X_test))) 78. Cross Validation
from sklearn.model_selection import cross_val_score scores = cross_val_score(model, X, y, cv=5) print(scores) 79. Grid Search برای پیدا کردن بهترین پارامتر
from sklearn.model_selection import GridSearchCV param_grid = {'n_neighbors': [3, 5, 7]} grid = GridSearchCV(KNeighborsClassifier(), param_grid, cv=5) grid.fit(X, y) 80. ذخیره مدل آموزشدیده
import joblib joblib.dump(model, "model.pkl") بخش ۵: یادگیری عمیق با Keras / TensorFlow — سوال 81–100
81. نصب TensorFlow
pip install tensorflow 82. وارد کردن Keras
from tensorflow import keras from tensorflow.keras import layers 83. ساخت مدل Sequential
model = keras.Sequential([ layers.Dense(64, activation="relu"), layers.Dense(1) ]) 84. کامپایل مدل
model.compile(optimizer="adam", loss="mse") 85. تولید داده نمونه
import numpy as np X = np.random.rand(100, 3) y = np.random.rand(100, 1) 86. آموزش مدل
model.fit(X, y, epochs=10) 87. پیشبینی با مدل
print(model.predict(X[:5])) 88. ذخیره مدل
model.save("my_model.h5") 89. بارگذاری مدل ذخیرهشده
loaded_model = keras.models.load_model("my_model.h5") 90. افزودن Dropout برای جلوگیری از overfitting
model = keras.Sequential([ layers.Dense(64, activation="relu"), layers.Dropout(0.5), layers.Dense(1) ]) 91. استفاده از تابع فعالسازی sigmoid
layers.Dense(1, activation="sigmoid") 92. مدل طبقهبندی دودویی
model.compile(optimizer="adam", loss="binary_crossentropy", metrics=["accuracy"]) 93. مدل طبقهبندی چندکلاسه
model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"]) 94. استفاده از EarlyStopping
callback = keras.callbacks.EarlyStopping(monitor="loss", patience=3) model.fit(X, y, epochs=50, callbacks=[callback]) 95. ایجاد شبکه کانولوشنی (CNN)
model = keras.Sequential([ layers.Conv2D(32, (3, 3), activation="relu", input_shape=(28, 28, 1)), layers.MaxPooling2D((2, 2)), layers.Flatten(), layers.Dense(64, activation="relu"), layers.Dense(10, activation="softmax") ]) 96. آموزش مدل CNN با داده MNIST
from tensorflow.keras.datasets import mnist (X_train, y_train), (X_test, y_test) = mnist.load_data() X_train = X_train.reshape(-1, 28, 28, 1) / 255.0 X_test = X_test.reshape(-1, 28, 28, 1) / 255.0 97. One-hot encoding برچسبها
y_train = keras.utils.to_categorical(y_train, 10) y_test = keras.utils.to_categorical(y_test, 10) 98. آموزش مدل
model.fit(X_train, y_train, epochs=5, validation_data=(X_test, y_test)) 99. ارزیابی مدل
model.evaluate(X_test, y_test) 100. پیشبینی و نمایش خروجی
import numpy as np pred = model.predict(X_test[:1]) print(np.argmax(pred))فصل بعد: پردازش تصویر با OpenCV
---
بخش ۱ – شروع کار با OpenCV (سوال 1 تا 20)
1. نصب OpenCV در پایتون
pip install opencv-python
2. وارد کردن کتابخانه OpenCV
import cv2
3. خواندن یک تصویر از فایل
img = cv2.imread("image.jpg")
4. نمایش تصویر در پنجره
cv2.imshow("My Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
5. تغییر اندازه تصویر
resized = cv2.resize(img, (300, 200))
6. ذخیره تصویر در فایل جدید
cv2.imwrite("new_image.jpg", resized)
7. خواندن تصویر به صورت سیاه و سفید
gray = cv2.imread("image.jpg", cv2.IMREAD_GRAYSCALE)
8. گرفتن اطلاعات ابعاد تصویر
height, width, channels = img.shape
9. بریدن (Crop) تصویر
crop = img[50:200, 100:300]
10. چرخاندن تصویر
rotated = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)
11. وارونه کردن تصویر افقی
flipped = cv2.flip(img, 1)
12. وارونه کردن تصویر عمودی
flipped = cv2.flip(img, 0)
13. تبدیل تصویر رنگی به خاکستری
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
14. اعمال فیلتر Gaussian Blur
blur = cv2.GaussianBlur(img, (5, 5), 0)
15. اعمال فیلتر Median Blur
median = cv2.medianBlur(img, 5)
16. تشخیص لبهها با Canny
edges = cv2.Canny(img, 100, 200)
17. تغییر فضای رنگ به HSV
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
18. رسم یک خط روی تصویر
cv2.line(img, (0,0), (100,100), (255,0,0), 3)
19. رسم یک دایره روی تصویر
cv2.circle(img, (150,150), 50, (0,255,0), -1)
20. نوشتن متن روی تصویر
cv2.putText(img, "Hello", (50,50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,255), 2)
---
بخش ۱ – شروع کار با OpenCV (سوال 1 تا 20)
1. نصب OpenCV در پایتون
pip install opencv-python
2. وارد کردن کتابخانه OpenCV
import cv2
3. خواندن یک تصویر از فایل
img = cv2.imread("image.jpg")
4. نمایش تصویر در پنجره
cv2.imshow("My Image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
5. تغییر اندازه تصویر
resized = cv2.resize(img, (300, 200))
6. ذخیره تصویر در فایل جدید
cv2.imwrite("new_image.jpg", resized)
7. خواندن تصویر به صورت سیاه و سفید
gray = cv2.imread("image.jpg", cv2.IMREAD_GRAYSCALE)
8. گرفتن اطلاعات ابعاد تصویر
height, width, channels = img.shape
9. بریدن (Crop) تصویر
crop = img[50:200, 100:300]
10. چرخاندن تصویر
rotated = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)
11. وارونه کردن تصویر افقی
flipped = cv2.flip(img, 1)
12. وارونه کردن تصویر عمودی
flipped = cv2.flip(img, 0)
13. تبدیل تصویر رنگی به خاکستری
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
14. اعمال فیلتر Gaussian Blur
blur = cv2.GaussianBlur(img, (5, 5), 0)
15. اعمال فیلتر Median Blur
median = cv2.medianBlur(img, 5)
16. تشخیص لبهها با Canny
edges = cv2.Canny(img, 100, 200)
17. تغییر فضای رنگ به HSV
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
18. رسم یک خط روی تصویر
cv2.line(img, (0,0), (100,100), (255,0,0), 3)
19. رسم یک دایره روی تصویر
cv2.circle(img, (150,150), 50, (0,255,0), -1)
20. نوشتن متن روی تصویر
cv2.putText(img, "Hello", (50,50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,255), 2)
بخش ۲ – پردازش پیشرفته تصویر (21–50)
21. تبدیل تصویر به بلور با فیلتر Gaussian با کرنل بزرگتر
blur = cv2.GaussianBlur(img, (15, 15), 0)
22. تبدیل تصویر به بلور با فیلتر Bilateral
bilateral = cv2.bilateralFilter(img, 9, 75, 75)
23. تبدیل تصویر به تصویر باینری با Thresholding
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
24. استفاده از Adaptive Thresholding
adaptive = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY, 11, 2)
25. یافتن کانتورهای تصویر
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
26. رسم کانتورها روی تصویر
cv2.drawContours(img, contours, -1, (0,255,0), 3)
27. اعمال تبدیل مورفولوژیک (Erosion)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5))
eroded = cv2.erode(thresh, kernel, iterations=1)
28. اعمال تبدیل مورفولوژیک (Dilation)
dilated = cv2.dilate(thresh, kernel, iterations=1)
29. باز و بسته کردن (Opening & Closing)
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel)
closing = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)
30. اعمال تبدیل Sobel برای تشخیص لبهها
sobelx = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=5)
31. تشخیص لبه با Laplacian
laplacian = cv2.Laplacian(gray, cv2.CV_64F)
32. ترکیب دو تصویر با Weighted Sum
added = cv2.addWeighted(img1, 0.7, img2, 0.3, 0)
33. ماسک کردن تصویر با Threshold
mask = cv2.inRange(hsv, (0, 50, 50), (10, 255, 255))
res = cv2.bitwise_and(img, img, mask=mask)
34. تبدیل تصویر به تصویر Negative
negative = 255 - img
35. پیدا کردن مرکز کانتور
M = cv2.moments(contours[0])
cx = int(M['m10']/M['m00'])
cy = int(M['m01']/M['m00'])
36. رسم مستطیل دور کانتور
x, y, w, h = cv2.boundingRect(contours[0])
cv2.rectangle(img, (x,y), (x+w, y+h), (0,0,255), 2)
37. رسم دایره دور کانتور حداقلی
(x, y), radius = cv2.minEnclosingCircle(contours[0])
cv2.circle(img, (int(x), int(y)), int(radius), (255,0,0), 2)
38. approxPolyDP برای سادهسازی کانتور
epsilon = 0.01 * cv2.arcLength(contours[0], True)
approx = cv2.approxPolyDP(contours[0], epsilon, True)
39. شمارش تعداد اشکال در تصویر
print(len(contours))
40. تبدیل تصویر به تصویر 1 کاناله سیاه و سفید (Binary)
ret, binary = cv2.threshold(gray, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
41. یافتن خطوط با Hough Transform
lines = cv2.HoughLines(edges, 1, np.pi/180, 200)
42. یافتن دایرهها با Hough Circle
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=30, minRadius=0, maxRadius=0)
43. Warp تصویر (Perspective Transform)
pts1 = np.float32([[0,0],[w,0],[0,h],[w,h]])
pts2 = np.float32([[0,0],[w,0],[50,h],[w-50,h]])
matrix = cv2.getPerspectiveTransform(pts1, pts2)
dst = cv2.warpPerspective(img, matrix, (w,h))
44. Affine Transform برای چرخش و انتقال تصویر
pts1 = np.float32([[50,50],[200,50],[50,200]])
pts2 = np.float32([[10,100],[200,50],[100,250]])
matrix = cv2.getAffineTransform(pts1, pts2)
dst = cv2.warpAffine(img, matrix, (cols, rows))
45. Histogram تصویر
hist = cv2.calcHist([gray], [0], None, [256], [0,256])
46. برابر سازی Histogram (Histogram Equalization)
equalized = cv2.equalizeHist(gray)
47. تبدیل تصویر به تصویر HSV و جدا کردن کانالها
h,s,v = cv2.split(hsv)
48. ادغام کانالها
merged = cv2.merge([h,s,v])
49. رسم مستطیل و متن روی تصویر با حلقه
for i, cnt in enumerate(contours):
x,y,w,h = cv2.boundingRect(cnt)
cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2)
cv2.putText(img, str(i), (x,y-5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0,0,255),1)
50. چسباندن (Stack) دو تصویر کنار هم
stacked = np.hstack((img1, img2))
cv2.imshow("Stacked", stacked)
---
21. تبدیل تصویر به بلور با فیلتر Gaussian با کرنل بزرگتر
blur = cv2.GaussianBlur(img, (15, 15), 0)
22. تبدیل تصویر به بلور با فیلتر Bilateral
bilateral = cv2.bilateralFilter(img, 9, 75, 75)
23. تبدیل تصویر به تصویر باینری با Thresholding
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
24. استفاده از Adaptive Thresholding
adaptive = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY, 11, 2)
25. یافتن کانتورهای تصویر
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
26. رسم کانتورها روی تصویر
cv2.drawContours(img, contours, -1, (0,255,0), 3)
27. اعمال تبدیل مورفولوژیک (Erosion)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5))
eroded = cv2.erode(thresh, kernel, iterations=1)
28. اعمال تبدیل مورفولوژیک (Dilation)
dilated = cv2.dilate(thresh, kernel, iterations=1)
29. باز و بسته کردن (Opening & Closing)
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel)
closing = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)
30. اعمال تبدیل Sobel برای تشخیص لبهها
sobelx = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=5)
31. تشخیص لبه با Laplacian
laplacian = cv2.Laplacian(gray, cv2.CV_64F)
32. ترکیب دو تصویر با Weighted Sum
added = cv2.addWeighted(img1, 0.7, img2, 0.3, 0)
33. ماسک کردن تصویر با Threshold
mask = cv2.inRange(hsv, (0, 50, 50), (10, 255, 255))
res = cv2.bitwise_and(img, img, mask=mask)
34. تبدیل تصویر به تصویر Negative
negative = 255 - img
35. پیدا کردن مرکز کانتور
M = cv2.moments(contours[0])
cx = int(M['m10']/M['m00'])
cy = int(M['m01']/M['m00'])
36. رسم مستطیل دور کانتور
x, y, w, h = cv2.boundingRect(contours[0])
cv2.rectangle(img, (x,y), (x+w, y+h), (0,0,255), 2)
37. رسم دایره دور کانتور حداقلی
(x, y), radius = cv2.minEnclosingCircle(contours[0])
cv2.circle(img, (int(x), int(y)), int(radius), (255,0,0), 2)
38. approxPolyDP برای سادهسازی کانتور
epsilon = 0.01 * cv2.arcLength(contours[0], True)
approx = cv2.approxPolyDP(contours[0], epsilon, True)
39. شمارش تعداد اشکال در تصویر
print(len(contours))
40. تبدیل تصویر به تصویر 1 کاناله سیاه و سفید (Binary)
ret, binary = cv2.threshold(gray, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
41. یافتن خطوط با Hough Transform
lines = cv2.HoughLines(edges, 1, np.pi/180, 200)
42. یافتن دایرهها با Hough Circle
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=30, minRadius=0, maxRadius=0)
43. Warp تصویر (Perspective Transform)
pts1 = np.float32([[0,0],[w,0],[0,h],[w,h]])
pts2 = np.float32([[0,0],[w,0],[50,h],[w-50,h]])
matrix = cv2.getPerspectiveTransform(pts1, pts2)
dst = cv2.warpPerspective(img, matrix, (w,h))
44. Affine Transform برای چرخش و انتقال تصویر
pts1 = np.float32([[50,50],[200,50],[50,200]])
pts2 = np.float32([[10,100],[200,50],[100,250]])
matrix = cv2.getAffineTransform(pts1, pts2)
dst = cv2.warpAffine(img, matrix, (cols, rows))
45. Histogram تصویر
hist = cv2.calcHist([gray], [0], None, [256], [0,256])
46. برابر سازی Histogram (Histogram Equalization)
equalized = cv2.equalizeHist(gray)
47. تبدیل تصویر به تصویر HSV و جدا کردن کانالها
h,s,v = cv2.split(hsv)
48. ادغام کانالها
merged = cv2.merge([h,s,v])
49. رسم مستطیل و متن روی تصویر با حلقه
for i, cnt in enumerate(contours):
x,y,w,h = cv2.boundingRect(cnt)
cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2)
cv2.putText(img, str(i), (x,y-5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0,0,255),1)
50. چسباندن (Stack) دو تصویر کنار هم
stacked = np.hstack((img1, img2))
cv2.imshow("Stacked", stacked)
---
باشه، ادامه میدهیم به سوالات حرفهای و پروژهای OpenCV (51–100)
بخش ۳ – پروژهها و کاربردهای پیشرفته (سوال 51–100)
51. ردیابی حرکت با Background Subtraction
52. محاسبه Optical Flow برای ردیابی حرکت
53. تشخیص چهره با Haar Cascade
54. رسم مستطیل دور چهرهها
55. تشخیص چشم در چهره
56. ردیابی شی با Color Detection
57. محاسبه Moments و مرکز شیء رنگی
58. تشخیص حرکات با Contours روی ماسک
59. رسم مسیر حرکت شیء روی تصویر
60. محاسبه زاویه بین دو خط
61. تبدیل تصویر به Sketch (طرح سیاه و سفید)
62. Cartoon Effect روی تصویر
63. اعمال فیلتر Canny روی تصویر رنگی
64. تشخیص QR Code با OpenCV
65. Trackbar برای تغییر Threshold در زمان اجرا
66. تشخیص حرکت با Frame Differencing
67. Histogram Equalization روی تصویر رنگی (YUV)
68. استخراج لبهها و اعمال ماسک روی تصویر اصلی
69. Template Matching برای پیدا کردن شیء در تصویر
70. Perspective Transform برای اسکن سند
71. اعمال Gaussian Pyramid برای Downsampling تصویر
72. اعمال Laplacian Pyramid برای تصویر
73. Blend دو تصویر با Pyramid Blending
74. Optical Character Recognition (OCR) با pytesseract
75. شمارش اشیا با Connected Components
76. تغییر رنگ شیء انتخاب شده با ماسک
77. رسم Bounding Box روی بیش از یک شیء
78. محاسبه Area کانتور و فیلتر کوچکترینها
بخش ۳ – پروژهها و کاربردهای پیشرفته (سوال 51–100)
51. ردیابی حرکت با Background Subtraction
fgbg = cv2.createBackgroundSubtractorMOG2() fgmask = fgbg.apply(frame) 52. محاسبه Optical Flow برای ردیابی حرکت
flow = cv2.calcOpticalFlowFarneback(prev_gray, gray, None, 0.5, 3, 15, 3, 5, 1.2, 0) 53. تشخیص چهره با Haar Cascade
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') faces = face_cascade.detectMultiScale(gray, 1.3, 5) 54. رسم مستطیل دور چهرهها
for (x,y,w,h) in faces: cv2.rectangle(img, (x,y), (x+w, y+h), (255,0,0), 2) 55. تشخیص چشم در چهره
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml') for (x,y,w,h) in faces: roi_gray = gray[y:y+h, x:x+w] eyes = eye_cascade.detectMultiScale(roi_gray) 56. ردیابی شی با Color Detection
mask = cv2.inRange(hsv, lower_color, upper_color) res = cv2.bitwise_and(frame, frame, mask=mask) 57. محاسبه Moments و مرکز شیء رنگی
M = cv2.moments(mask) cx = int(M['m10']/M['m00']) cy = int(M['m01']/M['m00']) 58. تشخیص حرکات با Contours روی ماسک
contours, _ = cv2.findContours(mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) cv2.drawContours(frame, contours, -1, (0,255,0), 2) 59. رسم مسیر حرکت شیء روی تصویر
pts = deque(maxlen=64) pts.appendleft((cx, cy)) for i in range(1, len(pts)): cv2.line(frame, pts[i-1], pts[i], (0,0,255), 2) 60. محاسبه زاویه بین دو خط
angle = math.degrees(math.atan2(y2-y1, x2-x1)) 61. تبدیل تصویر به Sketch (طرح سیاه و سفید)
inv = 255 - gray blur = cv2.GaussianBlur(inv, (21,21), 0) sketch = cv2.divide(gray, 255 - blur, scale=256) 62. Cartoon Effect روی تصویر
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = cv2.medianBlur(gray, 5) edges = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 9, 9) color = cv2.bilateralFilter(img, 9, 300, 300) cartoon = cv2.bitwise_and(color, color, mask=edges) 63. اعمال فیلتر Canny روی تصویر رنگی
edges = cv2.Canny(cv2.cvtColor(img, cv2.COLOR_BGR2GRAY), 100, 200) 64. تشخیص QR Code با OpenCV
detector = cv2.QRCodeDetector() data, bbox, _ = detector.detectAndDecode(img) 65. Trackbar برای تغییر Threshold در زمان اجرا
cv2.createTrackbar('Thresh','window',0,255,nothing) 66. تشخیص حرکت با Frame Differencing
diff = cv2.absdiff(frame1, frame2) gray = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY) 67. Histogram Equalization روی تصویر رنگی (YUV)
yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV) yuv[:,:,0] = cv2.equalizeHist(yuv[:,:,0]) img_eq = cv2.cvtColor(yuv, cv2.COLOR_YUV2BGR) 68. استخراج لبهها و اعمال ماسک روی تصویر اصلی
edges = cv2.Canny(gray, 100, 200) masked = cv2.bitwise_and(img, img, mask=edges) 69. Template Matching برای پیدا کردن شیء در تصویر
res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NORMED) min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) top_left = max_loc 70. Perspective Transform برای اسکن سند
pts1 = np.float32([[x1,y1],[x2,y2],[x3,y3],[x4,y4]]) pts2 = np.float32([[0,0],[w,0],[0,h],[w,h]]) matrix = cv2.getPerspectiveTransform(pts1, pts2) scanned = cv2.warpPerspective(img, matrix, (w,h)) 71. اعمال Gaussian Pyramid برای Downsampling تصویر
lower_reso = cv2.pyrDown(img) 72. اعمال Laplacian Pyramid برای تصویر
laplacian = cv2.pyrUp(lower_reso) 73. Blend دو تصویر با Pyramid Blending
blended = cv2.addWeighted(img1, 0.5, img2, 0.5, 0) 74. Optical Character Recognition (OCR) با pytesseract
import pytesseract text = pytesseract.image_to_string(img) 75. شمارش اشیا با Connected Components
num_labels, labels = cv2.connectedComponents(thresh) 76. تغییر رنگ شیء انتخاب شده با ماسک
img[mask==255] = [0,255,0] 77. رسم Bounding Box روی بیش از یک شیء
for cnt in contours: x,y,w,h = cv2.boundingRect(cnt) cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2) 78. محاسبه Area کانتور و فیلتر کوچکترینها
areas = [cv2.contourArea(c) for c in contours] big_contours = [c for c in contours if cv2.contourArea(c)>100]79. استخراج ROI و ذخیره در فایل
roi = img[y:y+h, x:x+w]
cv2.imwrite('roi.jpg', roi)
80. محاسبه هیستوگرام کانالهای رنگی
color = ('b','g','r')
for i,col in enumerate(color):
hist = cv2.calcHist([img],[i],None,[256],[0,256])
81. تشخیص اشیا با Background Subtractor KNN
fgbg = cv2.createBackgroundSubtractorKNN()
fgmask = fgbg.apply(frame)
82. اعمال Morphology بعد از Subtraction برای تمیز کردن
kernel = np.ones((5,5),np.uint8)
fgmask = cv2.morphologyEx(fgmask, cv2.MORPH_OPEN, kernel)
83. استخراج لبهها و یافتن گوشهها با Harris
dst = cv2.cornerHarris(gray,2,3,0.04)
dst = cv2.dilate(dst,None)
img[dst>0.01*dst.max()] = [0,0,255]
84. Detect SIFT keypoints و Descriptors
sift = cv2.SIFT_create()
kp, des = sift.detectAndCompute(gray,None)
img=cv2.drawKeypoints(img,kp,None)
85. Detect ORB keypoints و Descriptors
orb = cv2.ORB_create()
kp, des = orb.detectAndCompute(gray,None)
img=cv2.drawKeypoints(img,kp,None)
86. Feature Matching با BFMatcher
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
matches = bf.match(des1, des2)
matches = sorted(matches, key = lambda x:x.distance)
87. Stitching دو تصویر کنار هم
stitcher = cv2.Stitcher_create()
status, pano = stitcher.stitch([img1,img2])
88. Face Recognition با LBPHFaceRecognizer
recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.train(faces, np.array(labels))
89. CamShift Tracking
ret, track_window = cv2.CamShift(prob_mask, track_window, term_crit)
90. MeanShift Tracking
ret, track_window = cv2.meanShift(prob_mask, track_window, term_crit)
roi = img[y:y+h, x:x+w]
cv2.imwrite('roi.jpg', roi)
80. محاسبه هیستوگرام کانالهای رنگی
color = ('b','g','r')
for i,col in enumerate(color):
hist = cv2.calcHist([img],[i],None,[256],[0,256])
81. تشخیص اشیا با Background Subtractor KNN
fgbg = cv2.createBackgroundSubtractorKNN()
fgmask = fgbg.apply(frame)
82. اعمال Morphology بعد از Subtraction برای تمیز کردن
kernel = np.ones((5,5),np.uint8)
fgmask = cv2.morphologyEx(fgmask, cv2.MORPH_OPEN, kernel)
83. استخراج لبهها و یافتن گوشهها با Harris
dst = cv2.cornerHarris(gray,2,3,0.04)
dst = cv2.dilate(dst,None)
img[dst>0.01*dst.max()] = [0,0,255]
84. Detect SIFT keypoints و Descriptors
sift = cv2.SIFT_create()
kp, des = sift.detectAndCompute(gray,None)
img=cv2.drawKeypoints(img,kp,None)
85. Detect ORB keypoints و Descriptors
orb = cv2.ORB_create()
kp, des = orb.detectAndCompute(gray,None)
img=cv2.drawKeypoints(img,kp,None)
86. Feature Matching با BFMatcher
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
matches = bf.match(des1, des2)
matches = sorted(matches, key = lambda x:x.distance)
87. Stitching دو تصویر کنار هم
stitcher = cv2.Stitcher_create()
status, pano = stitcher.stitch([img1,img2])
88. Face Recognition با LBPHFaceRecognizer
recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.train(faces, np.array(labels))
89. CamShift Tracking
ret, track_window = cv2.CamShift(prob_mask, track_window, term_crit)
90. MeanShift Tracking
ret, track_window = cv2.meanShift(prob_mask, track_window, term_crit)
ادامهی سوالات حرفهای و پروژهای OpenCV (91–100):
---
91. Detect Contours با cv2.RETR_EXTERNAL
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0,255,0), 2)
92. Approximate Contours با cv2.approxPolyDP
epsilon = 0.02 * cv2.arcLength(cnt, True)
approx = cv2.approxPolyDP(cnt, epsilon, True)
cv2.drawContours(img, [approx], 0, (0,0,255), 2)
93. Fit Ellipse روی کانتورهای بیضوی شکل
if len(cnt) >= 5:
ellipse = cv2.fitEllipse(cnt)
cv2.ellipse(img, ellipse, (255,0,0), 2)
94. Fit Line روی نقاط کانتور
[vx, vy, x, y] = cv2.fitLine(cnt, cv2.DIST_L2,0,0.01,0.01)
95. محاسبه Bounding Circle کانتور
(x, y), radius = cv2.minEnclosingCircle(cnt)
cv2.circle(img, (int(x),int(y)), int(radius), (0,255,0),2)
96. Threshold پویا با cv2.adaptiveThreshold
thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY, 11, 2)
97. استفاده از cv2.add و cv2.subtract برای ترکیب تصاویر
added = cv2.add(img1, img2)
subtracted = cv2.subtract(img1, img2)
98. استفاده از cv2.bitwise_and, or, xor روی تصاویر
bitwise_and = cv2.bitwise_and(img1, img2)
bitwise_or = cv2.bitwise_or(img1, img2)
bitwise_xor = cv2.bitwise_xor(img1, img2)
99. ساخت ماسک از چندضلعی
mask = np.zeros_like(gray)
pts = np.array([[50,50],[200,50],[200,200],[50,200]], np.int32)
cv2.fillPoly(mask, [pts], 255)
masked_img = cv2.bitwise_and(img, img, mask=mask)
100. ذخیره و بارگذاری ویدیو با VideoWriter و VideoCapture
cap = cv2.VideoCapture('input.mp4')
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640,480))
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
out.write(frame)
cap.release()
out.release()
cv2.destroyAllWindows()
---
91. Detect Contours با cv2.RETR_EXTERNAL
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(img, contours, -1, (0,255,0), 2)
92. Approximate Contours با cv2.approxPolyDP
epsilon = 0.02 * cv2.arcLength(cnt, True)
approx = cv2.approxPolyDP(cnt, epsilon, True)
cv2.drawContours(img, [approx], 0, (0,0,255), 2)
93. Fit Ellipse روی کانتورهای بیضوی شکل
if len(cnt) >= 5:
ellipse = cv2.fitEllipse(cnt)
cv2.ellipse(img, ellipse, (255,0,0), 2)
94. Fit Line روی نقاط کانتور
[vx, vy, x, y] = cv2.fitLine(cnt, cv2.DIST_L2,0,0.01,0.01)
95. محاسبه Bounding Circle کانتور
(x, y), radius = cv2.minEnclosingCircle(cnt)
cv2.circle(img, (int(x),int(y)), int(radius), (0,255,0),2)
96. Threshold پویا با cv2.adaptiveThreshold
thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY, 11, 2)
97. استفاده از cv2.add و cv2.subtract برای ترکیب تصاویر
added = cv2.add(img1, img2)
subtracted = cv2.subtract(img1, img2)
98. استفاده از cv2.bitwise_and, or, xor روی تصاویر
bitwise_and = cv2.bitwise_and(img1, img2)
bitwise_or = cv2.bitwise_or(img1, img2)
bitwise_xor = cv2.bitwise_xor(img1, img2)
99. ساخت ماسک از چندضلعی
mask = np.zeros_like(gray)
pts = np.array([[50,50],[200,50],[200,200],[50,200]], np.int32)
cv2.fillPoly(mask, [pts], 255)
masked_img = cv2.bitwise_and(img, img, mask=mask)
100. ذخیره و بارگذاری ویدیو با VideoWriter و VideoCapture
cap = cv2.VideoCapture('input.mp4')
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640,480))
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
out.write(frame)
cap.release()
out.release()
cv2.destroyAllWindows()
فصل هوش مصنوعی و یادگیری عمیق (AI / Deep Learning) است.
فصل AI / Deep Learning – بخش ۱: مقدماتی (سوال 1–20)
1. نصب TensorFlow
pip install tensorflow
2. چک کردن نسخه TensorFlow
import tensorflow as tf
print(tf.version)
3. ساخت یک Tensorr ساده
import tensorflow as tf
tensor = tf.constant([[1,2],[3,4]])
print(tensor)
4. جمع دو Tensorr
a = tf.constant([1,2])
b = tf.constant([3,4])
print(tf.add(a,b))
5. تعریف یک متغیر TensorFlow
v = tf.Variable([1.0,2.0])
v.assign([3.0,4.0])
6. تبدیل NumPy به TensorFlow
import numpy as np
arr = np.array([1,2,3])
tensor = tf.convert_to_tensor(arr)
7. ساخت یک مدل Sequential ساده
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
model = Sequential([Dense(10, input_shape=(5,), activation='relu')])
8. اضافه کردن لایه Dense به مدل
model.add(Dense(1, activation='sigmoid'))
9. کامپایل مدل با optimizer و loss
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
10. آماده کردن دادههای آموزشی
import numpy as np
X = np.random.rand(100,5)
y = np.random.randint(0,2,100)
11. آموزش مدل با fit
model.fit(X, y, epochs=10, batch_size=5)
12. ارزیابی مدل با evaluate
loss, acc = model.evaluate(X, y)
print(loss, acc)
13. پیشبینی با مدل
preds = model.predict(X[:5])
print(preds)
14. ذخیره مدل کامل
model.save('my_model.h5')
15. بارگذاری مدل
from tensorflow.keras.models import load_model
model = load_model('my_model.h5')
16. ساخت Callback برای توقف زودهنگام
from tensorflow.keras.callbacks import EarlyStopping
es = EarlyStopping(monitor='loss', patience=3)
17. تقسیم داده به train و test با sklearn
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
18. استانداردسازی دادهها
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
19. تعریف یک شبکه با چند لایه Dense
model = Sequential([
Dense(64, activation='relu', input_shape=(5,)),
Dense(32, activation='relu'),
Dense(1, activation='sigmoid')
])
20. استفاده از Dropout برای جلوگیری از Overfitting
from tensorflow.keras.layers import Dropout
model = Sequential([
Dense(64, activation='relu', input_shape=(5,)),
Dropout(0.5),
Dense(1, activation='sigmoid')
])
---
فصل AI / Deep Learning – بخش ۱: مقدماتی (سوال 1–20)
1. نصب TensorFlow
pip install tensorflow
2. چک کردن نسخه TensorFlow
import tensorflow as tf
print(tf.version)
3. ساخت یک Tensorr ساده
import tensorflow as tf
tensor = tf.constant([[1,2],[3,4]])
print(tensor)
4. جمع دو Tensorr
a = tf.constant([1,2])
b = tf.constant([3,4])
print(tf.add(a,b))
5. تعریف یک متغیر TensorFlow
v = tf.Variable([1.0,2.0])
v.assign([3.0,4.0])
6. تبدیل NumPy به TensorFlow
import numpy as np
arr = np.array([1,2,3])
tensor = tf.convert_to_tensor(arr)
7. ساخت یک مدل Sequential ساده
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
model = Sequential([Dense(10, input_shape=(5,), activation='relu')])
8. اضافه کردن لایه Dense به مدل
model.add(Dense(1, activation='sigmoid'))
9. کامپایل مدل با optimizer و loss
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
10. آماده کردن دادههای آموزشی
import numpy as np
X = np.random.rand(100,5)
y = np.random.randint(0,2,100)
11. آموزش مدل با fit
model.fit(X, y, epochs=10, batch_size=5)
12. ارزیابی مدل با evaluate
loss, acc = model.evaluate(X, y)
print(loss, acc)
13. پیشبینی با مدل
preds = model.predict(X[:5])
print(preds)
14. ذخیره مدل کامل
model.save('my_model.h5')
15. بارگذاری مدل
from tensorflow.keras.models import load_model
model = load_model('my_model.h5')
16. ساخت Callback برای توقف زودهنگام
from tensorflow.keras.callbacks import EarlyStopping
es = EarlyStopping(monitor='loss', patience=3)
17. تقسیم داده به train و test با sklearn
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
18. استانداردسازی دادهها
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
19. تعریف یک شبکه با چند لایه Dense
model = Sequential([
Dense(64, activation='relu', input_shape=(5,)),
Dense(32, activation='relu'),
Dense(1, activation='sigmoid')
])
20. استفاده از Dropout برای جلوگیری از Overfitting
from tensorflow.keras.layers import Dropout
model = Sequential([
Dense(64, activation='relu', input_shape=(5,)),
Dropout(0.5),
Dense(1, activation='sigmoid')
])
---
فصل AI / Deep Learning – بخش ۲: پیشرفتهتر (سوال 21–40)
21. ساخت یک شبکه کانولوشنی ساده (CNN) برای تصاویر
22. کامپایل مدل CNN با categorical_crossentropy
23. ساخت یک شبکه بازگشتی ساده (RNN) با LSTM
24. استفاده از Embedding برای متن
25. بارگذاری دیتاست MNIST
26. نرمالسازی تصاویر MNIST
27. One-hot encoding برای برچسبها
28. Data augmentation با ImageDataGenerator
29. اضافه کردن BatchNormalization به مدل
30. استفاده از optimizer پیشرفته Adamax
31. ذخیره مدل به فرمت SavedModel
32. بارگذاری مدل SavedModel
33. استفاده از TensorBoard برای مانیتورینگ
34. آموزش مدل با validation_split
35. EarlyStopping و ReduceLROnPlateau با هم
36. مدل Functional API برای چند ورودی
37. محاسبه confusion matrix با sklearn
38. رسم نمودار Accuracy و Loss
39. استفاده از callbacks سفارشی
40. پیشبینی چند کلاس با softmax و argmax
21. ساخت یک شبکه کانولوشنی ساده (CNN) برای تصاویر
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense model = Sequential([ Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)), MaxPooling2D((2,2)), Flatten(), Dense(10, activation='softmax') ]) 22. کامپایل مدل CNN با categorical_crossentropy
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) 23. ساخت یک شبکه بازگشتی ساده (RNN) با LSTM
from tensorflow.keras.layers import LSTM model = Sequential([ LSTM(50, input_shape=(10,1)), Dense(1, activation='sigmoid') ]) 24. استفاده از Embedding برای متن
from tensorflow.keras.layers import Embedding model = Sequential([ Embedding(input_dim=1000, output_dim=64, input_length=10), LSTM(32), Dense(1, activation='sigmoid') ]) 25. بارگذاری دیتاست MNIST
from tensorflow.keras.datasets import mnist (X_train, y_train), (X_test, y_test) = mnist.load_data() 26. نرمالسازی تصاویر MNIST
X_train = X_train / 255.0 X_test = X_test / 255.0 27. One-hot encoding برای برچسبها
from tensorflow.keras.utils import to_categorical y_train = to_categorical(y_train, 10) y_test = to_categorical(y_test, 10) 28. Data augmentation با ImageDataGenerator
from tensorflow.keras.preprocessing.image import ImageDataGenerator datagen = ImageDataGenerator(rotation_range=10, width_shift_range=0.1, height_shift_range=0.1) datagen.fit(X_train.reshape(-1,28,28,1)) 29. اضافه کردن BatchNormalization به مدل
from tensorflow.keras.layers import BatchNormalization model = Sequential([ Dense(64, activation='relu', input_shape=(20,)), BatchNormalization(), Dense(1, activation='sigmoid') ]) 30. استفاده از optimizer پیشرفته Adamax
from tensorflow.keras.optimizers import Adamax model.compile(optimizer=Adamax(), loss='binary_crossentropy', metrics=['accuracy']) 31. ذخیره مدل به فرمت SavedModel
model.save('saved_model') 32. بارگذاری مدل SavedModel
model = tf.keras.models.load_model('saved_model') 33. استفاده از TensorBoard برای مانیتورینگ
from tensorflow.keras.callbacks import TensorBoard tb = TensorBoard(log_dir='./logs') 34. آموزش مدل با validation_split
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_split=0.2) 35. EarlyStopping و ReduceLROnPlateau با هم
from tensorflow.keras.callbacks import ReduceLROnPlateau rlr = ReduceLROnPlateau(monitor='val_loss', factor=0.5, patience=2) 36. مدل Functional API برای چند ورودی
from tensorflow.keras.models import Model from tensorflow.keras.layers import Input, Dense, concatenate input1 = Input(shape=(10,)) input2 = Input(shape=(5,)) x = Dense(8, activation='relu')(input1) y = Dense(4, activation='relu')(input2) combined = concatenate([x,y]) output = Dense(1, activation='sigmoid')(combined) model = Model(inputs=[input1, input2], outputs=output) 37. محاسبه confusion matrix با sklearn
from sklearn.metrics import confusion_matrix y_pred = model.predict(X_test).round() cm = confusion_matrix(y_test, y_pred) print(cm) 38. رسم نمودار Accuracy و Loss
import matplotlib.pyplot as plt history = model.fit(X_train, y_train, epochs=10, validation_split=0.2) plt.plot(history.history['accuracy']) plt.plot(history.history['val_accuracy']) plt.show() 39. استفاده از callbacks سفارشی
from tensorflow.keras.callbacks import Callback class MyCallback(Callback): def on_epoch_end(self, epoch, logs=None): print(f"Epoch {epoch} done!") 40. پیشبینی چند کلاس با softmax و argmax
preds = model.predict(X_test) import numpy as np labels = np.argmax(preds, axis=1)فصل AI / Deep Learning – بخش ۳: پروژهها و کاربردهای واقعی (سوال 41–60)
41. تشخیص ارقام دستنویس MNIST
42. تشخیص تصاویر سگ و گربه (Cat vs Dog)
43. تحلیل احساسات متن با LSTM
44. ترجمه متن با Seq2Seq
45. تشخیص شی در تصویر با Object Detection (YOLO)
46. پیشبینی سریهای زمانی با LSTM
47. تولید متن با RNN
48. تشخیص ناهنجاری (Anomaly Detection) با Autoencoder
49. کاهش ابعاد با PCA قبل از شبکه عصبی
50. استفاده از Dropout برای جلوگیری از overfitting
51. استفاده از BatchNormalization در CNN
52. EarlyStopping برای جلوگیری از overfitting
53. استفاده از ReduceLROnPlateau
54. ذخیره بهترین مدل با ModelCheckpoint
41. تشخیص ارقام دستنویس MNIST
# شبکه CNN ساده from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense model = Sequential([ Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)), MaxPooling2D((2,2)), Flatten(), Dense(10, activation='softmax') ]) model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) model.fit(X_train, y_train, epochs=5) 42. تشخیص تصاویر سگ و گربه (Cat vs Dog)
from tensorflow.keras.preprocessing.image import ImageDataGenerator train_gen = ImageDataGenerator(rescale=1./255).flow_from_directory('train/', target_size=(64,64)) model.fit(train_gen, epochs=10) 43. تحلیل احساسات متن با LSTM
from tensorflow.keras.layers import Embedding, LSTM model = Sequential([ Embedding(input_dim=10000, output_dim=64, input_length=100), LSTM(64), Dense(1, activation='sigmoid') ]) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) 44. ترجمه متن با Seq2Seq
# تعریف مدل Encoder-Decoder ساده from tensorflow.keras.layers import Input, LSTM, Dense encoder_inputs = Input(shape=(None, num_encoder_tokens)) encoder = LSTM(256, return_state=True) encoder_outputs, state_h, state_c = encoder(encoder_inputs) encoder_states = [state_h, state_c] decoder_inputs = Input(shape=(None, num_decoder_tokens)) decoder_lstm = LSTM(256, return_sequences=True, return_state=True) decoder_outputs, _, _ = decoder_lstm(decoder_inputs, initial_state=encoder_states) decoder_dense = Dense(num_decoder_tokens, activation='softmax') decoder_outputs = decoder_dense(decoder_outputs) 45. تشخیص شی در تصویر با Object Detection (YOLO)
# استفاده از مدل از پیش آموزش دیده YOLOv5 !pip install ultralytics from ultralytics import YOLO model = YOLO('yolov5s.pt') results = model('image.jpg') results.show() 46. پیشبینی سریهای زمانی با LSTM
from tensorflow.keras.layers import LSTM model = Sequential([ LSTM(50, input_shape=(10,1)), Dense(1) ]) model.compile(optimizer='adam', loss='mse') 47. تولید متن با RNN
from tensorflow.keras.layers import SimpleRNN model = Sequential([ SimpleRNN(128, input_shape=(100, vocab_size)), Dense(vocab_size, activation='softmax') ]) 48. تشخیص ناهنجاری (Anomaly Detection) با Autoencoder
from tensorflow.keras.layers import Input, Dense input_dim = X_train.shape[1] input_layer = Input(shape=(input_dim,)) encoded = Dense(32, activation='relu')(input_layer) decoded = Dense(input_dim, activation='sigmoid')(encoded) autoencoder = Model(inputs=input_layer, outputs=decoded) autoencoder.compile(optimizer='adam', loss='mse') 49. کاهش ابعاد با PCA قبل از شبکه عصبی
from sklearn.decomposition import PCA pca = PCA(n_components=50) X_reduced = pca.fit_transform(X_train) 50. استفاده از Dropout برای جلوگیری از overfitting
from tensorflow.keras.layers import Dropout model = Sequential([ Dense(128, activation='relu', input_shape=(100,)), Dropout(0.5), Dense(10, activation='softmax') ]) 51. استفاده از BatchNormalization در CNN
from tensorflow.keras.layers import BatchNormalization model = Sequential([ Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)), BatchNormalization(), MaxPooling2D((2,2)), Flatten(), Dense(10, activation='softmax') ]) 52. EarlyStopping برای جلوگیری از overfitting
from tensorflow.keras.callbacks import EarlyStopping es = EarlyStopping(monitor='val_loss', patience=3) model.fit(X_train, y_train, epochs=20, validation_split=0.2, callbacks=[es]) 53. استفاده از ReduceLROnPlateau
from tensorflow.keras.callbacks import ReduceLROnPlateau rlr = ReduceLROnPlateau(monitor='val_loss', factor=0.5, patience=2) 54. ذخیره بهترین مدل با ModelCheckpoint
from tensorflow.keras.callbacks import ModelCheckpoint checkpoint = ModelCheckpoint('best_model.h5', save_best_only=True)55. ساخت شبکه GAN ساده
56. استفاده از pre-trained VGG16 برای feature extraction
57. fine-tuning مدل از پیش آموزش دیده
58. استفاده از tf.data برای pipeline دادهها
59. پیشبینی تصاویر جدید با مدل CNN
60. اندازهگیری دقت مدل با sklearn
# Generator و Discriminator ساده from tensorflow.keras.layers import Dense, LeakyReLU from tensorflow.keras.models import Sequential generator = Sequential([Dense(128, activation='relu', input_dim=100), Dense(784, activation='sigmoid')]) discriminator = Sequential([Dense(128, activation=LeakyReLU(0.2), input_dim=784), Dense(1, activation='sigmoid')]) 56. استفاده از pre-trained VGG16 برای feature extraction
from tensorflow.keras.applications import VGG16 base_model = VGG16(weights='imagenet', include_top=False, input_shape=(224,224,3)) 57. fine-tuning مدل از پیش آموزش دیده
for layer in base_model.layers[:-4]: layer.trainable = False 58. استفاده از tf.data برای pipeline دادهها
import tensorflow as tf dataset = tf.data.Dataset.from_tensor_slices((X_train, y_train)).batch(32).shuffle(1000) 59. پیشبینی تصاویر جدید با مدل CNN
import numpy as np img = np.expand_dims(X_test[0], axis=0) pred = model.predict(img) 60. اندازهگیری دقت مدل با sklearn
from sklearn.metrics import accuracy_score y_pred = model.predict(X_test).argmax(axis=1) y_true = y_test.argmax(axis=1) print(accuracy_score(y_true, y_pred))فصل AI / Deep Learning – بخش ۴: پروژههای واقعی پیشرفته (سوال 61–80)
61. تشخیص چهره با OpenCV و DNN
import cv2
net = cv2.dnn.readNetFromCaffe('deploy.prototxt', 'weights.caffemodel')
image = cv2.imread('face.jpg')
(h, w) = image.shape[:2]
blob = cv2.dnn.blobFromImage(cv2.resize(image, (300, 300)), 1.0, (300, 300), (104.0, 177.0, 123.0))
net.setInput(blob)
detections = net.forward()
62. تشخیص اشیا با Mask R-CNN
# استفاده از مدل pre-trained Mask R-CNN
from mrcnn import model as modellib, utils
model = modellib.MaskRCNN(mode='inference', model_dir='./', config=config)
results = model.detect([image], verbose=1)
63. ایجاد Chatbot ساده با seq2seq
# استفاده از LSTM encoder-decoder
from tensorflow.keras.models import Model
from tensorflow.keras.layers import LSTM, Input, Dense
64. استفاده از Word2Vec برای embedding متن
from gensim.models import Word2Vec
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4)
vector = model.wv['python']
65. استفاده از BERT برای NLP
from transformers import BertTokenizer, TFBertModel
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = TFBertModel.from_pretrained('bert-base-uncased')
inputs = tokenizer("Hello AI!", return_tensors="tf")
outputs = model(inputs)
66. استفاده از Attention در شبکه عصبی
from tensorflow.keras.layers import Attention
attention = Attention()([query, value])
67. تشخیص خطا در متن با Transformer
# مدل تصحیح گرامر با Transformer
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("t5-small")
model = AutoModelForSeq2SeqLM.from_pretrained("t5-small")
68. سیستم توصیهگر با Collaborative Filtering
import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity
similarity = cosine_similarity(user_item_matrix)
69. افزایش دادهها (Data Augmentation) در تصویر
from tensorflow.keras.preprocessing.image import ImageDataGenerator
datagen = ImageDataGenerator(rotation_range=20, horizontal_flip=True)
70. استفاده از Regularization L2 برای جلوگیری از overfitting
from tensorflow.keras.regularizers import l2
Dense(64, activation='relu', kernel_regularizer=l2(0.01))
71. آموزش GAN با تصاویر دستساز
# آموزش Generator و Discriminator
72. ایجاد Autoencoder برای کاهش نویز تصویر
# مدل Encoder-Decoder ساده برای denoising
73. استفاده از TensorBoard برای مانیتورینگ
from tensorflow.keras.callbacks import TensorBoard
tb = TensorBoard(log_dir='./logs')
model.fit(X_train, y_train, epochs=5, callbacks=[tb])
74. پیشبینی زمان واقعی با مدل CNN
# استفاده از OpenCV برای دریافت فریم و مدل CNN برای پیشبینی
75. تشخیص احساسات با شبکه عصبی CNN-LSTM
# ترکیب ویژگیهای تصویر و متن
76. استفاده از Learning Rate Scheduler
from tensorflow.keras.callbacks import LearningRateScheduler
def scheduler(epoch, lr): return lr * 0.9
lr_scheduler = LearningRateScheduler(scheduler)
77. آموزش مدل چند وظیفهای (Multi-task Learning)
# مدل با خروجیهای متعدد برای چند وظیفه
78. Distillation مدل برای سبکسازی شبکه عصبی
# آموزش مدل کوچک با تقلید از مدل بزرگ
79. استفاده از Mixed Precision Training برای سرعت بیشتر
from tensorflow.keras.mixed_precision import experimental as mixed_precision
policy = mixed_precision.Policy('mixed_float16')
mixed_precision.set_policy(policy)
80. ذخیره و بارگذاری مدل TensorFlow با SavedModel
model.save('saved_model/my_model')
loaded_model = tf.keras.models.load_model('saved_model/my_model')
---
61. تشخیص چهره با OpenCV و DNN
import cv2
net = cv2.dnn.readNetFromCaffe('deploy.prototxt', 'weights.caffemodel')
image = cv2.imread('face.jpg')
(h, w) = image.shape[:2]
blob = cv2.dnn.blobFromImage(cv2.resize(image, (300, 300)), 1.0, (300, 300), (104.0, 177.0, 123.0))
net.setInput(blob)
detections = net.forward()
62. تشخیص اشیا با Mask R-CNN
# استفاده از مدل pre-trained Mask R-CNN
from mrcnn import model as modellib, utils
model = modellib.MaskRCNN(mode='inference', model_dir='./', config=config)
results = model.detect([image], verbose=1)
63. ایجاد Chatbot ساده با seq2seq
# استفاده از LSTM encoder-decoder
from tensorflow.keras.models import Model
from tensorflow.keras.layers import LSTM, Input, Dense
64. استفاده از Word2Vec برای embedding متن
from gensim.models import Word2Vec
model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, workers=4)
vector = model.wv['python']
65. استفاده از BERT برای NLP
from transformers import BertTokenizer, TFBertModel
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = TFBertModel.from_pretrained('bert-base-uncased')
inputs = tokenizer("Hello AI!", return_tensors="tf")
outputs = model(inputs)
66. استفاده از Attention در شبکه عصبی
from tensorflow.keras.layers import Attention
attention = Attention()([query, value])
67. تشخیص خطا در متن با Transformer
# مدل تصحیح گرامر با Transformer
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("t5-small")
model = AutoModelForSeq2SeqLM.from_pretrained("t5-small")
68. سیستم توصیهگر با Collaborative Filtering
import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity
similarity = cosine_similarity(user_item_matrix)
69. افزایش دادهها (Data Augmentation) در تصویر
from tensorflow.keras.preprocessing.image import ImageDataGenerator
datagen = ImageDataGenerator(rotation_range=20, horizontal_flip=True)
70. استفاده از Regularization L2 برای جلوگیری از overfitting
from tensorflow.keras.regularizers import l2
Dense(64, activation='relu', kernel_regularizer=l2(0.01))
71. آموزش GAN با تصاویر دستساز
# آموزش Generator و Discriminator
72. ایجاد Autoencoder برای کاهش نویز تصویر
# مدل Encoder-Decoder ساده برای denoising
73. استفاده از TensorBoard برای مانیتورینگ
from tensorflow.keras.callbacks import TensorBoard
tb = TensorBoard(log_dir='./logs')
model.fit(X_train, y_train, epochs=5, callbacks=[tb])
74. پیشبینی زمان واقعی با مدل CNN
# استفاده از OpenCV برای دریافت فریم و مدل CNN برای پیشبینی
75. تشخیص احساسات با شبکه عصبی CNN-LSTM
# ترکیب ویژگیهای تصویر و متن
76. استفاده از Learning Rate Scheduler
from tensorflow.keras.callbacks import LearningRateScheduler
def scheduler(epoch, lr): return lr * 0.9
lr_scheduler = LearningRateScheduler(scheduler)
77. آموزش مدل چند وظیفهای (Multi-task Learning)
# مدل با خروجیهای متعدد برای چند وظیفه
78. Distillation مدل برای سبکسازی شبکه عصبی
# آموزش مدل کوچک با تقلید از مدل بزرگ
79. استفاده از Mixed Precision Training برای سرعت بیشتر
from tensorflow.keras.mixed_precision import experimental as mixed_precision
policy = mixed_precision.Policy('mixed_float16')
mixed_precision.set_policy(policy)
80. ذخیره و بارگذاری مدل TensorFlow با SavedModel
model.save('saved_model/my_model')
loaded_model = tf.keras.models.load_model('saved_model/my_model')
---