responses = {
"سلام": "سلام! حال شما چطوره؟",
"خوبی؟": "من خوبم، مرسی! شما چطور؟",
"خداحافظ": "خداحافظ! روز خوبی داشته باشی.",
}
def chatbot(msg):
return responses.get(msg, "متوجه نشدم. لطفا دوباره بگویید.")
while True:
msg = input("شما: ")
if msg == "خداحافظ":
print("ربات:", chatbot(msg))
break
print("ربات:", chatbot(msg))
توضیح:
یک دیکشنری برای پاسخها داریم.
کاربر پیام میدهد و ربات پاسخ مناسب میدهد یا پیام پیشفرض میفرستد.
با تایپ خداحافظ برنامه پایان مییابد.
"سلام": "سلام! حال شما چطوره؟",
"خوبی؟": "من خوبم، مرسی! شما چطور؟",
"خداحافظ": "خداحافظ! روز خوبی داشته باشی.",
}
def chatbot(msg):
return responses.get(msg, "متوجه نشدم. لطفا دوباره بگویید.")
while True:
msg = input("شما: ")
if msg == "خداحافظ":
print("ربات:", chatbot(msg))
break
print("ربات:", chatbot(msg))
توضیح:
یک دیکشنری برای پاسخها داریم.
کاربر پیام میدهد و ربات پاسخ مناسب میدهد یا پیام پیشفرض میفرستد.
با تایپ خداحافظ برنامه پایان مییابد.
پروژههای ۲۱–۴۰
۲۱. پیشبینی قیمت خانه با Linear Regression
۲۲. طبقهبندی ایمیل اسپم با Naive Bayes
۲۳. خوشهبندی مشتریان با KMeans
۲۴. تشخیص دستنویس با MNIST و MLP
۲۵. تحلیل احساسات ساده با TextBlob
۲۶. پیشبینی سری زمانی با ARIMA
۲۷. خوشهبندی تصاویر با KMeans و PCA
۲۸. تشخیص اشیا با OpenCV و کپسولبندی رنگها
۲۹. پیشبینی بیماری قلبی با RandomForest
۳۰. تولید متن ساده با GPT-2 (transformers)
۲۱. پیشبینی قیمت خانه با Linear Regression
from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split from sklearn.datasets import load_boston import pandas as pd data = load_boston() X = pd.DataFrame(data.data, columns=data.feature_names) y = pd.Series(data.target) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) model = LinearRegression() model.fit(X_train, y_train) print("Score:", model.score(X_test, y_test)) ۲۲. طبقهبندی ایمیل اسپم با Naive Bayes
from sklearn.model_selection import train_test_split from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayes import MultinomialNB emails = ["Free money now", "Hi Bob, how are you?", "Win a car!", "Meeting at 10"] labels = [1, 0, 1, 0] # 1=spam, 0=ham vectorizer = CountVectorizer() X = vectorizer.fit_transform(emails) X_train, X_test, y_train, y_test = train_test_split(X, labels, test_size=0.25, random_state=42) model = MultinomialNB() model.fit(X_train, y_train) print("Score:", model.score(X_test, y_test)) ۲۳. خوشهبندی مشتریان با KMeans
from sklearn.cluster import KMeans import numpy as np X = np.array([[5, 2], [1, 4], [3, 7], [8, 1]]) kmeans = KMeans(n_clusters=2, random_state=42) kmeans.fit(X) print(kmeans.labels_) ۲۴. تشخیص دستنویس با MNIST و MLP
from sklearn.datasets import load_digits from sklearn.model_selection import train_test_split from sklearn.neural_network import MLPClassifier digits = load_digits() X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.2, random_state=42) model = MLPClassifier(hidden_layer_sizes=(64,), max_iter=300) model.fit(X_train, y_train) print("Score:", model.score(X_test, y_test)) ۲۵. تحلیل احساسات ساده با TextBlob
from textblob import TextBlob text = "I love AI but sometimes it is challenging." blob = TextBlob(text) print("Sentiment:", blob.sentiment) ۲۶. پیشبینی سری زمانی با ARIMA
import pandas as pd from statsmodels.tsa.arima.model import ARIMA data = pd.Series([120, 130, 125, 140, 150, 160]) model = ARIMA(data, order=(1,1,1)) model_fit = model.fit() print(model_fit.forecast(steps=3)) ۲۷. خوشهبندی تصاویر با KMeans و PCA
from sklearn.datasets import load_digits from sklearn.decomposition import PCA from sklearn.cluster import KMeans digits = load_digits() X_pca = PCA(2).fit_transform(digits.data) kmeans = KMeans(n_clusters=10).fit(X_pca) print(kmeans.labels_) ۲۸. تشخیص اشیا با OpenCV و کپسولبندی رنگها
import cv2 import numpy as np img = cv2.imread("image.jpg") hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) mask = cv2.inRange(hsv, (36, 25, 25), (70, 255,255)) res = cv2.bitwise_and(img,img,mask=mask) cv2.imwrite("result.jpg", res) ۲۹. پیشبینی بیماری قلبی با RandomForest
from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split import pandas as pd # فرضی df = pd.DataFrame({'age':[45,50,40],'chol':[230,210,180],'target':[1,0,0]}) X = df[['age','chol']] y = df['target'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42) model = RandomForestClassifier() model.fit(X_train, y_train) print(model.score(X_test, y_test)) ۳۰. تولید متن ساده با GPT-2 (transformers)
from transformers import GPT2LMHeadModel, GPT2Tokenizer tokenizer = GPT2Tokenizer.from_pretrained("gpt2") model = GPT2LMHeadModel.from_pretrained("gpt2") input_text = "Artificial Intelligence is" inputs = tokenizer.encode(input_text, return_tensors="pt") outputs = model.generate(inputs, max_length=50) print(tokenizer.decode(outputs[0], skip_special_tokens=True))۳۱–۴۰ در حوزه هوش مصنوعی و یادگیری ماشین/عمیق:
پروژههای ۳۱–۴۰
۳۱. تشخیص چهره با OpenCV
۳۲. پیشبینی قیمت سهام با Linear Regression
۳۳. خوشهبندی متون با TF-IDF و KMeans
۳۴. تحلیل احساسات توییتها با Vader
۳۵. تولید تصویر با GAN ساده (PyTorch)
۳۶. شناسایی اعداد MNIST با CNN (PyTorch)
۳۷. سیستم توصیهگر ساده (Collaborative Filtering)
۳۸. تشخیص شی با YOLO (OpenCV + pre-trained weights)
۳۹. طبقهبندی گل Iris با Random Forest
۴۰. کاهش ابعاد با PCA و نمایش گرافیکی
پروژههای ۳۱–۴۰
۳۱. تشخیص چهره با OpenCV
import cv2 face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') img = cv2.imread('face.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.3, 5) for (x,y,w,h) in faces: cv2.rectangle(img, (x,y), (x+w,y+h), (255,0,0), 2) cv2.imwrite('faces_detected.jpg', img) ۳۲. پیشبینی قیمت سهام با Linear Regression
import pandas as pd from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split data = pd.read_csv('stock.csv') # فرضی X = data[['Open', 'High', 'Low']] y = data['Close'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) model = LinearRegression() model.fit(X_train, y_train) print(model.score(X_test, y_test)) ۳۳. خوشهبندی متون با TF-IDF و KMeans
from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.cluster import KMeans docs = ["I love AI", "AI is the future", "I enjoy sports", "Football is fun"] vectorizer = TfidfVectorizer() X = vectorizer.fit_transform(docs) kmeans = KMeans(n_clusters=2).fit(X) print(kmeans.labels_) ۳۴. تحلیل احساسات توییتها با Vader
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer analyzer = SentimentIntensityAnalyzer() text = "I am very happy with AI progress!" score = analyzer.polarity_scores(text) print(score) ۳۵. تولید تصویر با GAN ساده (PyTorch)
import torch from torch import nn class Generator(nn.Module): def __init__(self): super().__init__() self.main = nn.Sequential(nn.Linear(100, 256), nn.ReLU(), nn.Linear(256, 784), nn.Tanh()) def forward(self, x): return self.main(x) z = torch.randn(1, 100) gen = Generator() fake_image = gen(z) print(fake_image.shape) # خروجی 784 پیکسل (28x28) ۳۶. شناسایی اعداد MNIST با CNN (PyTorch)
import torch from torchvision import datasets, transforms from torch import nn, optim transform = transforms.Compose([transforms.ToTensor()]) train_data = datasets.MNIST(root='./data', train=True, download=True, transform=transform) X, y = train_data.data.float(), train_data.targets model = nn.Sequential(nn.Flatten(), nn.Linear(28*28, 128), nn.ReLU(), nn.Linear(128,10)) loss_fn = nn.CrossEntropyLoss() optimizer = optim.SGD(model.parameters(), lr=0.01) آموزش کامل نیازمند حلقه epoch است، این فقط نمونه ساختار مدل است.
۳۷. سیستم توصیهگر ساده (Collaborative Filtering)
import pandas as pd from sklearn.metrics.pairwise import cosine_similarity ratings = pd.DataFrame({'User1':[5,0,3],'User2':[4,0,0],'User3':[1,2,0]}) similarity = cosine_similarity(ratings.fillna(0)) print(similarity) ۳۸. تشخیص شی با YOLO (OpenCV + pre-trained weights)
import cv2 net = cv2.dnn.readNet("yolov3.weights", "yolov3.cfg") layer_names = net.getLayerNames() output_layers = [layer_names[i[0]-1] for i in net.getUnconnectedOutLayers()] img = cv2.imread("image.jpg") blob = cv2.dnn.blobFromImage(img, 0.00392, (416,416), swapRB=True, crop=False) net.setInput(blob) outs = net.forward(output_layers) print("Number of detections:", len(outs)) ۳۹. طبقهبندی گل Iris با Random Forest
from sklearn.datasets import load_iris from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split data = load_iris() X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2) model = RandomForestClassifier() model.fit(X_train, y_train) print(model.score(X_test, y_test)) ۴۰. کاهش ابعاد با PCA و نمایش گرافیکی
from sklearn.decomposition import PCA import matplotlib.pyplot as plt from sklearn.datasets import load_iris data = load_iris() pca = PCA(n_components=2) X_pca = pca.fit_transform(data.data) plt.scatter(X_pca[:,0], X_pca[:,1], c=data.target) plt.show()پروژههای ۴۱–۶۰
۴۱. پیشبینی فروش با Linear Regression و دادههای زمانبندی
۴۲. خوشهبندی مشتریان با KMeans (Customer Segmentation)
۴۳. تشخیص اعداد دستنویس با SVM (MNIST)
۴۴. پیشبینی قیمت خانه با Random Forest
۴۵. طبقهبندی اخبار با Naive Bayes
۴۶. ترجمه متن با Transformer ساده (Hugging Face)
۴۷. تولید متن با GPT-2 (Hugging Face)
۴۸. شناسایی اشیاء با MobileNet (TensorFlow/Keras)
۴۹. شناسایی احساسات با BERT
۵۰. کاهش ابعاد با t-SNE و نمایش دادهها
۵۱. پیشبینی نرخ ارز با LSTM (Keras)
۵۲. شبکه GAN برای تولید دستخط (MNIST)
۵۳. تحلیل خوشهای تصاویر با KMeans (Feature Extraction با CNN)
۴۱. پیشبینی فروش با Linear Regression و دادههای زمانبندی
import pandas as pd from sklearn.linear_model import LinearRegression data = pd.read_csv('sales.csv') # فرضی: ستون 'Month' و 'Sales' X = data[['Month']] y = data['Sales'] model = LinearRegression() model.fit(X, y) print(model.predict([[13]])) # پیشبینی ماه ۱۳ ۴۲. خوشهبندی مشتریان با KMeans (Customer Segmentation)
import pandas as pd from sklearn.cluster import KMeans data = pd.read_csv('customers.csv') # ستون 'Age' و 'SpendingScore' kmeans = KMeans(n_clusters=3) data['Cluster'] = kmeans.fit_predict(data[['Age','SpendingScore']]) print(data.head()) ۴۳. تشخیص اعداد دستنویس با SVM (MNIST)
from sklearn import datasets, svm from sklearn.model_selection import train_test_split digits = datasets.load_digits() X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target, test_size=0.2) clf = svm.SVC() clf.fit(X_train, y_train) print(clf.score(X_test, y_test)) ۴۴. پیشبینی قیمت خانه با Random Forest
import pandas as pd from sklearn.ensemble import RandomForestRegressor data = pd.read_csv('housing.csv') X = data[['Rooms','Area','Age']] y = data['Price'] model = RandomForestRegressor() model.fit(X, y) print(model.predict([[3,120,10]])) ۴۵. طبقهبندی اخبار با Naive Bayes
from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayes import MultinomialNB texts = ["AI is great", "Python is awesome", "I hate bugs"] labels = [1,1,0] # 1=Positive, 0=Negative vectorizer = CountVectorizer() X = vectorizer.fit_transform(texts) model = MultinomialNB() model.fit(X, labels) print(model.predict(vectorizer.transform(["I love Python"]))) ۴۶. ترجمه متن با Transformer ساده (Hugging Face)
from transformers import pipeline translator = pipeline("translation_en_to_fr") print(translator("Hello, how are you?")[0]['translation_text']) ۴۷. تولید متن با GPT-2 (Hugging Face)
from transformers import pipeline generator = pipeline('text-generation', model='gpt2') print(generator("Once upon a time", max_length=50)) ۴۸. شناسایی اشیاء با MobileNet (TensorFlow/Keras)
import tensorflow as tf from tensorflow.keras.applications.mobilenet_v2 import MobileNetV2, preprocess_input, decode_predictions import numpy as np from tensorflow.keras.preprocessing import image model = MobileNetV2(weights='imagenet') img = image.load_img('dog.jpg', target_size=(224,224)) x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) preds = model.predict(x) print(decode_predictions(preds, top=3)[0]) ۴۹. شناسایی احساسات با BERT
from transformers import pipeline nlp = pipeline("sentiment-analysis") print(nlp("I love AI progress!")) ۵۰. کاهش ابعاد با t-SNE و نمایش دادهها
from sklearn.manifold import TSNE import matplotlib.pyplot as plt from sklearn.datasets import load_iris data = load_iris() tsne = TSNE(n_components=2, random_state=42) X_tsne = tsne.fit_transform(data.data) plt.scatter(X_tsne[:,0], X_tsne[:,1], c=data.target) plt.show() ۵۱. پیشبینی نرخ ارز با LSTM (Keras)
import numpy as np from tensorflow.keras.models import Sequential from tensorflow.keras.layers import LSTM, Dense data = np.random.rand(100,1) # فرضی X = data[:-1].reshape((99,1,1)) y = data[1:] model = Sequential([LSTM(50, input_shape=(1,1)), Dense(1)]) model.compile(optimizer='adam', loss='mse') model.fit(X, y, epochs=10) ۵۲. شبکه GAN برای تولید دستخط (MNIST)
مشابه پروژه قبلی GAN، با تغییر دادهها به دستنویس MNIST.
۵۳. تحلیل خوشهای تصاویر با KMeans (Feature Extraction با CNN)
from sklearn.cluster import KMeans import numpy as np from tensorflow.keras.applications.vgg16 import VGG16, preprocess_input from tensorflow.keras.preprocessing import image model = VGG16(weights='imagenet', include_top=False) img = image.load_img('cat.jpg', target_size=(224,224)) x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) features = model.predict(x) features_flat = features.flatten().reshape(1, -1) kmeans = KMeans(n_clusters=2).fit(features_flat) print(kmeans.labels_)۵۴. طبقهبندی تصاویر میوه با CNN ساده (Keras)
۵۵. تشخیص اسپم ایمیل با Naive Bayes
۵۶. پیشبینی ترافیک با Recurrent Neural Network
۵۷. تحلیل سریهای زمانی با Prophet
۵۸. طبقهبندی صدا با CNN 1D
۵۹. تشخیص حرکات دست با OpenCV و MediaPipe
۶۰. پیشبینی بیماری قلبی با Random Forest
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=(64,64,3)), MaxPooling2D(), Flatten(), Dense(128, activation='relu'), Dense(3, activation='softmax') # سه کلاس میوه ]) ۵۵. تشخیص اسپم ایمیل با Naive Bayes
from sklearn.feature_extraction.text import CountVectorizer from sklearn.naive_bayes import MultinomialNB emails = ["Free money", "Meeting at 10", "Win big prize"] labels = [1,0,1] # 1=Spam, 0=Ham vectorizer = CountVectorizer() X = vectorizer.fit_transform(emails) model = MultinomialNB() model.fit(X, labels) print(model.predict(vectorizer.transform(["Win a free trip"]))) ۵۶. پیشبینی ترافیک با Recurrent Neural Network
مشابه پروژه LSTM، فقط دادههای ورودی متوالی (Time Series Traffic) هستند.
۵۷. تحلیل سریهای زمانی با Prophet
from prophet import Prophet import pandas as pd df = pd.DataFrame({'ds': pd.date_range(start='2025-01-01', periods=10), 'y':[10,12,15,14,16,18,17,19,21,22]}) m = Prophet() m.fit(df) future = m.make_future_dataframe(periods=5) forecast = m.predict(future) print(forecast[['ds','yhat']]) ۵۸. طبقهبندی صدا با CNN 1D
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv1D, Dense, Flatten model = Sequential([ Conv1D(16, 3, activation='relu', input_shape=(1000,1)), Flatten(), Dense(10, activation='softmax') ]) ۵۹. تشخیص حرکات دست با OpenCV و MediaPipe
import cv2 import mediapipe as mp mp_hands = mp.solutions.hands hands = mp_hands.Hands() cap = cv2.VideoCapture(0) ret, frame = cap.read() results = hands.process(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)) print(results.multi_hand_landmarks) ۶۰. پیشبینی بیماری قلبی با Random Forest
import pandas as pd from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split data = pd.read_csv('heart.csv') X = data.drop('target', axis=1) y = data['target'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) model = RandomForestClassifier() model.fit(X_train, y_train) print(model.score(X_test, y_test))پروژههای 61 تا 100 که مربوط به هوش مصنوعی، یادگیری ماشین و یادگیری عمیق هستند. اینها شامل مثالهای عملی و قابل اجرا با پایتون و کتابخانههایی مثل numpy, pandas, scikit-learn, tensorflow, keras خواهند بود.
پروژه 61–80: یادگیری ماشین پایه
61. پیشبینی قیمت خانه (Linear Regression)
62. طبقهبندی گلها (Iris Dataset)
63. استانداردسازی دادهها
64. تقسیم داده به آموزش و تست
65. الگوریتم k-NN
66. الگوریتم Naive Bayes
67. الگوریتم SVM
68. درخت تصمیم و تصویرسازی
69. محاسبه دقت مدل
70. رگرسیون چند متغیره
71. PCA برای کاهش بعد
72. خوشهبندی K-Means
73. خوشهبندی Hierarchical
74. محاسبه ماتریس درهم ریختگی
75. cross-validation ساده
76. GridSearch برای هایپرپارامتر
77. بردارهای ویژگی با CountVectorizer
پروژه 61–80: یادگیری ماشین پایه
61. پیشبینی قیمت خانه (Linear Regression)
from sklearn.linear_model import LinearRegression import numpy as np X = np.array([[1000], [1500], [2000], [2500]]) y = np.array([200000, 250000, 300000, 350000]) model = LinearRegression() model.fit(X, y) print(model.predict([[1800]])) 62. طبقهبندی گلها (Iris Dataset)
from sklearn.datasets import load_iris from sklearn.tree import DecisionTreeClassifier iris = load_iris() X, y = iris.data, iris.target model = DecisionTreeClassifier() model.fit(X, y) print(model.predict([X[0]])) 63. استانداردسازی دادهها
from sklearn.preprocessing import StandardScaler import numpy as np data = np.array([[1,2],[3,4],[5,6]]) scaler = StandardScaler() scaled = scaler.fit_transform(data) print(scaled) 64. تقسیم داده به آموزش و تست
from sklearn.model_selection import train_test_split X = [[1],[2],[3],[4],[5]] y = [1,2,3,4,5] X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2) print(X_train, X_test) 65. الگوریتم k-NN
from sklearn.neighbors import KNeighborsClassifier X = [[0],[1],[2],[3]] y = [0,0,1,1] model = KNeighborsClassifier(n_neighbors=1) model.fit(X,y) print(model.predict([[1.1]])) 66. الگوریتم Naive Bayes
from sklearn.naive_bayes import GaussianNB X = [[1],[2],[3],[4]] y = [0,0,1,1] model = GaussianNB() model.fit(X,y) print(model.predict([[2.5]])) 67. الگوریتم SVM
from sklearn.svm import SVC X = [[0],[1],[2],[3]] y = [0,0,1,1] model = SVC() model.fit(X,y) print(model.predict([[1.5]])) 68. درخت تصمیم و تصویرسازی
from sklearn.tree import DecisionTreeClassifier, export_text X = [[0],[1],[2],[3]] y = [0,0,1,1] model = DecisionTreeClassifier() model.fit(X,y) print(export_text(model)) 69. محاسبه دقت مدل
from sklearn.metrics import accuracy_score y_true = [0,1,1,0] y_pred = [0,1,0,0] print(accuracy_score(y_true, y_pred)) 70. رگرسیون چند متغیره
from sklearn.linear_model import LinearRegression import numpy as np X = np.array([[1,2],[2,3],[3,4]]) y = np.array([3,5,7]) model = LinearRegression() model.fit(X,y) print(model.predict([[4,5]])) 71. PCA برای کاهش بعد
from sklearn.decomposition import PCA import numpy as np X = np.array([[1,2,3],[4,5,6],[7,8,9]]) pca = PCA(n_components=2) X_new = pca.fit_transform(X) print(X_new) 72. خوشهبندی K-Means
from sklearn.cluster import KMeans import numpy as np X = np.array([[1,2],[1,4],[5,6],[6,7]]) kmeans = KMeans(n_clusters=2) kmeans.fit(X) print(kmeans.labels_) 73. خوشهبندی Hierarchical
from scipy.cluster.hierarchy import dendrogram, linkage import matplotlib.pyplot as plt import numpy as np X = np.array([[1,2],[1,4],[5,6],[6,7]]) linked = linkage(X, 'single') dendrogram(linked) plt.show() 74. محاسبه ماتریس درهم ریختگی
from sklearn.metrics import confusion_matrix y_true = [0,1,0,1] y_pred = [0,1,1,1] print(confusion_matrix(y_true, y_pred)) 75. cross-validation ساده
from sklearn.model_selection import cross_val_score from sklearn.linear_model import LogisticRegression import numpy as np X = np.array([[1],[2],[3],[4]]) y = np.array([0,0,1,1]) model = LogisticRegression() scores = cross_val_score(model, X, y, cv=2) print(scores) 76. GridSearch برای هایپرپارامتر
from sklearn.model_selection import GridSearchCV from sklearn.svm import SVC X = [[0],[1],[2],[3]] y = [0,0,1,1] params = {'C':[0.1,1,10]} grid = GridSearchCV(SVC(), param_grid=params) grid.fit(X,y) print(grid.best_params_) 77. بردارهای ویژگی با CountVectorizer
from sklearn.feature_extraction.text import CountVectorizer texts = ["I love AI", "AI is great"] vectorizer = CountVectorizer() X = vectorizer.fit_transform(texts) print(X.toarray())78. TF-IDF ساده
79. مدل ساده شبکه عصبی با Keras
80. پیشبینی چندکلاسه با شبکه عصبی
from sklearn.feature_extraction.text import TfidfVectorizer texts = ["I love AI", "AI is great"] vectorizer = TfidfVectorizer() X = vectorizer.fit_transform(texts) print(X.toarray()) 79. مدل ساده شبکه عصبی با Keras
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense import numpy as np X = np.array([[0],[1],[2],[3]]) y = np.array([0,0,1,1]) model = Sequential([Dense(1,input_dim=1,activation='sigmoid')]) model.compile(optimizer='adam', loss='binary_crossentropy') model.fit(X,y,epochs=50,verbose=0) print(model.predict(X)) 80. پیشبینی چندکلاسه با شبکه عصبی
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense import numpy as np X = np.array([[0,0],[0,1],[1,0],[1,1]]) y = np.array([[1,0,0],[0,1,0],[0,1,0],[0,0,1]]) # one-hot model = Sequential([Dense(3,input_dim=2,activation='softmax')]) model.compile(optimizer='adam', loss='categorical_crossentropy') model.fit(X,y,epochs=100,verbose=0) print(model.predict(X))پروژههای 81 تا 100: یادگیری عمیق پیشرفته، CNN، RNN، پردازش تصویر و NLP.
پروژه 81–100: یادگیری عمیق پیشرفته
81. شبکه عصبی کانولوشنی (CNN) برای MNIST
82. شبکه عصبی بازگشتی (RNN) ساده
83. LSTM برای پیشبینی سری زمانی
84. GRU ساده
85. Autoencoder ساده
86. GAN ساده
(نمونه پایه GAN برای شروع)
87. پردازش متن با Embedding
88. پردازش متن با LSTM
89. تحلیل احساسات (Sentiment Analysis)
90. شبکه CNN برای متن
پروژه 81–100: یادگیری عمیق پیشرفته
81. شبکه عصبی کانولوشنی (CNN) برای MNIST
from tensorflow.keras.datasets import mnist from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense from tensorflow.keras.utils import to_categorical (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 y_train = to_categorical(y_train) y_test = to_categorical(y_test) model = Sequential([ Conv2D(32,(3,3),activation='relu',input_shape=(28,28,1)), MaxPooling2D((2,2)), Flatten(), Dense(128,activation='relu'), Dense(10,activation='softmax') ]) model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) model.fit(X_train, y_train, epochs=3, batch_size=32, verbose=1) print(model.evaluate(X_test, y_test)) 82. شبکه عصبی بازگشتی (RNN) ساده
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import SimpleRNN, Dense import numpy as np X = np.random.rand(100,10,1) y = np.random.rand(100,1) model = Sequential([ SimpleRNN(10, input_shape=(10,1)), Dense(1) ]) model.compile(optimizer='adam', loss='mse') model.fit(X,y,epochs=5) 83. LSTM برای پیشبینی سری زمانی
from tensorflow.keras.layers import LSTM X = np.random.rand(100,5,1) y = np.random.rand(100,1) model = Sequential([ LSTM(20, input_shape=(5,1)), Dense(1) ]) model.compile(optimizer='adam', loss='mse') model.fit(X,y,epochs=5) 84. GRU ساده
from tensorflow.keras.layers import GRU X = np.random.rand(50,4,1) y = np.random.rand(50,1) model = Sequential([GRU(10, input_shape=(4,1)), Dense(1)]) model.compile(optimizer='adam', loss='mse') model.fit(X,y,epochs=5) 85. Autoencoder ساده
from tensorflow.keras.layers import Input, Dense from tensorflow.keras.models import Model import numpy as np X = np.random.rand(100,20) input_layer = Input(shape=(20,)) encoded = Dense(10, activation='relu')(input_layer) decoded = Dense(20, activation='sigmoid')(encoded) autoencoder = Model(input_layer, decoded) autoencoder.compile(optimizer='adam', loss='mse') autoencoder.fit(X,X,epochs=10) 86. GAN ساده
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense import numpy as np # Generator generator = Sequential([Dense(16,input_dim=5,activation='relu'), Dense(1,activation='sigmoid')]) # Discriminator discriminator = Sequential([Dense(16,input_dim=1,activation='relu'), Dense(1,activation='sigmoid')]) (نمونه پایه GAN برای شروع)
87. پردازش متن با Embedding
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Embedding, Flatten, Dense import numpy as np X = np.random.randint(0,100, (10,5)) y = np.random.randint(0,2,(10,1)) model = Sequential([Embedding(input_dim=100, output_dim=8, input_length=5), Flatten(), Dense(1,activation='sigmoid')]) model.compile(optimizer='adam', loss='binary_crossentropy') model.fit(X,y,epochs=5) 88. پردازش متن با LSTM
from tensorflow.keras.layers import LSTM model = Sequential([ Embedding(input_dim=100, output_dim=8, input_length=5), LSTM(16), Dense(1,activation='sigmoid') ]) model.compile(optimizer='adam', loss='binary_crossentropy') 89. تحلیل احساسات (Sentiment Analysis)
from sklearn.model_selection import train_test_split from tensorflow.keras.preprocessing.text import Tokenizer from tensorflow.keras.preprocessing.sequence import pad_sequences texts = ["I love AI", "I hate bugs"] labels = [1,0] tokenizer = Tokenizer(num_words=100) tokenizer.fit_on_texts(texts) X = tokenizer.texts_to_sequences(texts) X = pad_sequences(X, maxlen=5) y = np.array(labels) 90. شبکه CNN برای متن
from tensorflow.keras.layers import Conv1D, MaxPooling1D model = Sequential([ Embedding(input_dim=100, output_dim=8, input_length=5), Conv1D(16, 3, activation='relu'), MaxPooling1D(2), Flatten(), Dense(1, activation='sigmoid') ]) model.compile(optimizer='adam', loss='binary_crossentropy')91. پیشبینی تصویر با CNN سفارشی
92. انتقال یادگیری (Transfer Learning) با VGG16
93. طبقهبندی تصویر با ResNet50
94. شناسایی اشیاء ساده با YOLO (پایه)
95. تشخیص چهره با OpenCV
96. پیشبینی توالی با RNN
97. ترجمه متن ساده با Seq2Seq
98. شبیهسازی چتبات ساده
99. پیشبینی قیمت سهام با RNN
100. سیستم پیشنهاددهی ساده (Collaborative Filtering)
# مشابه MNIST، اما میتوانید دادههای دلخواه را بارگذاری کنید 92. انتقال یادگیری (Transfer Learning) با VGG16
from tensorflow.keras.applications import VGG16 from tensorflow.keras.models import Model from tensorflow.keras.layers import Dense, Flatten base_model = VGG16(weights='imagenet', include_top=False, input_shape=(64,64,3)) x = Flatten()(base_model.output) x = Dense(10, activation='softmax')(x) model = Model(base_model.input, x) 93. طبقهبندی تصویر با ResNet50
from tensorflow.keras.applications import ResNet50 # مشابه مثال بالا 94. شناسایی اشیاء ساده با YOLO (پایه)
# میتوان از کتابخانه yolov5 استفاده کرد 95. تشخیص چهره با OpenCV
import cv2 face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') img = cv2.imread('image.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray,1.3,5) print(faces) 96. پیشبینی توالی با RNN
# مشابه LSTM/Gru، با دادههای توالی 97. ترجمه متن ساده با Seq2Seq
# استفاده از LSTM encoder-decoder 98. شبیهسازی چتبات ساده
# استفاده از LSTM + Embedding 99. پیشبینی قیمت سهام با RNN
# مشابه LSTM سری زمانی 100. سیستم پیشنهاددهی ساده (Collaborative Filtering)
import numpy as np ratings = np.array([[5,3,0],[4,0,0],[1,1,0]]) user_mean = np.mean(ratings, axis=1).reshape(-1,1) ratings_diff = ratings - user_mean # مشابه SVD یا مدلهای ساده پیشنهاددهنده۱۰۰ نکته و ترفند حرفهای پایتون (شماره ۱ تا ۱۰۰)
۱–۲۰: نکات و ترفندهای پایتون با کد
۱. swap دو متغیر بدون متغیر کمکی
a, b = 5, 10 a, b = b, a print(a, b) # 10 5
۲. معکوس کردن رشته با slicing
s = "Python" print(s[::-1]) # nohtyP
۳. معکوس کردن لیست با slicing
lst = [1, 2, 3] print(lst[::-1]) # [3,2,1]
۴. جمع و میانگین لیست با یک خط
lst = [1,2,3,4] print(sum(lst), sum(lst)/len(lst)) # 10 2.5
۵. پیدا کردن بیشترین و کمترین مقدار با یک خط
lst = [5,1,8,3] print(max(lst), min(lst)) # 8 1
۶. استفاده حرفهای از enumerate
lst = ["a","b","c"] for idx, val in enumerate(lst, start=1): print(idx, val)
۷. ترکیب دو لیست با zip
names = ["Ali","Sara"] ages = [25,30] for n,a in zip(names, ages): print(n,a)
۸. بررسی اینکه همه یا یکی از مقادیر True است
lst = [0,1,2] print(all(lst), any(lst)) # False True
*۹. unpacking چند متغیر با rest
a, *rest, b = [1,2,3,4,5] print(a, rest, b) # 1 [2,3,4] 5
۱۰. ساخت دیکشنری از دو لیست
keys = ["a","b"] values = [1,2] d = dict(zip(keys, values)) print(d) # {'a':1,'b':2}
۱۱. merge کردن دو دیکشنری (Python 3.9+)
d1 = {"a":1} d2 = {"b":2} d3 = d1 | d2 print(d3) # {'a':1,'b':2}
۱۲. شمارش عناصر تکراری با collections.Counter
from collections import Counter lst = [1,2,2,3] print(Counter(lst)) # Counter({2:2,1:1,3:1})
۱۳. مرتبسازی دیکشنری بر اساس مقدار
d = {"a":3,"b":1} print(sorted(d.items(), key=lambda x: x[1])) # [('b',1),('a',3)]
۱۴. استفاده کوتاه از lambda
f = lambda x: x**2 print(f(5)) # 25
۱۵. map و filter با lambda
lst = [1,2,3,4] print(list(map(lambda x:x*2,lst))) # [2,4,6,8] print(list(filter(lambda x:x>2,lst))) # [3,4]
۱۶. reduce برای جمع یا ضرب لیست
from functools import reduce lst = [1,2,3,4] print(reduce(lambda x,y: x*y,lst)) # 24
۱۷. one-liner swap دو متغیر با tuple
a,b = 1,2; a,b = b,a; print(a,b) # 2 1
۱۸. بررسی نوع متغیر در یک خط
x = 10 print(type(x) is int) # True
۱۹. ساخت لیست از رشته با comprehension
s = "Python" lst = [c.upper() for c in s] print(lst) # ['P','Y','T','H','O','N']
۲۰. حذف فاصلهها از لیست رشتهها
lst = [" a "," b "] lst = [x.strip() for x in lst] print(lst) # ['a','b']
---
۲۱–۴۰: نکات حرفهای پایتون
۲۱. تبدیل لیست به set برای حذف تکراریها
lst = [1,2,2,3]
print(list(set(lst))) # [1,2,3]
۲۲. بررسی اینکه رشته با prefix یا suffix شروع/تمام میشود
s = "Python3"
print(s.startswith("Py"), s.endswith("3")) # True True
۲۳. استفاده از f-string برای قالببندی حرفهای
name = "Ali"
age = 25
print(f"My name is {name} and age is {age}")
۲۴. multi-line f-string
name = "Sara"
msg = f"""Hello {name},
Welcome to Python!"""
print(msg)
۲۵. join برای ادغام رشتهها
lst = ["a","b","c"]
print("-".join(lst)) # a-b-c
۲۶. split برای جدا کردن رشته
s = "a,b,c"
print(s.split(",")) # ['a','b','c']
۲۷. تبدیل عدد به رشته و بالعکس
n = 123
s = str(n)
print(s, int(s)+1) # '123' 124
۲۸. شمارش کاراکترها در رشته
s = "hello"
print(s.count("l")) # 2
۲۹. بررسی اینکه همه حروف رشته حروف الفبا هستند
s = "Hello"
print(s.isalpha()) # True
۳۰. بررسی اینکه همه کاراکترها عدد هستند
s = "123"
print(s.isdigit()) # True
۳۱. تبدیل همه حروف به بزرگ/کوچک
s = "Python"
print(s.upper(), s.lower()) # PYTHON python
۳۲. replace برای جایگزینی متن
s = "Python is fun"
print(s.replace("fun","awesome")) # Python is awesome
۳۳. استفاده از strip برای حذف فاصلههای اضافی
s = " hello "
print(s.strip()) # hello
۳۴. حذف فاصلههای سمت چپ و راست به طور جداگانه
s = " hello "
print(s.lstrip(), s.rstrip()) # 'hello ' ' hello'
۳۵. قالببندی عدد با f-string و تعداد رقم
x = 3.14159
print(f"{x:.2f}") # 3.14
۳۶. قالببندی عدد با padding
n = 5
print(f"{n:03}") # 005
۳۷. استفاده از slicing برای استخراج substring
s = "Python"
print(s[1:4]) # yth
۳۸. negative indexing
s = "Python"
print(s[-1], s[-3:-1]) # n ho
۳۹. دسترسی به آخرین عنصر لیست با -1
lst = [1,2,3]
print(lst[-1]) # 3
۴۰. حذف عنصر از لیست با pop
lst = [1,2,3]
lst.pop() # حذف آخرین
lst.pop(0) # حذف اولین
print(lst) # [2]
---
۴۱–۶۰: نکات حرفهای پایتون
۴۱. حذف همه عناصر یک لیست
lst = [1,2,3] lst.clear() print(lst) # []
۴۲. گرفتن طول لیست، رشته یا دیکشنری
۱–۲۰: نکات و ترفندهای پایتون با کد
۱. swap دو متغیر بدون متغیر کمکی
a, b = 5, 10 a, b = b, a print(a, b) # 10 5
۲. معکوس کردن رشته با slicing
s = "Python" print(s[::-1]) # nohtyP
۳. معکوس کردن لیست با slicing
lst = [1, 2, 3] print(lst[::-1]) # [3,2,1]
۴. جمع و میانگین لیست با یک خط
lst = [1,2,3,4] print(sum(lst), sum(lst)/len(lst)) # 10 2.5
۵. پیدا کردن بیشترین و کمترین مقدار با یک خط
lst = [5,1,8,3] print(max(lst), min(lst)) # 8 1
۶. استفاده حرفهای از enumerate
lst = ["a","b","c"] for idx, val in enumerate(lst, start=1): print(idx, val)
۷. ترکیب دو لیست با zip
names = ["Ali","Sara"] ages = [25,30] for n,a in zip(names, ages): print(n,a)
۸. بررسی اینکه همه یا یکی از مقادیر True است
lst = [0,1,2] print(all(lst), any(lst)) # False True
*۹. unpacking چند متغیر با rest
a, *rest, b = [1,2,3,4,5] print(a, rest, b) # 1 [2,3,4] 5
۱۰. ساخت دیکشنری از دو لیست
keys = ["a","b"] values = [1,2] d = dict(zip(keys, values)) print(d) # {'a':1,'b':2}
۱۱. merge کردن دو دیکشنری (Python 3.9+)
d1 = {"a":1} d2 = {"b":2} d3 = d1 | d2 print(d3) # {'a':1,'b':2}
۱۲. شمارش عناصر تکراری با collections.Counter
from collections import Counter lst = [1,2,2,3] print(Counter(lst)) # Counter({2:2,1:1,3:1})
۱۳. مرتبسازی دیکشنری بر اساس مقدار
d = {"a":3,"b":1} print(sorted(d.items(), key=lambda x: x[1])) # [('b',1),('a',3)]
۱۴. استفاده کوتاه از lambda
f = lambda x: x**2 print(f(5)) # 25
۱۵. map و filter با lambda
lst = [1,2,3,4] print(list(map(lambda x:x*2,lst))) # [2,4,6,8] print(list(filter(lambda x:x>2,lst))) # [3,4]
۱۶. reduce برای جمع یا ضرب لیست
from functools import reduce lst = [1,2,3,4] print(reduce(lambda x,y: x*y,lst)) # 24
۱۷. one-liner swap دو متغیر با tuple
a,b = 1,2; a,b = b,a; print(a,b) # 2 1
۱۸. بررسی نوع متغیر در یک خط
x = 10 print(type(x) is int) # True
۱۹. ساخت لیست از رشته با comprehension
s = "Python" lst = [c.upper() for c in s] print(lst) # ['P','Y','T','H','O','N']
۲۰. حذف فاصلهها از لیست رشتهها
lst = [" a "," b "] lst = [x.strip() for x in lst] print(lst) # ['a','b']
---
۲۱–۴۰: نکات حرفهای پایتون
۲۱. تبدیل لیست به set برای حذف تکراریها
lst = [1,2,2,3]
print(list(set(lst))) # [1,2,3]
۲۲. بررسی اینکه رشته با prefix یا suffix شروع/تمام میشود
s = "Python3"
print(s.startswith("Py"), s.endswith("3")) # True True
۲۳. استفاده از f-string برای قالببندی حرفهای
name = "Ali"
age = 25
print(f"My name is {name} and age is {age}")
۲۴. multi-line f-string
name = "Sara"
msg = f"""Hello {name},
Welcome to Python!"""
print(msg)
۲۵. join برای ادغام رشتهها
lst = ["a","b","c"]
print("-".join(lst)) # a-b-c
۲۶. split برای جدا کردن رشته
s = "a,b,c"
print(s.split(",")) # ['a','b','c']
۲۷. تبدیل عدد به رشته و بالعکس
n = 123
s = str(n)
print(s, int(s)+1) # '123' 124
۲۸. شمارش کاراکترها در رشته
s = "hello"
print(s.count("l")) # 2
۲۹. بررسی اینکه همه حروف رشته حروف الفبا هستند
s = "Hello"
print(s.isalpha()) # True
۳۰. بررسی اینکه همه کاراکترها عدد هستند
s = "123"
print(s.isdigit()) # True
۳۱. تبدیل همه حروف به بزرگ/کوچک
s = "Python"
print(s.upper(), s.lower()) # PYTHON python
۳۲. replace برای جایگزینی متن
s = "Python is fun"
print(s.replace("fun","awesome")) # Python is awesome
۳۳. استفاده از strip برای حذف فاصلههای اضافی
s = " hello "
print(s.strip()) # hello
۳۴. حذف فاصلههای سمت چپ و راست به طور جداگانه
s = " hello "
print(s.lstrip(), s.rstrip()) # 'hello ' ' hello'
۳۵. قالببندی عدد با f-string و تعداد رقم
x = 3.14159
print(f"{x:.2f}") # 3.14
۳۶. قالببندی عدد با padding
n = 5
print(f"{n:03}") # 005
۳۷. استفاده از slicing برای استخراج substring
s = "Python"
print(s[1:4]) # yth
۳۸. negative indexing
s = "Python"
print(s[-1], s[-3:-1]) # n ho
۳۹. دسترسی به آخرین عنصر لیست با -1
lst = [1,2,3]
print(lst[-1]) # 3
۴۰. حذف عنصر از لیست با pop
lst = [1,2,3]
lst.pop() # حذف آخرین
lst.pop(0) # حذف اولین
print(lst) # [2]
---
۴۱–۶۰: نکات حرفهای پایتون
۴۱. حذف همه عناصر یک لیست
lst = [1,2,3] lst.clear() print(lst) # []
۴۲. گرفتن طول لیست، رشته یا دیکشنری
lst = [1,2,3] d = {"a":1,"b":2} s = "Python" print(len(lst), len(d), len(s)) # 3 2 6
۴۳. بررسی وجود عنصر در لیست یا رشته
lst = [1,2,3] s = "Python" print(2 in lst, "Py" in s) # True True
۴۴. مرتبسازی لیست
lst = [3,1,2] lst.sort() print(lst) # [1,2,3]
۴۵. معکوس کردن لیست
lst = [1,2,3] lst.reverse() print(lst) # [3,2,1]
۴۶. کپی کردن لیست بدون تغییر لیست اصلی
lst1 = [1,2,3] lst2 = lst1.copy() lst2.append(4) print(lst1, lst2) # [1,2,3] [1,2,3,4]
۴۷. استفاده از enumerate برای گرفتن اندیس و مقدار همزمان
lst = ["a","b","c"] for i,val in enumerate(lst): print(i,val)
۴۸. استفاده از zip برای ترکیب دو لیست
a = [1,2] b = ["x","y"] for x,y in zip(a,b): print(x,y)
۴۹. ساخت لیست با comprehension
lst = [x**2 for x in range(5)] print(lst) # [0,1,4,9,16]
۵۰. شرط در list comprehension
lst = [x for x in range(10) if x%2==0] print(lst) # [0,2,4,6,8]
۵۱. ساخت دیکشنری با comprehension
d = {x:x**2 for x in range(5)} print(d) # {0:0,1:1,2:4,3:9,4:16}
۵۲. استفاده از get در دیکشنری برای جلوگیری از خطا
d = {"a":1} print(d.get("b",0)) # 0
۵۳. حذف کلید از دیکشنری با pop
d = {"a":1,"b":2} d.pop("a") print(d) # {"b":2}
۵۴. دسترسی به کلیدها، مقادیر و جفتها
d = {"a":1,"b":2} print(d.keys(), d.values(), d.items())
۵۵. استفاده از set comprehension
s = {x**2 for x in range(5)} print(s) # {0,1,4,9,16}
۵۶. بررسی زیرمجموعه بودن set
a = {1,2,3} b = {2,3} print(b.issubset(a)) # True
۵۷. union و intersection در set
a = {1,2} b = {2,3} print(a|b, a&b) # {1,2,3} {2}
۵۸. copy و deepcopy برای اشیاء پیچیده
import copy lst1 = [[1,2],[3,4]] lst2 = copy.deepcopy(lst1) lst2[0][0] = 100 print(lst1, lst2) # [[1,2],[3,4]] [[100,2],[3,4]]
۵۹. استفاده از lambda برای توابع کوتاه
f = lambda x: x**2 print(f(5)) # 25
۶۰. استفاده از map برای اعمال تابع روی همه عناصر
lst = [1,2,3] squared = list(map(lambda x:x**2,lst)) print(squared) # [1,4,9]
۶۱–۸۰: نکات حرفهای پایتون
۶۱. استفاده از filter برای فیلتر کردن لیست
lst = [1,2,3,4,5]
even = list(filter(lambda x: x%2==0, lst))
print(even) # [2,4]
۶۲. استفاده از reduce برای جمع عناصر
from functools import reduce
lst = [1,2,3,4]
total = reduce(lambda x,y: x+y, lst)
print(total) # 10
۶۳. مرتبسازی با کلید دلخواه (key)
lst = ["apple","banana","kiwi"]
lst.sort(key=len)
print(lst) # ['kiwi','apple','banana']
۶۴. معکوس کردن رشته با slicing
s = "Python"
print(s[::-1]) # "nohtyP"
۶۵. استفاده از any و all
lst = [True, False, True]
print(any(lst), all(lst)) # True False
۶۶. شمارش تعداد عنصر در لیست با count
lst = [1,2,2,3]
print(lst.count(2)) # 2
۶۷. تبدیل لیست به رشته با join
lst = ["Python","is","fun"]
s = " ".join(lst)
print(s) # "Python is fun"
۶۸. شکستن رشته به لیست با split
s = "Python is fun"
lst = s.split()
print(lst) # ['Python','is','fun']
۶۹. حذف فاصلههای اضافی با strip
s = " hello "
print(s.strip()) # "hello"
۷۰. تعویض مقدار با replace در رشته
s = "Python is fun"
print(s.replace("fun","awesome")) # "Python is awesome"
۷۱. استفاده از enumerate با شروع از اندیس دلخواه
lst = ["a","b"]
for i,val in enumerate(lst, start=1):
print(i,val) # 1 a \n 2 b
۷۲. گرفتن اولین n عنصر لیست
lst = [1,2,3,4]
print(lst[:2]) # [1,2]
۷۳. گرفتن آخرین n عنصر لیست
lst = [1,2,3,4]
print(lst[-2:]) # [3,4]
۷۴. استفاده از iter و next برای پیمایش
lst = [1,2,3]
it = iter(lst)
print(next(it)) # 1
print(next(it)) # 2
۷۵. استفاده از enumerate و zip همزمان
names = ["Alice","Bob"]
ages = [25,30]
for i,(name,age) in enumerate(zip(names,ages)):
print(i,name,age)
۷۶. گرفتن بزرگترین و کوچکترین عنصر لیست
lst = [3,1,4,2]
print(max(lst), min(lst)) # 4 1
۷۷. ساخت tuple از چند عنصر
t = (1,2,3)
print(t[0], t[-1]) # 1 3
۷۸. تبدیل tuple به لیست و بالعکس
t = (1,2)
lst = list(t)
t2 = tuple(lst)
۷۹. unpacking لیست یا tuple
a,b,c = [1,2,3]
print(a,b,c) # 1 2 3
۸۰. استفاده از _ برای نادیده گرفتن مقدار در unpacking
a, _, c = [1,2,3]
print(a,c) # 1 3
---
۸۱–۱۰۰: نکات پیشرفته و ترکیبی پایتون
۸۱. استفاده از dict comprehension
squares = {x: x**2 for x in range(5)} print(squares) # {0:0,1:1,2:4,3:9,4:16}
۸۲. استفاده از set comprehension
۴۳. بررسی وجود عنصر در لیست یا رشته
lst = [1,2,3] s = "Python" print(2 in lst, "Py" in s) # True True
۴۴. مرتبسازی لیست
lst = [3,1,2] lst.sort() print(lst) # [1,2,3]
۴۵. معکوس کردن لیست
lst = [1,2,3] lst.reverse() print(lst) # [3,2,1]
۴۶. کپی کردن لیست بدون تغییر لیست اصلی
lst1 = [1,2,3] lst2 = lst1.copy() lst2.append(4) print(lst1, lst2) # [1,2,3] [1,2,3,4]
۴۷. استفاده از enumerate برای گرفتن اندیس و مقدار همزمان
lst = ["a","b","c"] for i,val in enumerate(lst): print(i,val)
۴۸. استفاده از zip برای ترکیب دو لیست
a = [1,2] b = ["x","y"] for x,y in zip(a,b): print(x,y)
۴۹. ساخت لیست با comprehension
lst = [x**2 for x in range(5)] print(lst) # [0,1,4,9,16]
۵۰. شرط در list comprehension
lst = [x for x in range(10) if x%2==0] print(lst) # [0,2,4,6,8]
۵۱. ساخت دیکشنری با comprehension
d = {x:x**2 for x in range(5)} print(d) # {0:0,1:1,2:4,3:9,4:16}
۵۲. استفاده از get در دیکشنری برای جلوگیری از خطا
d = {"a":1} print(d.get("b",0)) # 0
۵۳. حذف کلید از دیکشنری با pop
d = {"a":1,"b":2} d.pop("a") print(d) # {"b":2}
۵۴. دسترسی به کلیدها، مقادیر و جفتها
d = {"a":1,"b":2} print(d.keys(), d.values(), d.items())
۵۵. استفاده از set comprehension
s = {x**2 for x in range(5)} print(s) # {0,1,4,9,16}
۵۶. بررسی زیرمجموعه بودن set
a = {1,2,3} b = {2,3} print(b.issubset(a)) # True
۵۷. union و intersection در set
a = {1,2} b = {2,3} print(a|b, a&b) # {1,2,3} {2}
۵۸. copy و deepcopy برای اشیاء پیچیده
import copy lst1 = [[1,2],[3,4]] lst2 = copy.deepcopy(lst1) lst2[0][0] = 100 print(lst1, lst2) # [[1,2],[3,4]] [[100,2],[3,4]]
۵۹. استفاده از lambda برای توابع کوتاه
f = lambda x: x**2 print(f(5)) # 25
۶۰. استفاده از map برای اعمال تابع روی همه عناصر
lst = [1,2,3] squared = list(map(lambda x:x**2,lst)) print(squared) # [1,4,9]
۶۱–۸۰: نکات حرفهای پایتون
۶۱. استفاده از filter برای فیلتر کردن لیست
lst = [1,2,3,4,5]
even = list(filter(lambda x: x%2==0, lst))
print(even) # [2,4]
۶۲. استفاده از reduce برای جمع عناصر
from functools import reduce
lst = [1,2,3,4]
total = reduce(lambda x,y: x+y, lst)
print(total) # 10
۶۳. مرتبسازی با کلید دلخواه (key)
lst = ["apple","banana","kiwi"]
lst.sort(key=len)
print(lst) # ['kiwi','apple','banana']
۶۴. معکوس کردن رشته با slicing
s = "Python"
print(s[::-1]) # "nohtyP"
۶۵. استفاده از any و all
lst = [True, False, True]
print(any(lst), all(lst)) # True False
۶۶. شمارش تعداد عنصر در لیست با count
lst = [1,2,2,3]
print(lst.count(2)) # 2
۶۷. تبدیل لیست به رشته با join
lst = ["Python","is","fun"]
s = " ".join(lst)
print(s) # "Python is fun"
۶۸. شکستن رشته به لیست با split
s = "Python is fun"
lst = s.split()
print(lst) # ['Python','is','fun']
۶۹. حذف فاصلههای اضافی با strip
s = " hello "
print(s.strip()) # "hello"
۷۰. تعویض مقدار با replace در رشته
s = "Python is fun"
print(s.replace("fun","awesome")) # "Python is awesome"
۷۱. استفاده از enumerate با شروع از اندیس دلخواه
lst = ["a","b"]
for i,val in enumerate(lst, start=1):
print(i,val) # 1 a \n 2 b
۷۲. گرفتن اولین n عنصر لیست
lst = [1,2,3,4]
print(lst[:2]) # [1,2]
۷۳. گرفتن آخرین n عنصر لیست
lst = [1,2,3,4]
print(lst[-2:]) # [3,4]
۷۴. استفاده از iter و next برای پیمایش
lst = [1,2,3]
it = iter(lst)
print(next(it)) # 1
print(next(it)) # 2
۷۵. استفاده از enumerate و zip همزمان
names = ["Alice","Bob"]
ages = [25,30]
for i,(name,age) in enumerate(zip(names,ages)):
print(i,name,age)
۷۶. گرفتن بزرگترین و کوچکترین عنصر لیست
lst = [3,1,4,2]
print(max(lst), min(lst)) # 4 1
۷۷. ساخت tuple از چند عنصر
t = (1,2,3)
print(t[0], t[-1]) # 1 3
۷۸. تبدیل tuple به لیست و بالعکس
t = (1,2)
lst = list(t)
t2 = tuple(lst)
۷۹. unpacking لیست یا tuple
a,b,c = [1,2,3]
print(a,b,c) # 1 2 3
۸۰. استفاده از _ برای نادیده گرفتن مقدار در unpacking
a, _, c = [1,2,3]
print(a,c) # 1 3
---
۸۱–۱۰۰: نکات پیشرفته و ترکیبی پایتون
۸۱. استفاده از dict comprehension
squares = {x: x**2 for x in range(5)} print(squares) # {0:0,1:1,2:4,3:9,4:16}
۸۲. استفاده از set comprehension
unique = {x%3 for x in range(10)} print(unique) # {0,1,2}
۸۳. گرفتن عناصر منحصربهفرد لیست با set
lst = [1,2,2,3] unique = list(set(lst)) print(unique) # [1,2,3]
۸۴. مرتبسازی دیکشنری بر اساس مقدار
d = {'a':3,'b':1,'c':2} sorted_items = sorted(d.items(), key=lambda x: x[1]) print(sorted_items) # [('b',1),('c',2),('a',3)]
۸۵. ترکیب چند لیست با zip
names = ["Alice","Bob"] ages = [25,30] for name, age in zip(names, ages): print(name, age)
۸۶. استفاده از get برای دیکشنری با مقدار پیشفرض
d = {"a":1} print(d.get("b",0)) # 0
۸۷. حذف کلید از دیکشنری با pop
d = {"a":1,"b":2} val = d.pop("a") print(d, val) # {'b':2} 1
۸۸. بررسی وجود کلید در دیکشنری
d = {"a":1} print("a" in d, "b" in d) # True False
۸۹. استفاده از defaultdict
from collections import defaultdict d = defaultdict(list) d['a'].append(1) print(d) # defaultdict(<class 'list'>, {'a':[1]})
۹۰. استفاده از Counter برای شمارش عناصر
from collections import Counter lst = [1,2,2,3] count = Counter(lst) print(count) # Counter({2:2,1:1,3:1})
۹۱. مدیریت خطا با try-except
try: x = 1/0 except ZeroDivisionError: print("Cannot divide by zero")
۹۲. finally برای اجرای نهایی
try: x = 1 finally: print("Always executed")
۹۳. ایجاد کلاس ساده
class Person: def init(self, name): self.name = name p = Person("Alice") print(p.name)
۹۴. متد کلاس و نمونه
class Person: def greet(self): print("Hello") p = Person() p.greet() # Hello
۹۵. ارثبری (Inheritance)
class Animal: def sound(self): print("Some sound") class Dog(Animal): pass Dog().sound() # Some sound
۹۶. بازنویسی متد کلاس پایه
class Dog(Animal): def sound(self): print("Woof") Dog().sound() # Woof
۹۷. استفاده از super()
class Dog(Animal): def sound(self): super().sound() print("Woof") Dog().sound() # Some sound # Woof
۹۸. متد استاتیک و کلاسمتد
class MyClass: @staticmethod def static_method(): print("Static") @classmethod def class_method(cls): print("Class") MyClass.static_method() MyClass.class_method()
۹۹. استفاده از property برای getter و setter
class Person: def init(self, name): self._name = name @property def name(self): return self._name @name.setter def name(self, value): self._name = value p = Person("Alice") print(p.name) p.name = "Bob" print(p.name)
۱۰۰. استفاده از lambda و map
lst = [1,2,3] squared = list(map(lambda x: x**2, lst)) print(squared) # [1,4,9]
۸۳. گرفتن عناصر منحصربهفرد لیست با set
lst = [1,2,2,3] unique = list(set(lst)) print(unique) # [1,2,3]
۸۴. مرتبسازی دیکشنری بر اساس مقدار
d = {'a':3,'b':1,'c':2} sorted_items = sorted(d.items(), key=lambda x: x[1]) print(sorted_items) # [('b',1),('c',2),('a',3)]
۸۵. ترکیب چند لیست با zip
names = ["Alice","Bob"] ages = [25,30] for name, age in zip(names, ages): print(name, age)
۸۶. استفاده از get برای دیکشنری با مقدار پیشفرض
d = {"a":1} print(d.get("b",0)) # 0
۸۷. حذف کلید از دیکشنری با pop
d = {"a":1,"b":2} val = d.pop("a") print(d, val) # {'b':2} 1
۸۸. بررسی وجود کلید در دیکشنری
d = {"a":1} print("a" in d, "b" in d) # True False
۸۹. استفاده از defaultdict
from collections import defaultdict d = defaultdict(list) d['a'].append(1) print(d) # defaultdict(<class 'list'>, {'a':[1]})
۹۰. استفاده از Counter برای شمارش عناصر
from collections import Counter lst = [1,2,2,3] count = Counter(lst) print(count) # Counter({2:2,1:1,3:1})
۹۱. مدیریت خطا با try-except
try: x = 1/0 except ZeroDivisionError: print("Cannot divide by zero")
۹۲. finally برای اجرای نهایی
try: x = 1 finally: print("Always executed")
۹۳. ایجاد کلاس ساده
class Person: def init(self, name): self.name = name p = Person("Alice") print(p.name)
۹۴. متد کلاس و نمونه
class Person: def greet(self): print("Hello") p = Person() p.greet() # Hello
۹۵. ارثبری (Inheritance)
class Animal: def sound(self): print("Some sound") class Dog(Animal): pass Dog().sound() # Some sound
۹۶. بازنویسی متد کلاس پایه
class Dog(Animal): def sound(self): print("Woof") Dog().sound() # Woof
۹۷. استفاده از super()
class Dog(Animal): def sound(self): super().sound() print("Woof") Dog().sound() # Some sound # Woof
۹۸. متد استاتیک و کلاسمتد
class MyClass: @staticmethod def static_method(): print("Static") @classmethod def class_method(cls): print("Class") MyClass.static_method() MyClass.class_method()
۹۹. استفاده از property برای getter و setter
class Person: def init(self, name): self._name = name @property def name(self): return self._name @name.setter def name(self, value): self._name = value p = Person("Alice") print(p.name) p.name = "Bob" print(p.name)
۱۰۰. استفاده از lambda و map
lst = [1,2,3] squared = list(map(lambda x: x**2, lst)) print(squared) # [1,4,9]
فصل هوش مصنوعی، یادگیری ماشین و یادگیری عمیق با پایتون را با ۱۰۰ سوال و جواب شروع میکنیم.
بخش ۱: مفاهیم پایه AI و ML (سوال ۱–۲۰)
۱. تفاوت AI، ML و DL چیست؟
AI: شبیهسازی رفتار هوشمند انسان.
ML: الگوریتمهایی که از داده یاد میگیرند.
DL: زیرمجموعه ML با شبکههای عصبی عمیق.
۲. انواع یادگیری ماشین کدامند؟
Supervised: دادههای برچسبدار
Unsupervised: دادههای بدون برچسب
Reinforcement: یادگیری با پاداش و تنبیه
۳. چرا باید دادهها را پیشپردازش کنیم؟
حذف مقادیر گمشده، نرمالسازی، تبدیل دادهها به فرم قابل استفاده توسط مدل
۴. تقسیم داده به train/test چگونه انجام میشود؟
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, random_state=42)
۵. معیارهای سنجش مدل چه هستند؟
Accuracy، Precision، Recall، F1-score، ROC-AUC
۶. Overfitting چیست؟
زمانی که مدل روی دادههای آموزش خیلی خوب عمل میکند اما روی دادههای جدید ضعیف است.
۷. Underfitting چیست؟
زمانی که مدل نمیتواند حتی دادههای آموزش را درست پیشبینی کند.
۸. Linear Regression چیست و چگونه با پایتون پیاده میشود؟
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
pred = model.predict(X_test)
۹. Logistic Regression چیست؟
برای مسائل دستهبندی (Classification) استفاده میشود.
۱۰. تفاوت Regression و Classification چیست؟
Regression پیشبینی عددی میکند.
Classification پیشبینی دستهای انجام میدهد.
۱۱. Cross-validation چیست؟
روش ارزیابی مدل با تقسیم دادهها به چند بخش و آموزش و تست متناوب.
۱۲. Feature Scaling چیست و چرا مهم است؟
استانداردسازی یا نرمالسازی ویژگیها برای الگوریتمهای حساس به مقیاس مثل SVM و KNN.
۱۳. معیار MSE چیست؟
Mean Squared Error: میانگین مربعات خطا بین پیشبینی و مقدار واقعی.
۱۴. معیار RMSE چیست؟
ریشه مربع MSE؛ مقیاس آن با دادهها همخوانی دارد.
۱۵. معیار R² چیست؟
ضریب تعیین: نشان میدهد چه درصدی از تغییرات دادهها توسط مدل توضیح داده میشود.
۱۶. Bias و Variance چیست؟
Bias: خطای سیستماتیک مدل
Variance: حساسیت مدل به تغییرات داده
۱۷. چرا باید دادههای Missing Value را پر کنیم؟
برای جلوگیری از خطا هنگام آموزش مدل و بهبود دقت پیشبینی
۱۸. چه نوع دادههایی نیاز به Encoding دارند؟
دادههای متنی یا دستهای (Categorical) که باید به عدد تبدیل شوند
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
y_encoded = le.fit_transform(y)
۱۹. Normalization و Standardization چه تفاوتی دارند؟
Normalization: مقیاس داده را بین ۰ تا ۱ تغییر میدهد
Standardization: داده را با میانگین صفر و انحراف معیار ۱ میکند
۲۰. چرا الگوریتمهای ML به دادههای تمیز حساس هستند؟
دادههای نویزی یا غیرمرتبط باعث کاهش دقت مدل می شوند
بخش ۱: مفاهیم پایه AI و ML (سوال ۱–۲۰)
۱. تفاوت AI، ML و DL چیست؟
AI: شبیهسازی رفتار هوشمند انسان.
ML: الگوریتمهایی که از داده یاد میگیرند.
DL: زیرمجموعه ML با شبکههای عصبی عمیق.
۲. انواع یادگیری ماشین کدامند؟
Supervised: دادههای برچسبدار
Unsupervised: دادههای بدون برچسب
Reinforcement: یادگیری با پاداش و تنبیه
۳. چرا باید دادهها را پیشپردازش کنیم؟
حذف مقادیر گمشده، نرمالسازی، تبدیل دادهها به فرم قابل استفاده توسط مدل
۴. تقسیم داده به train/test چگونه انجام میشود؟
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, random_state=42)
۵. معیارهای سنجش مدل چه هستند؟
Accuracy، Precision، Recall، F1-score، ROC-AUC
۶. Overfitting چیست؟
زمانی که مدل روی دادههای آموزش خیلی خوب عمل میکند اما روی دادههای جدید ضعیف است.
۷. Underfitting چیست؟
زمانی که مدل نمیتواند حتی دادههای آموزش را درست پیشبینی کند.
۸. Linear Regression چیست و چگونه با پایتون پیاده میشود؟
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
pred = model.predict(X_test)
۹. Logistic Regression چیست؟
برای مسائل دستهبندی (Classification) استفاده میشود.
۱۰. تفاوت Regression و Classification چیست؟
Regression پیشبینی عددی میکند.
Classification پیشبینی دستهای انجام میدهد.
۱۱. Cross-validation چیست؟
روش ارزیابی مدل با تقسیم دادهها به چند بخش و آموزش و تست متناوب.
۱۲. Feature Scaling چیست و چرا مهم است؟
استانداردسازی یا نرمالسازی ویژگیها برای الگوریتمهای حساس به مقیاس مثل SVM و KNN.
۱۳. معیار MSE چیست؟
Mean Squared Error: میانگین مربعات خطا بین پیشبینی و مقدار واقعی.
۱۴. معیار RMSE چیست؟
ریشه مربع MSE؛ مقیاس آن با دادهها همخوانی دارد.
۱۵. معیار R² چیست؟
ضریب تعیین: نشان میدهد چه درصدی از تغییرات دادهها توسط مدل توضیح داده میشود.
۱۶. Bias و Variance چیست؟
Bias: خطای سیستماتیک مدل
Variance: حساسیت مدل به تغییرات داده
۱۷. چرا باید دادههای Missing Value را پر کنیم؟
برای جلوگیری از خطا هنگام آموزش مدل و بهبود دقت پیشبینی
۱۸. چه نوع دادههایی نیاز به Encoding دارند؟
دادههای متنی یا دستهای (Categorical) که باید به عدد تبدیل شوند
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
y_encoded = le.fit_transform(y)
۱۹. Normalization و Standardization چه تفاوتی دارند؟
Normalization: مقیاس داده را بین ۰ تا ۱ تغییر میدهد
Standardization: داده را با میانگین صفر و انحراف معیار ۱ میکند
۲۰. چرا الگوریتمهای ML به دادههای تمیز حساس هستند؟
دادههای نویزی یا غیرمرتبط باعث کاهش دقت مدل می شوند
یادگیری ماشین پیشرفته (سوال ۲۱–۵۰)
بخش ۲: یادگیری ماشین پیشرفته (سوال ۲۱–۵۰)
۲۱. Decision Tree چیست و چطور پیادهسازی میشود؟
۲۲. Random Forest چیست؟
ترکیبی از چند درخت تصمیم برای کاهش Overfitting و افزایش دقت.
۲۳. Gradient Boosting چیست؟
الگوریتمی که مدلها را متوالی آموزش میدهد و خطاهای مدل قبلی را اصلاح میکند.
۲۴. Support Vector Machine (SVM) چیست؟
الگوریتم دستهبندی که مرز تصمیم با بیشترین فاصله بین کلاسها پیدا میکند.
۲۵. K-Nearest Neighbors (KNN) چیست؟
دستهبندی یا پیشبینی بر اساس نزدیکترین k نمونه به داده جدید.
۲۶. Hyperparameter چیست؟
پارامترهایی که قبل از آموزش مدل تنظیم میشوند و روی عملکرد مدل تاثیر دارند.
۲۷. Grid Search چیست؟
روش پیدا کردن بهترین مقادیر Hyperparameter
۲۸. Random Search چیست؟
مشابه Grid Search اما مقادیر Hyperparameter به صورت تصادفی انتخاب میشوند.
۲۹. Feature Importance چیست؟
نشان میدهد هر ویژگی چه میزان به پیشبینی مدل کمک میکند
۳۰. Principal Component Analysis (PCA) چیست؟
کاهش ابعاد داده و حفظ بیشترین واریانس
۳۱. Logistic Regression برای Classification چندکلاسه چطور است؟
با تکنیک One-vs-Rest یا Softmax پیادهسازی میشود.
۳۲. Confusion Matrix چیست؟
جدول نمایش تعداد True Positive، True Negative، False Positive، False Negative
۳۳. ROC Curve چیست؟
منحنی نمایش trade-off بین True Positive Rate و False Positive Rate
۳۴. AUC چیست؟
Area Under Curve برای سنجش کیفیت مدل دستهبندی
۳۵. SMOTE چیست؟
تکنیک Oversampling برای دادههای نامتوازن
۳۶. Normal Equation چیست؟
روش تحلیلی برای حل Linear Regression بدون Gradient Descent
۳۷. Gradient Descent چیست؟
روش بهینهسازی برای کمینه کردن خطا با بروزرسانی وزنها
۳۸. Learning Rate چیست؟
نرخ تغییر وزنها در هر مرحله Gradient Descent
۳۹. Regularization چیست و انواع آن؟
جلوگیری از Overfitting
L1 (Lasso) و L2 (Ridge)
۴۰. Pipeline در Scikit-learn چیست؟
ترکیب چند مرحله preprocessing و مدل
۴۱. Bagging چیست؟
آموزش چند مدل روی نمونههای مختلف داده و میانگین گرفتن پیشبینیها
۴۲. Boosting چیست؟
آموزش مدلها به ترتیب برای اصلاح خطاهای مدل قبلی
۴۳. Cross-Entropy Loss چیست؟
معیار خطا برای مسائل Classification
۴۴. Mean Absolute Error (MAE) چیست؟
میانگین قدر مطلق خطاها برای مسائل Regression
۴۵. RNN چیست؟
شبکه عصبی بازگشتی برای دادههای دنبالهای مثل متن یا سری زمانی
۴۶. LSTM چیست؟
نسخه پیشرفته RNN با حافظه بلندمدت برای جلوگیری از مشکل Vanishing Gradient
۴۷. Overfitting در Deep Learning چگونه کاهش مییابد؟
Dropout، Regularization، افزایش دادهها (Data Augmentation)
۴۸. Batch Normalization چیست؟
نرمالسازی خروجی هر لایه برای تسریع و پایدارسازی آموزش شبکه
۴۹. Optimizer چیست؟
الگوریتم بروزرسانی وزنها مثل SGD، Adam، RMSProp
۵۰. Epoch چیست؟
یک دوره کامل عبور دادهها از شبکه عصبی در فرآیند آموزش
بخش ۲: یادگیری ماشین پیشرفته (سوال ۲۱–۵۰)
۲۱. Decision Tree چیست و چطور پیادهسازی میشود؟
from sklearn.tree import DecisionTreeClassifier model = DecisionTreeClassifier() model.fit(X_train, y_train) pred = model.predict(X_test) ۲۲. Random Forest چیست؟
ترکیبی از چند درخت تصمیم برای کاهش Overfitting و افزایش دقت.
۲۳. Gradient Boosting چیست؟
الگوریتمی که مدلها را متوالی آموزش میدهد و خطاهای مدل قبلی را اصلاح میکند.
۲۴. Support Vector Machine (SVM) چیست؟
الگوریتم دستهبندی که مرز تصمیم با بیشترین فاصله بین کلاسها پیدا میکند.
۲۵. K-Nearest Neighbors (KNN) چیست؟
دستهبندی یا پیشبینی بر اساس نزدیکترین k نمونه به داده جدید.
۲۶. Hyperparameter چیست؟
پارامترهایی که قبل از آموزش مدل تنظیم میشوند و روی عملکرد مدل تاثیر دارند.
۲۷. Grid Search چیست؟
روش پیدا کردن بهترین مقادیر Hyperparameter
from sklearn.model_selection import GridSearchCV params = {'max_depth':[3,5,7]} grid = GridSearchCV(DecisionTreeClassifier(), param_grid=params) grid.fit(X_train, y_train) print(grid.best_params_) ۲۸. Random Search چیست؟
مشابه Grid Search اما مقادیر Hyperparameter به صورت تصادفی انتخاب میشوند.
۲۹. Feature Importance چیست؟
نشان میدهد هر ویژگی چه میزان به پیشبینی مدل کمک میکند
print(model.feature_importances_) ۳۰. Principal Component Analysis (PCA) چیست؟
کاهش ابعاد داده و حفظ بیشترین واریانس
from sklearn.decomposition import PCA pca = PCA(n_components=2) X_new = pca.fit_transform(X) ۳۱. Logistic Regression برای Classification چندکلاسه چطور است؟
با تکنیک One-vs-Rest یا Softmax پیادهسازی میشود.
۳۲. Confusion Matrix چیست؟
جدول نمایش تعداد True Positive، True Negative، False Positive، False Negative
from sklearn.metrics import confusion_matrix print(confusion_matrix(y_test, pred)) ۳۳. ROC Curve چیست؟
منحنی نمایش trade-off بین True Positive Rate و False Positive Rate
۳۴. AUC چیست؟
Area Under Curve برای سنجش کیفیت مدل دستهبندی
۳۵. SMOTE چیست؟
تکنیک Oversampling برای دادههای نامتوازن
from imblearn.over_sampling import SMOTE sm = SMOTE() X_res, y_res = sm.fit_resample(X, y) ۳۶. Normal Equation چیست؟
روش تحلیلی برای حل Linear Regression بدون Gradient Descent
۳۷. Gradient Descent چیست؟
روش بهینهسازی برای کمینه کردن خطا با بروزرسانی وزنها
۳۸. Learning Rate چیست؟
نرخ تغییر وزنها در هر مرحله Gradient Descent
۳۹. Regularization چیست و انواع آن؟
جلوگیری از Overfitting
L1 (Lasso) و L2 (Ridge)
۴۰. Pipeline در Scikit-learn چیست؟
ترکیب چند مرحله preprocessing و مدل
from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler pipe = Pipeline([('scaler', StandardScaler()), ('clf', LogisticRegression())]) pipe.fit(X_train, y_train) ۴۱. Bagging چیست؟
آموزش چند مدل روی نمونههای مختلف داده و میانگین گرفتن پیشبینیها
۴۲. Boosting چیست؟
آموزش مدلها به ترتیب برای اصلاح خطاهای مدل قبلی
۴۳. Cross-Entropy Loss چیست؟
معیار خطا برای مسائل Classification
۴۴. Mean Absolute Error (MAE) چیست؟
میانگین قدر مطلق خطاها برای مسائل Regression
۴۵. RNN چیست؟
شبکه عصبی بازگشتی برای دادههای دنبالهای مثل متن یا سری زمانی
۴۶. LSTM چیست؟
نسخه پیشرفته RNN با حافظه بلندمدت برای جلوگیری از مشکل Vanishing Gradient
۴۷. Overfitting در Deep Learning چگونه کاهش مییابد؟
Dropout، Regularization، افزایش دادهها (Data Augmentation)
۴۸. Batch Normalization چیست؟
نرمالسازی خروجی هر لایه برای تسریع و پایدارسازی آموزش شبکه
۴۹. Optimizer چیست؟
الگوریتم بروزرسانی وزنها مثل SGD، Adam، RMSProp
۵۰. Epoch چیست؟
یک دوره کامل عبور دادهها از شبکه عصبی در فرآیند آموزش
بخش ۳: یادگیری عمیق و شبکههای عصبی (سوال ۵۱–۸۰)
۵۱. Perceptron چیست؟
سادهترین شبکه عصبی با یک لایه ورودی و یک خروجی برای دستهبندی خطی.
۵۲. Activation Function چیست؟
تابع فعالسازی برای اضافه کردن غیرخطی بودن به شبکه
مثالها: ReLU, Sigmoid, Tanh
۵۳. Feedforward Neural Network چیست؟
شبکه عصبی که اطلاعات فقط جلو به عقب حرکت میکنند و حلقهای ندارد.
۵۴. Backpropagation چیست؟
الگوریتم محاسبه گرادیان برای آموزش شبکه عصبی.
۵۵. Tensor چیست؟
آرایه n بعدی دادهها در PyTorch یا TensorFlow
۵۶. PyTorch vs TensorFlow چه تفاوتی دارند؟
PyTorch: داینامیک، راحت برای آموزش و Debug
TensorFlow: استاتیک، مناسب Production و TPU
۵۷. Loss Function در Deep Learning چیست؟
معیار خطا، مثل CrossEntropyLoss یا MSELoss
۵۸. Optimizer چیست؟
الگوریتم بروزرسانی وزنها، مثل Adam یا SGD
۵۹. Batch Size چیست؟
تعداد نمونههایی که یک بار وارد شبکه میشوند.
۶۰. Dropout چیست؟
جلوگیری از Overfitting با غیرفعال کردن تصادفی برخی نورونها
۶۱. CNN چیست؟
شبکه عصبی کانولوشنی برای دادههای تصویری
۶۲. Convolution Layer چیست؟
لایهای که فیلترها را روی تصویر اعمال میکند
۶۳. Pooling Layer چیست؟
کاهش ابعاد ویژگیها و حفظ مهمترین اطلاعات
۶۴. Flatten Layer چیست؟
تبدیل خروجی CNN به بردار برای اتصال به Dense Layer
۶۵. Fully Connected Layer چیست؟
لایه کاملاً متصل برای تصمیمگیری نهایی
۶۶. ResNet چیست؟
شبکه با Shortcut Connection برای حل مشکل Vanishing Gradient
۶۷. Transfer Learning چیست؟
استفاده از مدل پیشآموزش دیده و اعمال آن روی پروژه جدید
۶۸. Fine-Tuning چیست؟
آموزش مجدد بخشهایی از مدل پیشآموزش دیده
۶۹. Autoencoder چیست؟
شبکه عصبی برای فشردهسازی و بازسازی دادهها
۷۰. Variational Autoencoder (VAE) چیست؟
Autoencoder با احتمالسنجی برای تولید دادههای جدید
۷۱. GAN چیست؟
شبکه مولد تقابلی با Generator و Discriminator برای تولید داده
۷۲. Generator چیست؟
بخشی از GAN که دادههای مصنوعی تولید میکند
۷۳. Discriminator چیست؟
بخشی از GAN که داده واقعی و مصنوعی را تشخیص میدهد
۷۴. RNN چیست؟
شبکه عصبی برای دادههای دنبالهای
۷۵. LSTM چیست؟
RNN با حافظه بلندمدت برای جلوگیری از مشکل Vanishing Gradient
۷۶. GRU چیست؟
نسخه سادهتر و سبکتر LSTM
۷۷. Attention چیست؟
مکانیزمی که شبکه روی بخشهای مهم ورودی تمرکز میکند
۷۸. Transformer چیست؟
شبکه عصبی بدون RNN که از Attention برای ترجمه و متن استفاده میکند
۷۹. BERT چیست؟
مدل پیشآموزش دیده برای NLP با Transformer
۸۰. GPT چیست؟
مدل زبان بزرگ مبتنی بر Transformer برای تولید متن
۵۱. Perceptron چیست؟
سادهترین شبکه عصبی با یک لایه ورودی و یک خروجی برای دستهبندی خطی.
۵۲. Activation Function چیست؟
تابع فعالسازی برای اضافه کردن غیرخطی بودن به شبکه
مثالها: ReLU, Sigmoid, Tanh
import torch.nn as nn nn.ReLU() nn.Sigmoid() ۵۳. Feedforward Neural Network چیست؟
شبکه عصبی که اطلاعات فقط جلو به عقب حرکت میکنند و حلقهای ندارد.
۵۴. Backpropagation چیست؟
الگوریتم محاسبه گرادیان برای آموزش شبکه عصبی.
۵۵. Tensor چیست؟
آرایه n بعدی دادهها در PyTorch یا TensorFlow
import torch x = torch.tensor([[1,2],[3,4]]) ۵۶. PyTorch vs TensorFlow چه تفاوتی دارند؟
PyTorch: داینامیک، راحت برای آموزش و Debug
TensorFlow: استاتیک، مناسب Production و TPU
۵۷. Loss Function در Deep Learning چیست؟
معیار خطا، مثل CrossEntropyLoss یا MSELoss
loss_fn = nn.CrossEntropyLoss() ۵۸. Optimizer چیست؟
الگوریتم بروزرسانی وزنها، مثل Adam یا SGD
optimizer = torch.optim.Adam(model.parameters(), lr=0.001) ۵۹. Batch Size چیست؟
تعداد نمونههایی که یک بار وارد شبکه میشوند.
۶۰. Dropout چیست؟
جلوگیری از Overfitting با غیرفعال کردن تصادفی برخی نورونها
nn.Dropout(0.5) ۶۱. CNN چیست؟
شبکه عصبی کانولوشنی برای دادههای تصویری
۶۲. Convolution Layer چیست؟
لایهای که فیلترها را روی تصویر اعمال میکند
nn.Conv2d(in_channels=3, out_channels=16, kernel_size=3) ۶۳. Pooling Layer چیست؟
کاهش ابعاد ویژگیها و حفظ مهمترین اطلاعات
nn.MaxPool2d(2) ۶۴. Flatten Layer چیست؟
تبدیل خروجی CNN به بردار برای اتصال به Dense Layer
x = x.view(x.size(0), -1) ۶۵. Fully Connected Layer چیست؟
لایه کاملاً متصل برای تصمیمگیری نهایی
۶۶. ResNet چیست؟
شبکه با Shortcut Connection برای حل مشکل Vanishing Gradient
۶۷. Transfer Learning چیست؟
استفاده از مدل پیشآموزش دیده و اعمال آن روی پروژه جدید
۶۸. Fine-Tuning چیست؟
آموزش مجدد بخشهایی از مدل پیشآموزش دیده
۶۹. Autoencoder چیست؟
شبکه عصبی برای فشردهسازی و بازسازی دادهها
۷۰. Variational Autoencoder (VAE) چیست؟
Autoencoder با احتمالسنجی برای تولید دادههای جدید
۷۱. GAN چیست؟
شبکه مولد تقابلی با Generator و Discriminator برای تولید داده
۷۲. Generator چیست؟
بخشی از GAN که دادههای مصنوعی تولید میکند
۷۳. Discriminator چیست؟
بخشی از GAN که داده واقعی و مصنوعی را تشخیص میدهد
۷۴. RNN چیست؟
شبکه عصبی برای دادههای دنبالهای
۷۵. LSTM چیست؟
RNN با حافظه بلندمدت برای جلوگیری از مشکل Vanishing Gradient
۷۶. GRU چیست؟
نسخه سادهتر و سبکتر LSTM
۷۷. Attention چیست؟
مکانیزمی که شبکه روی بخشهای مهم ورودی تمرکز میکند
۷۸. Transformer چیست؟
شبکه عصبی بدون RNN که از Attention برای ترجمه و متن استفاده میکند
۷۹. BERT چیست؟
مدل پیشآموزش دیده برای NLP با Transformer
۸۰. GPT چیست؟
مدل زبان بزرگ مبتنی بر Transformer برای تولید متن
بخش ۴: پروژههای عملی یادگیری ماشین و هوش مصنوعی (سوال ۸۱–۱۰۰)
۸۱. پیشبینی قیمت خانه با Linear Regression
دادههای خانه را با pandas خوانده و با sklearn.linear_model.LinearRegression پیشبینی کنید
۸۲. دستهبندی تصاویر با CNN
از torchvision برای دیتاست MNIST استفاده کنید
۸۳. تشخیص احساسات متن با LSTM
دیتاست IMDB + LSTM در PyTorch
۸۴. تولید متن با GPT-2 کوچک
استفاده از transformers
۸۵. تشخیص اشیاء با YOLOv5
مدل آماده YOLOv5 روی تصاویر
۸۶. خوشهبندی مشتریان با KMeans
تقسیم مشتریان به گروهها
۸۷. کاهش ابعاد با PCA
تحلیل دادههای پیچیده با Principal Component Analysis
۸۸. سیستم توصیهگر ساده
Collaborative Filtering با surprise یا ماتریس امتیاز
۸۹. تشخیص تقلب با Random Forest
داده تراکنشها و مدل درخت تصمیم
۹۰. پیشبینی سری زمانی با LSTM
دادههای دنبالهای مثل قیمت ارز یا آب و هوا
۹۱. تولید تصویر با GAN ساده
Generator و Discriminator برای دیتاست کوچک
۹۲. Autoencoder برای کاهش نویز تصویر
آموزش شبکه برای بازسازی تصویر بدون نویز
۹۳. تشخیص چهره با OpenCV و CNN
۹۴. پردازش زبان طبیعی (NLP) با TF-IDF و Naive Bayes
تحلیل متن، دستهبندی ایمیل یا خبر
۹۵. طبقهبندی تصاویر با Transfer Learning (ResNet50)
استفاده از مدل پیشآموزش دیده برای پروژه کوچک
۹۶. شبیهساز ATM با شرطها و کلاسها
ایجاد سیستم برداشت و واریز پول با مدیریت حساب
۹۷. بازی ساده با Reinforcement Learning
Q-learning یا Gym برای CartPole
۹۸. پیشبینی بیماری با Logistic Regression
دادههای سلامت، تشخیص بله/خیر
۹۹. تحلیل احساسات شبکههای اجتماعی با BERT
Classifier متن برای مثبت/منفی بودن
۱۰۰. ساخت چتبات ساده با Transformer و PyTorch
دریافت ورودی کاربر و پاسخدهی خودکار
۸۱. پیشبینی قیمت خانه با Linear Regression
دادههای خانه را با pandas خوانده و با sklearn.linear_model.LinearRegression پیشبینی کنید
from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit(X_train, y_train) y_pred = model.predict(X_test) ۸۲. دستهبندی تصاویر با CNN
از torchvision برای دیتاست MNIST استفاده کنید
import torchvision from torchvision import transforms ۸۳. تشخیص احساسات متن با LSTM
دیتاست IMDB + LSTM در PyTorch
۸۴. تولید متن با GPT-2 کوچک
استفاده از transformers
from transformers import GPT2LMHeadModel, GPT2Tokenizer ۸۵. تشخیص اشیاء با YOLOv5
مدل آماده YOLOv5 روی تصاویر
۸۶. خوشهبندی مشتریان با KMeans
تقسیم مشتریان به گروهها
from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=3) kmeans.fit(data) ۸۷. کاهش ابعاد با PCA
تحلیل دادههای پیچیده با Principal Component Analysis
۸۸. سیستم توصیهگر ساده
Collaborative Filtering با surprise یا ماتریس امتیاز
۸۹. تشخیص تقلب با Random Forest
داده تراکنشها و مدل درخت تصمیم
۹۰. پیشبینی سری زمانی با LSTM
دادههای دنبالهای مثل قیمت ارز یا آب و هوا
۹۱. تولید تصویر با GAN ساده
Generator و Discriminator برای دیتاست کوچک
۹۲. Autoencoder برای کاهش نویز تصویر
آموزش شبکه برای بازسازی تصویر بدون نویز
۹۳. تشخیص چهره با OpenCV و CNN
import cv2 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') ۹۴. پردازش زبان طبیعی (NLP) با TF-IDF و Naive Bayes
تحلیل متن، دستهبندی ایمیل یا خبر
۹۵. طبقهبندی تصاویر با Transfer Learning (ResNet50)
استفاده از مدل پیشآموزش دیده برای پروژه کوچک
۹۶. شبیهساز ATM با شرطها و کلاسها
ایجاد سیستم برداشت و واریز پول با مدیریت حساب
۹۷. بازی ساده با Reinforcement Learning
Q-learning یا Gym برای CartPole
۹۸. پیشبینی بیماری با Logistic Regression
دادههای سلامت، تشخیص بله/خیر
۹۹. تحلیل احساسات شبکههای اجتماعی با BERT
Classifier متن برای مثبت/منفی بودن
۱۰۰. ساخت چتبات ساده با Transformer و PyTorch
دریافت ورودی کاربر و پاسخدهی خودکار
نکات ریز پایتون با مثال
---
۱. چرا پایتون از تورفتگی (Indentation) به جای {} استفاده میکند؟
در C یا Java، بلوکها با {} و } مشخص میشوند و فاصلهها فقط برای خوانایی هستند.
در Python، فاصلهها و تورفتگی بخشی از خود زبان هستند.
این باعث میشود همه مجبور باشند کد را خوانا بنویسند.
مثال:
# درست
if True:
print("سلام")
print("دنیا")
# نادرست - باعث خطا میشود
if True:
print("سلام")
📌 مزیت: همه کدها مرتب و یکشکل میشوند.
📌 عیب: اگر بیدقت باشی، حتی یک فاصله اشتباه خطا میدهد.
---
۲. یک خطه نوشتن شرط یا حلقه
در پایتون میتوان شرط یا حلقه را در یک خط نوشت، ولی باید دقت کرد.
مثال:
if True: print("سلام") # درست
for i in range(3): print(i)
📌 این کار در پروژههای واقعی زیاد توصیه نمیشود، چون خوانایی را کم میکند.
---
۳. جایگزین ++ و -- در پایتون
برخلاف C یا Java، پایتون عملگر ++ یا -- ندارد. باید از += 1 و -= 1 استفاده کنی:
x = 5
x += 1 # معادل ++x
x -= 1 # معادل --x
---
۴. استفاده از pass
وقتی میخواهی بلوکی خالی بگذاری، باید pass بنویسی. مثال:
if True:
pass # فعلاً کاری انجام نمیدهد
📌 در C میتوانی بلوک را خالی بگذاری {}، ولی در Python باید چیزی باشد (حتی pass).
---
۵. چند دستور در یک خط
در پایتون میتوان چند دستور را در یک خط نوشت، ولی باید با ; جدا شوند.
x = 5; y = 10; print(x + y)
📌 در عمل، این روش توصیه نمیشود چون خوانایی را کم میکند.
---
۶. ادامه دادن کد به خط بعد
گاهی یک خط کد طولانی است و میخواهی آن را به چند خط بشکنی:
total = (1 + 2 + 3 +
4 + 5 + 6)
یا با \:
total = 1 + 2 + 3 + \
4 + 5 + 6
---
۷. رشتههای چندخطی
با ''' یا """ میتوان متن چند خطی نوشت:
text = """
این یک متن
چند خطی است
"""
print(text)
---
۸. استفاده از _ به عنوان متغیر موقت
وقتی مقدار را نمیخواهی:
for _ in range(5):
print("سلام")
📌 در اینجا _ فقط یک اسم موقت است، نه چیز جادویی.
---
۹. متغیرهای چندتایی در یک خط
a, b, c = 1, 2, 3
📌 حتی میتوان جابهجا کرد:
a, b = b, a
---
۱۰. توضیح کوتاه داخل کد با کامنت
x = 5 # این متغیر سن را نگه میدارد
📌 در Python فقط # برای کامنت استفاده میشود، مثل // در C.
---
---
۱. چرا پایتون از تورفتگی (Indentation) به جای {} استفاده میکند؟
در C یا Java، بلوکها با {} و } مشخص میشوند و فاصلهها فقط برای خوانایی هستند.
در Python، فاصلهها و تورفتگی بخشی از خود زبان هستند.
این باعث میشود همه مجبور باشند کد را خوانا بنویسند.
مثال:
# درست
if True:
print("سلام")
print("دنیا")
# نادرست - باعث خطا میشود
if True:
print("سلام")
📌 مزیت: همه کدها مرتب و یکشکل میشوند.
📌 عیب: اگر بیدقت باشی، حتی یک فاصله اشتباه خطا میدهد.
---
۲. یک خطه نوشتن شرط یا حلقه
در پایتون میتوان شرط یا حلقه را در یک خط نوشت، ولی باید دقت کرد.
مثال:
if True: print("سلام") # درست
for i in range(3): print(i)
📌 این کار در پروژههای واقعی زیاد توصیه نمیشود، چون خوانایی را کم میکند.
---
۳. جایگزین ++ و -- در پایتون
برخلاف C یا Java، پایتون عملگر ++ یا -- ندارد. باید از += 1 و -= 1 استفاده کنی:
x = 5
x += 1 # معادل ++x
x -= 1 # معادل --x
---
۴. استفاده از pass
وقتی میخواهی بلوکی خالی بگذاری، باید pass بنویسی. مثال:
if True:
pass # فعلاً کاری انجام نمیدهد
📌 در C میتوانی بلوک را خالی بگذاری {}، ولی در Python باید چیزی باشد (حتی pass).
---
۵. چند دستور در یک خط
در پایتون میتوان چند دستور را در یک خط نوشت، ولی باید با ; جدا شوند.
x = 5; y = 10; print(x + y)
📌 در عمل، این روش توصیه نمیشود چون خوانایی را کم میکند.
---
۶. ادامه دادن کد به خط بعد
گاهی یک خط کد طولانی است و میخواهی آن را به چند خط بشکنی:
total = (1 + 2 + 3 +
4 + 5 + 6)
یا با \:
total = 1 + 2 + 3 + \
4 + 5 + 6
---
۷. رشتههای چندخطی
با ''' یا """ میتوان متن چند خطی نوشت:
text = """
این یک متن
چند خطی است
"""
print(text)
---
۸. استفاده از _ به عنوان متغیر موقت
وقتی مقدار را نمیخواهی:
for _ in range(5):
print("سلام")
📌 در اینجا _ فقط یک اسم موقت است، نه چیز جادویی.
---
۹. متغیرهای چندتایی در یک خط
a, b, c = 1, 2, 3
📌 حتی میتوان جابهجا کرد:
a, b = b, a
---
۱۰. توضیح کوتاه داخل کد با کامنت
x = 5 # این متغیر سن را نگه میدارد
📌 در Python فقط # برای کامنت استفاده میشود، مثل // در C.
---
۱۱. شرط در یک خط
در C داری:
result = (x > 0) ? "positive" : "negative";
در Python معادلش اینه:
result = "positive" if x > 0 else "negative"
---
۱۲. استفاده از else با حلقهها
برخلاف C، در پایتون حلقهها میتوانند else داشته باشند.
for i in range(3):
print(i)
else:
print("حلقه تمام شد")
📌 else فقط وقتی اجرا میشود که حلقه بدون break تمام شود.
---
۱۳. مقداردهی پیشفرض به آرگومان تابع
def greet(name="مهمان"):
print("سلام", name)
greet()
greet("علی")
📌 در C باید تابع را overload کنی، ولی در Python اینطور راحت است.
---
۱۴. گرفتن چند مقدار خروجی
در Python توابع میتوانند چند مقدار برگردانند:
def calc(a, b):
return a+b, a*b
s, m = calc(3, 4)
print(s, m)
📌 در C باید struct یا pointer استفاده کنی.
---
۱۵. استفاده از *args و **kwargs
*args: آرگومانهای نامحدود مکانی
**kwargs: آرگومانهای نامحدود کلیدی
مثال:
def show(*args, **kwargs):
print(args)
print(kwargs)
show(1, 2, 3, name="Ali", age=20)
---
۱۶. مقداردهی سریع لیست
nums = [i for i in range(5)]
📌 این کار بهش میگن List Comprehension، در C باید حلقه بنویسی.
---
۱۷. استفاده از _ در اعداد بزرگ
برای خوانایی:
big = 1_000_000
print(big)
📌 _ تاثیری روی مقدار عدد ندارد.
---
۱۸. شرط داخل List Comprehension
nums = [i for i in range(10) if i % 2 == 0]
📌 معادل نوشتن حلقه و شرط جداگانه.
---
۱۹. استفاده از zip
برای ترکیب دو لیست:
names = ["Ali", "Sara"]
scores = [90, 85]
for name, score in zip(names, scores):
print(name, score)
---
۲۰. استفاده از enumerate
برای گرفتن شماره ایندکس در حلقه:
names = ["Ali", "Sara"]
for index, name in enumerate(names):
print(index, name)
---
در C داری:
result = (x > 0) ? "positive" : "negative";
در Python معادلش اینه:
result = "positive" if x > 0 else "negative"
---
۱۲. استفاده از else با حلقهها
برخلاف C، در پایتون حلقهها میتوانند else داشته باشند.
for i in range(3):
print(i)
else:
print("حلقه تمام شد")
📌 else فقط وقتی اجرا میشود که حلقه بدون break تمام شود.
---
۱۳. مقداردهی پیشفرض به آرگومان تابع
def greet(name="مهمان"):
print("سلام", name)
greet()
greet("علی")
📌 در C باید تابع را overload کنی، ولی در Python اینطور راحت است.
---
۱۴. گرفتن چند مقدار خروجی
در Python توابع میتوانند چند مقدار برگردانند:
def calc(a, b):
return a+b, a*b
s, m = calc(3, 4)
print(s, m)
📌 در C باید struct یا pointer استفاده کنی.
---
۱۵. استفاده از *args و **kwargs
*args: آرگومانهای نامحدود مکانی
**kwargs: آرگومانهای نامحدود کلیدی
مثال:
def show(*args, **kwargs):
print(args)
print(kwargs)
show(1, 2, 3, name="Ali", age=20)
---
۱۶. مقداردهی سریع لیست
nums = [i for i in range(5)]
📌 این کار بهش میگن List Comprehension، در C باید حلقه بنویسی.
---
۱۷. استفاده از _ در اعداد بزرگ
برای خوانایی:
big = 1_000_000
print(big)
📌 _ تاثیری روی مقدار عدد ندارد.
---
۱۸. شرط داخل List Comprehension
nums = [i for i in range(10) if i % 2 == 0]
📌 معادل نوشتن حلقه و شرط جداگانه.
---
۱۹. استفاده از zip
برای ترکیب دو لیست:
names = ["Ali", "Sara"]
scores = [90, 85]
for name, score in zip(names, scores):
print(name, score)
---
۲۰. استفاده از enumerate
برای گرفتن شماره ایندکس در حلقه:
names = ["Ali", "Sara"]
for index, name in enumerate(names):
print(index, name)
---
۲۱. استفاده از with برای بستن خودکار منابع
در C باید دستی فایل رو fclose کنی، ولی در Python میتونی:
۲۲. استفاده از _ برای ذخیره نتیجه آخر در IDLE
در محیط Shell (IDLE یا REPL)، متغیر _ آخرین نتیجه رو نگه میداره:
📌 این فقط در حالت تعاملی کار میکنه.
۲۳. استفاده از pass برای نوشتن کد ناقص
وقتی هنوز قراره کد بنویسی ولی نمیخوای خطا بده:
📌 معادل {} خالی در C، ولی برای پایتون لازمه چون بلاک بدون کد خطا میده.
۲۴. استفاده از dir() و help() در IDLE
dir(obj) → لیست توابع و ویژگیها
help(obj) → راهنمای شیء
۲۵. اجرای چند خط همزمان در IDLE
در IDLE میتونی چند خط رو انتخاب و با F5 همه رو اجرا کنی.
۲۶. استفاده از name == "main"
برای جدا کردن بخش اجرای مستقیم و بخش کتابخانه:
📌 باعث میشه کد فقط وقتی اجرا بشه که فایل مستقیماً ران بشه.
۲۷. پاک کردن صفحه در IDLE یا هر محیط دیگر
در IDLE دستور رسمی نداره ولی ترفند:
یا با شورتکات: Ctrl + L (در بعضی ترمینالها).
۲۸. چند ورودی در یک خط
📌 ورودی: 3 4 → a=3, b=4
۲۹. استفاده از any() و all()
any() → اگر یکی True باشه، True
all() → اگر همه True باشن، True
۳۰. __doc__ برای دیدن توضیحات تابع
📌 مستقیم توضیح فانکشن رو نشون میده.
در C باید دستی فایل رو fclose کنی، ولی در Python میتونی:
with open("data.txt", "w") as f: f.write("Hello") # اینجا فایل خودش بسته میشه ۲۲. استفاده از _ برای ذخیره نتیجه آخر در IDLE
در محیط Shell (IDLE یا REPL)، متغیر _ آخرین نتیجه رو نگه میداره:
>>> 5 + 3 8 >>> _ * 2 16 📌 این فقط در حالت تعاملی کار میکنه.
۲۳. استفاده از pass برای نوشتن کد ناقص
وقتی هنوز قراره کد بنویسی ولی نمیخوای خطا بده:
def func(): pass 📌 معادل {} خالی در C، ولی برای پایتون لازمه چون بلاک بدون کد خطا میده.
۲۴. استفاده از dir() و help() در IDLE
dir(obj) → لیست توابع و ویژگیها
help(obj) → راهنمای شیء
>>> dir(str) >>> help(str.upper) ۲۵. اجرای چند خط همزمان در IDLE
در IDLE میتونی چند خط رو انتخاب و با F5 همه رو اجرا کنی.
۲۶. استفاده از name == "main"
برای جدا کردن بخش اجرای مستقیم و بخش کتابخانه:
def func(): print("Hello") if __name__ == "__main__": func() 📌 باعث میشه کد فقط وقتی اجرا بشه که فایل مستقیماً ران بشه.
۲۷. پاک کردن صفحه در IDLE یا هر محیط دیگر
در IDLE دستور رسمی نداره ولی ترفند:
import os os.system('cls') # ویندوز os.system('clear') # لینوکس/مک یا با شورتکات: Ctrl + L (در بعضی ترمینالها).
۲۸. چند ورودی در یک خط
a, b = map(int, input("Enter two numbers: ").split()) 📌 ورودی: 3 4 → a=3, b=4
۲۹. استفاده از any() و all()
any() → اگر یکی True باشه، True
all() → اگر همه True باشن، True
nums = [True, False, True] print(any(nums)) # True print(all(nums)) # False ۳۰. __doc__ برای دیدن توضیحات تابع
print(str.upper.__doc__) 📌 مستقیم توضیح فانکشن رو نشون میده.
تفاوتهای اصلی پایتون با سایر زبانها (C، C++، Java، JavaScript و…) .
---
PyPlus: 50 نکته ریز و کاربردی پایتون با مثال
۱. تورفتگی (Indentation) به جای {}
if True:
print("سلام")
print("دنیا")
# C/Java: { } لازم است
۲. پایان خط با ; لازم نیست
x = 5
y = 10
print(x + y)
# چند دستور در یک خط: x=5; y=10; print(x+y)
۳. ++ و -- نداریم
x = 5
x += 1
x -= 1
۴. حلقهها میتوانند else داشته باشند
for i in range(3):
print(i)
else:
print("حلقه بدون break تمام شد")
۵. چند خروجی از تابع
def calc(a, b):
return a+b, a*b
s, m = calc(3,4)
print(s, m)
۶. آرگومان پیشفرض راحت
def greet(name="مهمان"):
print("سلام", name)
greet()
greet("علی")
۷. List Comprehension
nums = [x*2 for x in range(5)]
۸. *args و **kwargs
def show(*args, **kwargs):
print(args)
print(kwargs)
show(1,2,3,name="Ali")
۹. _ برای متغیر موقت
for _ in range(3):
print("سلام")
۱۰. کامنت با
x = 5 # سن
۱۱. شرط در یک خط (ternary)
x = 5
result = "مثبت" if x > 0 else "منفی"
۱۲. چند دستور در یک خط با ;
x=1; y=2; print(x+y)
۱۳. ادامه خط با \ یا ()
total = 1 + 2 + 3 + \
4 + 5 + 6
۱۴. رشته چندخطی
text = """سلام
دنیا"""
print(text)
۱۵. جابجایی متغیرها
a, b = 5, 10
a, b = b, a
۱۶. _ در اعداد بزرگ
big = 1_000_000
print(big)
۱۷. شرط داخل List Comprehension
even = [x for x in range(10) if x%2==0]
۱۸. zip برای ترکیب لیستها
names = ["Ali","Sara"]
scores = [90,85]
for n,s in zip(names,scores):
print(n,s)
۱۹. enumerate برای گرفتن ایندکس
for idx, name in enumerate(names):
print(idx, name)
۲۰. with برای باز و بسته خودکار فایل
with open("data.txt","w") as f:
f.write("سلام")
۲۱. _ در IDLE برای آخرین نتیجه
>>> 5+3
8
>>> _*2
16
۲۲. pass برای بلوک خالی
if True:
pass
۲۳. dir() و help()
print(dir(str))
help(str.upper)
۲۴. اجرای چند خط در IDLE
چند خط را انتخاب و F5 → اجرا
۲۵. name == "main"
def func():
print("سلام")
if name == "main":
func()
۲۶. پاک کردن صفحه
import os
os.system('cls') # ویندوز
os.system('clear') # لینوکس/مک
۲۷. ورودی چندتایی در یک خط
a,b = map(int,input().split())
۲۸. any() و all()
nums = [True, False]
print(any(nums)) # True
print(all(nums)) # False
۲۹. doc برای توضیح توابع
print(str.upper.doc)
۳۰. تایپ دینامیک
x = 5
x = "سلام"
۳۱. Duck Typing
def quack(obj):
obj.quack()
۳۲. private convention با _ و __
class Test:
def init(self):
self._hidden = 5
self.__name = "Ali"
۳۳. unpacking لیست و tuple
a,b,*rest = [1,2,3,4]
۳۴. گرفتن substring
text = "Python"
print(text[0:3]) # Pyt
۳۵. negative index
text = "Python"
print(text[-1]) # n
۳۶. reversed() و [::-1]
print(list(reversed([1,2,3])))
print([1,2,3][::-1])
۳۷. set comprehension
squares = {x*x for x in range(5)}
۳۸. dict comprehension
d = {x:x*2 for x in range(5)}
۳۹. حذف با del
nums = [1,2,3]
del nums[0]
۴۰. unpacking dict
d = {'a':1,'b':2}
for k,v in d.items():
print(k,v)
۴۱. lambda functions
f = lambda x: x*2
print(f(5))
۴۲. map() و filter()
nums = [1,2,3]
print(list(map(lambda x:x*2, nums)))
print(list(filter(lambda x:x>1, nums)))
۴۳. Exception handling ساده
try:
1/0
except ZeroDivisionError:
print("تقسیم بر صفر")
۴۴. assert برای تست
x = 5
assert x>0, "خطا"
۴۵. import alias
import math as m
print(m.sqrt(16))
۴۶. slots برای کاهش مصرف حافظه
class Point:
slots = ['x','y']
def init(self,x,y):
self.x=x
self.y=y
۴۷. decorator ساده
def deco(func):
def wrapper():
print("قبل")
func()
print("بعد")
return wrapper
@deco
def hi():
print("سلام")
hi()
۴۸. contextlib برای مدیریت منابع
from contextlib import suppress
with suppress(ZeroDivisionError):
print(1/0)
۴۹. type hints
def add(x:int, y:int)->int:
return x+y
۵۰. f-string برای قالببندی
name="Ali"
age=20
print(f"Name: {name}, Age: {age}")
---
PyPlus: 50 نکته ریز و کاربردی پایتون با مثال
۱. تورفتگی (Indentation) به جای {}
if True:
print("سلام")
print("دنیا")
# C/Java: { } لازم است
۲. پایان خط با ; لازم نیست
x = 5
y = 10
print(x + y)
# چند دستور در یک خط: x=5; y=10; print(x+y)
۳. ++ و -- نداریم
x = 5
x += 1
x -= 1
۴. حلقهها میتوانند else داشته باشند
for i in range(3):
print(i)
else:
print("حلقه بدون break تمام شد")
۵. چند خروجی از تابع
def calc(a, b):
return a+b, a*b
s, m = calc(3,4)
print(s, m)
۶. آرگومان پیشفرض راحت
def greet(name="مهمان"):
print("سلام", name)
greet()
greet("علی")
۷. List Comprehension
nums = [x*2 for x in range(5)]
۸. *args و **kwargs
def show(*args, **kwargs):
print(args)
print(kwargs)
show(1,2,3,name="Ali")
۹. _ برای متغیر موقت
for _ in range(3):
print("سلام")
۱۰. کامنت با
x = 5 # سن
۱۱. شرط در یک خط (ternary)
x = 5
result = "مثبت" if x > 0 else "منفی"
۱۲. چند دستور در یک خط با ;
x=1; y=2; print(x+y)
۱۳. ادامه خط با \ یا ()
total = 1 + 2 + 3 + \
4 + 5 + 6
۱۴. رشته چندخطی
text = """سلام
دنیا"""
print(text)
۱۵. جابجایی متغیرها
a, b = 5, 10
a, b = b, a
۱۶. _ در اعداد بزرگ
big = 1_000_000
print(big)
۱۷. شرط داخل List Comprehension
even = [x for x in range(10) if x%2==0]
۱۸. zip برای ترکیب لیستها
names = ["Ali","Sara"]
scores = [90,85]
for n,s in zip(names,scores):
print(n,s)
۱۹. enumerate برای گرفتن ایندکس
for idx, name in enumerate(names):
print(idx, name)
۲۰. with برای باز و بسته خودکار فایل
with open("data.txt","w") as f:
f.write("سلام")
۲۱. _ در IDLE برای آخرین نتیجه
>>> 5+3
8
>>> _*2
16
۲۲. pass برای بلوک خالی
if True:
pass
۲۳. dir() و help()
print(dir(str))
help(str.upper)
۲۴. اجرای چند خط در IDLE
چند خط را انتخاب و F5 → اجرا
۲۵. name == "main"
def func():
print("سلام")
if name == "main":
func()
۲۶. پاک کردن صفحه
import os
os.system('cls') # ویندوز
os.system('clear') # لینوکس/مک
۲۷. ورودی چندتایی در یک خط
a,b = map(int,input().split())
۲۸. any() و all()
nums = [True, False]
print(any(nums)) # True
print(all(nums)) # False
۲۹. doc برای توضیح توابع
print(str.upper.doc)
۳۰. تایپ دینامیک
x = 5
x = "سلام"
۳۱. Duck Typing
def quack(obj):
obj.quack()
۳۲. private convention با _ و __
class Test:
def init(self):
self._hidden = 5
self.__name = "Ali"
۳۳. unpacking لیست و tuple
a,b,*rest = [1,2,3,4]
۳۴. گرفتن substring
text = "Python"
print(text[0:3]) # Pyt
۳۵. negative index
text = "Python"
print(text[-1]) # n
۳۶. reversed() و [::-1]
print(list(reversed([1,2,3])))
print([1,2,3][::-1])
۳۷. set comprehension
squares = {x*x for x in range(5)}
۳۸. dict comprehension
d = {x:x*2 for x in range(5)}
۳۹. حذف با del
nums = [1,2,3]
del nums[0]
۴۰. unpacking dict
d = {'a':1,'b':2}
for k,v in d.items():
print(k,v)
۴۱. lambda functions
f = lambda x: x*2
print(f(5))
۴۲. map() و filter()
nums = [1,2,3]
print(list(map(lambda x:x*2, nums)))
print(list(filter(lambda x:x>1, nums)))
۴۳. Exception handling ساده
try:
1/0
except ZeroDivisionError:
print("تقسیم بر صفر")
۴۴. assert برای تست
x = 5
assert x>0, "خطا"
۴۵. import alias
import math as m
print(m.sqrt(16))
۴۶. slots برای کاهش مصرف حافظه
class Point:
slots = ['x','y']
def init(self,x,y):
self.x=x
self.y=y
۴۷. decorator ساده
def deco(func):
def wrapper():
print("قبل")
func()
print("بعد")
return wrapper
@deco
def hi():
print("سلام")
hi()
۴۸. contextlib برای مدیریت منابع
from contextlib import suppress
with suppress(ZeroDivisionError):
print(1/0)
۴۹. type hints
def add(x:int, y:int)->int:
return x+y
۵۰. f-string برای قالببندی
name="Ali"
age=20
print(f"Name: {name}, Age: {age}")