11 July 2026
rng = np.random.default_rng(42)
n_samples = 300
brand_names = ["A", "B", "C", "D"]
127 · mileage = rng.integers(
low=5_000,
high=220_001,
size=n_samples,
)
age = rng.integers(
low=0,
high=16,
size=n_samples,
)
engine_size = rng.choice(
[1.3, 1.6, 2.0, 2.5],
size=n_samples,
)
brand = rng.choice(
brand_names,
size=n_samples,
p=[0.30, 0.30, 0.25, 0.15],
)
automatic = rng.choice(
["yes", "no"],
size=n_samples,
p=[0.65, 0.35],
)
132 · brand_effect = {
"A": 3_500,
"B": 1_500,
"C": 0,
"D": -2_000,
}
brand_bonus = np.array(
[brand_effect[current_brand] for current_brand in brand]
)
automatic_bonus = np.where(
automatic == "yes",
1_200,
0,
)
noise = rng.normal(
loc=0,
scale=1_800,
size=n_samples,
)
149 · price = (
42_000
- 0.09 * mileage
- 950 * age
+ 1_800 * engine_size
+ brand_bonus
+ automatic_bonus
+ noise
)
price = np.maximum(price, 2_500)
price = price.round(0)
136 · cars = pd.DataFrame(
{
"mileage": mileage,
"age": age,
"engine_size": engine_size,
"brand": brand,
"automatic": automatic,
"price": price,
}
)
cars.head()
140 · print("Shape:", cars.shape)
print("\nData types:")
print(cars.dtypes)
print("\nMissing values:")
print(cars.isna().sum())
print("\nBrand frequencies:")
print(cars["brand"].value_counts())
print("\nSummary statistics:")
display(cars.describe(include="all").T)
126 · import numpy as np
import pandas as pd
import joblib
from sklearn.model_selection import train_test_split
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LinearRegression
from sklearn.metrics import (
mean_absolute_error,
mean_squared_error,
r2_score,
)
# --------------------------------------------------
# 1. Create a reproducible random number generator
# --------------------------------------------------
rng = np.random.default_rng(42)
n_samples = 300
brand_names = ["A", "B", "C", "D"]
# --------------------------------------------------
# 2. Generate synthetic input features
# --------------------------------------------------
mileage = rng.integers(
low=5_000,
high=220_001,
size=n_samples,
)
age = rng.integers(
low=0,
high=16,
size=n_samples,
)
engine_size = rng.choice(
[1.3, 1.6, 2.0, 2.5],
size=n_samples,
)
brand = rng.choice(
brand_names,
size=n_samples,
p=[0.30, 0.30, 0.25, 0.15],
)
automatic = rng.choice(
["yes", "no"],
size=n_samples,
p=[0.65, 0.35],
)
# --------------------------------------------------
# 3. Generate the synthetic target
# --------------------------------------------------
brand_effect = {
"A": 3_500,
"B": 1_500,
"C": 0,
"D": -2_000,
}
brand_bonus = np.array(
[brand_effect[current_brand] for current_brand in brand]
)
automatic_bonus = np.where(
automatic == "yes",
1_200,
0,
)
noise = rng.normal(
loc=0,
scale=1_800,
size=n_samples,
)
price = (
42_000
- 0.09 * mileage
- 950 * age
+ 1_800 * engine_size
+ brand_bonus
+ automatic_bonus
+ noise
)
price = np.maximum(price, 2_500)
price = price.round(0)
# --------------------------------------------------
# 4. Create the DataFrame
# --------------------------------------------------
cars = pd.DataFrame(
128 · # --------------------------------------------------
# 10. Create the complete machine-learning pipeline
# --------------------------------------------------
model = Pipeline(
steps=[
(
"preprocessing",
preprocessor,
),
(
"regressor",
LinearRegression(),
),
]
)
# --------------------------------------------------
# 11. Train the pipeline
# --------------------------------------------------
model.fit(
X_train,
y_train,
)
# --------------------------------------------------
# 12. Make predictions
# --------------------------------------------------
y_pred = model.predict(X_test)
# --------------------------------------------------
# 13. Evaluate the model
# --------------------------------------------------
mae = mean_absolute_error(
y_test,
y_pred,
)
mse = mean_squared_error(
y_test,
y_pred,
)
rmse = np.sqrt(mse)
r2 = r2_score(
y_test,
y_pred,
)
print(f"MAE: {mae:,.2f}")
print(f"MSE: {mse:,.2f}")
print(f"RMSE: {rmse:,.2f}")
print(f"R²: {r2:.4f}")
# --------------------------------------------------
# 14. Create a prediction report
# --------------------------------------------------
results = pd.DataFrame(
{
"actual_price": y_test,
"predicted_price": y_pred,
}
)
results["residual"] = (
results["actual_price"]
- results["predicted_price"]
)
results["absolute_error"] = (
results["residual"].abs()
)
print("\nPrediction results:")
print(results.head(10))
# --------------------------------------------------
# 15. Inspect the fitted preprocessing steps
# --------------------------------------------------
fitted_preprocessor = (
model.named_steps["preprocessing"]
)
fitted_regressor = (
model.named_steps["regressor"]
)
fitted_scaler = (
fitted_preprocessor
.named_transformers_["num"]
.named_steps["scaler"]
)
fitted_encoder = (
fitted_preprocessor
.named_transformer
153 · # --------------------------------------------------
# 19. Save the complete pipeline
# --------------------------------------------------
joblib.dump(
model,
"car_price_pipeline.joblib",
)
122 · توضیح و کپشن کامل جلسه آموزش عملی رگرسیون با پایتون
در این جلسه، در ادامه مبحث یادگیری نظارتشده و رگرسیون از کتاب Hands-On Machine Learning with Scikit-Learn and PyTorch، چاپ ۲۰۲۶، تلاش کردیم مفاهیم نظری کتاب را در قالب یک پروژه عملی پایتون پیادهسازی کنیم. هدف این جلسه صرفاً نوشتن چند خط کد برای پیشبینی قیمت خودرو نبود، بلکه قصد داشتیم مسیر کامل تبدیل یک مسئله واقعی به یک پروژه یادگیری ماشین را مرحلهبهمرحله بررسی کنیم؛ از ساخت و سازماندهی دادهها گرفته تا پیشپردازش، آموزش مدل، پیشبینی، ارزیابی نتایج و بررسی اتفاقاتی که در پشت صحنه متدهایی مانند fit()، transform() و predict() رخ میدهد.
در ابتدای درس، یک مجموعه داده مصنوعی درباره خودروها ایجاد کردیم. در این مجموعه داده، هر سطر نماینده یک خودرو یا یک نمونه آموزشی بود و هر ستون، یکی از ویژگیهای آن خودرو را نمایش میداد. ویژگیهایی مانند میزان کارکرد خودرو، سن، حجم موتور، برند و نوع گیربکس بهعنوان ورودی مدل در نظر گرفته شدند و قیمت خودرو نیز نقش متغیر هدف را داشت. استفاده از داده مصنوعی به ما این امکان را داد که رابطه تولید قیمت را از قبل بدانیم و سپس بررسی کنیم که آیا مدل رگرسیون میتواند این رابطه را از روی دادهها کشف کند یا خیر. همچنین با اضافهکردن نویز تصادفی به قیمتها نشان دادیم که دادههای دنیای واقعی معمولاً کاملاً منظم و قطعی نیستند و عواملی وجود دارند که ممکن است در مجموعه ویژگیهای ما ثبت نشده باشند.
بخش مهمی از این جلسه به مرور و تعمیق مفاهیم پایه پایتون، NumPy و Pandas اختصاص داشت. بررسی کردیم که یک List در پایتون چیست، عناصر آن چگونه با Index قابل دسترسی هستند و چگونه میتوان از آن برای نگهداری نام برندها یا نام ستونهای داده استفاده کرد. سپس با Dictionary آشنا شدیم و دیدیم که چگونه میتوان برای هر برند، یک اثر عددی بر قیمت تعریف کرد. همچنین مفهوم List Comprehension را بررسی کردیم و نشان دادیم که چگونه میتوان یک حلقه چندخطی را بهشکل فشردهتر و خواناتر نوشت.
در ادامه، آرایههای NumPy و تفاوت آنها با لیستهای پایتون توضیح داده شدند. با استفاده از محاسبات برداری، بدون نوشتن حلقههای طولانی، مقدار قیمت تمام خودروها را بهصورت همزمان محاسبه کردیم. این بخش فرصتی بود تا مفهوم Vectorization را بهتر
114 · برای ویژگیهای عددی از StandardScaler استفاده کردیم. این Transformer میانگین و انحراف معیار هر ستون عددی را از دادههای آموزشی یاد میگیرد و سپس مقادیر را استاندارد میکند. در این فرایند، مقادیر هر ویژگی به مقیاسی تبدیل میشوند که تقریباً میانگین صفر و انحراف معیار یک دارد. این کار باعث میشود ویژگیهایی با دامنههای بسیار متفاوت، در یک مقیاس قابلمقایسه قرار بگیرند. هرچند رگرسیون خطی معمولی بدون استانداردسازی نیز قابل اجراست، استفاده از StandardScaler در این مثال به ما اجازه داد مفهوم Transformer، متد fit() و ذخیره پارامترهای یادگرفتهشده را بهتر بررسی کنیم.
برای ویژگیهای دستهای از OneHotEncoder استفاده شد. این ابزار هر دسته را به ستونهای صفر و یک تبدیل میکند. برای مثال، اگر ستون برند شامل چهار مقدار A، B، C و D باشد، Encoder میتواند برای هر برند یک ستون جداگانه ایجاد کند. با تنظیم drop="first" یکی از دستهها بهعنوان دسته مبنا حذف شد تا از وابستگی خطی کامل میان ستونهای کدگذاریشده جلوگیری شود. همچنین با تنظیم handle_unknown="ignore" مشخص کردیم که اگر در زمان پیشبینی با یک برند جدید و دیدهنشده مواجه شدیم، برنامه متوقف نشود. البته توضیح داده شد که اجراشدن کد بدون خطا، الزاماً به معنای معتبر بودن علمی پیشبینی برای یک دسته ناشناخته نیست.
سپس با استفاده از ColumnTransformer مشخص کردیم که هر گروه از ستونها باید از چه مسیری عبور کند. ستونهای عددی وارد StandardScaler شدند و ستونهای دستهای از OneHotEncoder عبور کردند. خروجی این دو بخش در نهایت در کنار یکدیگر قرار گرفت و یک ماتریس کاملاً عددی برای مدل ایجاد شد. این بخش نشان داد که در پروژههای واقعی، معمولاً نمیتوان یک عملیات واحد را روی تمام ستونها اجرا کرد و باید برای انواع مختلف داده، پردازشهای متفاوتی تعریف کرد.
در ادامه، تمام مراحل پیشپردازش و مدل رگرسیون خطی را داخل یک Pipeline قرار دادیم. Pipeline یکی از ابزارهای بسیار مهم Scikit-learn است که مراحل مختلف یک پروژه را به یک زنجیره منظم تبدیل میکند. در این پروژه، داده خام ابتدا وارد بخش Preprocessing میشود، ویژگیهای عددی استاندارد میشوند، ویژگیهای دستهای کدگذاری میشوند و سپس ماتریس حاصل در اختیار مدل LinearRegression قرار میگیرد. مزیت Pipeline ا
125 · اگر میانگین، انحراف معیار یا دستهها با استفاده از کل داده یا مجموعه آزمون محاسبه شوند، بخشی از اطلاعات آزمون وارد فرایند آموزش میشود و نتیجه ارزیابی غیرواقعی و خوشبینانه خواهد شد.
برای سنجش عملکرد مدل، از معیارهای MAE، MSE، RMSE و استفاده کردیم. معیار MAE میانگین قدر مطلق خطاها را نشان میدهد و تفسیر مستقیمی در واحد قیمت دارد. MSE خطاها را به توان دو میرساند و به خطاهای بزرگ حساستر است. RMSE با گرفتن جذر MSE دوباره به واحد اصلی قیمت بازمیگردد. ضریب تعیین یا نیز نشان میدهد مدل چه مقدار از تغییرات متغیر هدف را توضیح میدهد. همچنین تأکید شد که نباید ارزیابی مدل را فقط به یک عدد محدود کرد و بهتر است پیشبینیهای واقعی، خطاها و نمونههایی که مدل در آنها ضعیفتر عمل کرده است نیز بررسی شوند.
در ادامه، جدولی شامل قیمت واقعی، قیمت پیشبینیشده، Residual و Absolute Error ایجاد کردیم. Residual تفاوت میان مقدار واقعی و مقدار پیشبینیشده است. اگر Residual مثبت باشد، مدل قیمت را کمتر از مقدار واقعی برآورد کرده و اگر منفی باشد، مدل بیشبرآورد انجام داده است. سپس با مرتبسازی جدول بر اساس خطای مطلق، نمونههایی را که مدل در آنها بیشترین اشتباه را داشت شناسایی کردیم. این روش تحلیل خطا یکی از مراحل مهم توسعه مدلهای یادگیری ماشین است، زیرا به ما نشان میدهد مدل دقیقاً در چه شرایطی دچار مشکل میشود.
در پایان، ضرایب مدل را استخراج و تفسیر کردیم. بررسی کردیم که چگونه میتوان تأثیر نسبی کارکرد، سن، حجم موتور، برند و گیربکس را بر قیمت پیشبینیشده مشاهده کرد. چون ویژگیهای عددی استاندارد شده بودند، ضرایب اولیه در واحد انحراف معیار تفسیر میشدند. سپس با استفاده از مقادیر scale_ ضرایب را به واحدهای اصلی بازگرداندیم تا بتوانیم آنها را با رابطهای که در زمان تولید داده مصنوعی تعریف کرده بودیم مقایسه کنیم.
همچنین یک خودروی جدید در قالب DataFrame ساخته شد و کل Pipeline با یک دستور، پیشپردازش و پیشبینی قیمت آن را انجام داد. در نهایت کل Pipeline، شامل StandardScaler، OneHotEncoder، ColumnTransformer و LinearRegression، با استفاده از joblib ذخیره شد. ذخیره کل Pipeline اهمیت زیادی دارد، زیرا برای استفاده از مدل در آینده تنها ضرایب رگرسیون کافی نیستند؛ باید دقیقاً بدانیم دادهها در زمان
188 · #یادگیری_ماشین #پایتون #رگرسیون #هوش_مصنوعی #علم_داده #آموزش_پایتون #MachineLearning #Python #Regression #LinearRegression #ScikitLearn #Pandas #NumPy #DataScience #Pipeline #FeatureEngineering #JupyterNotebook #AIEngineering
179 · Видео
Rec 0193.mp4 · 138.4 MB · click to show
Rec 0193.mp4 · 138.4 MB · click to show
در این ویدئو، بخش اول پروژه عملی پیشبینی قیمت خودرو با پایتون را آموزش دادهام. ابتدا کتابخانههای NumPy، Pandas و Scikit-learn را معرفی میکنیم و سپس با استفاده از مولد اعداد تصادفی، یک مجموعهداده مصنوعی شامل کارکرد، سن، حجم موتور، برند و نوع گیربکس خودرو میسازیم.
در ادامه، مفاهیمی مانند List، Dictionary، NumPy Array، Seed، تولید داده تصادفی، محاسبات برداری، نویز و ساخت متغیر هدف توضیح داده میشوند. در پایان نیز دادهها را به یک Pandas DataFrame تبدیل کرده و با ابزارهایی مانند head()، shape، dtypes، isna()، value_counts() و describe() ساختار و کیفیت دادهها را بررسی میکنیم.
این ویدئو مقدمات آمادهسازی داده را پوشش میدهد و زمینه ورود به مرحله آموزش مدل رگرسیون را فراهم میکند.
#پایتون #یادگیری_ماشین #رگرسیون #NumPy #Pandas #ScikitLearn #DataScience #MachineLearning
226 · 12 July 2026
در این ویدئو، بخش اول پروژه عملی پیشبینی قیمت خودرو با پایتون را آموزش دادهام. ابتدا کتابخانههای NumPy، Pandas و Scikit-learn را معرفی میکنیم و سپس با استفاده از مولد اعداد تصادفی، یک مجموعهداده مصنوعی شامل کارکرد، سن، حجم موتور، برند و نوع گیربکس خودرو میسازیم.
در ادامه، مفاهیمی مانند List، Dictionary، NumPy Array، Seed، تولید داده تصادفی، محاسبات برداری، نویز و ساخت متغیر هدف توضیح داده میشوند. در پایان نیز دادهها را به یک Pandas DataFrame تبدیل کرده و با ابزارهایی مانند head()، shape، dtypes، isna()، value_counts() و describe() ساختار و کیفیت دادهها را بررسی میکنیم.
این ویدئو مقدمات آمادهسازی داده را پوشش میدهد و زمینه ورود به مرحله آموزش مدل رگرسیون را فراهم میکند.
#پایتون #یادگیری_ماشین #رگرسیون #NumPy #Pandas #ScikitLearn #DataScience #MachineLearning
212 · Видео
Rec 0195.mp4 · 147.3 MB · click to show
Rec 0195.mp4 · 147.3 MB · click to show
در این ویدئو، بخش اول پروژه عملی پیشبینی قیمت خودرو با پایتون را آموزش دادهام. ابتدا کتابخانههای NumPy، Pandas و Scikit-learn را معرفی میکنیم و سپس با استفاده از مولد اعداد تصادفی، یک مجموعهداده مصنوعی شامل کارکرد، سن، حجم موتور، برند و نوع گیربکس خودرو میسازیم.
در ادامه، مفاهیمی مانند List، Dictionary، NumPy Array، Seed، تولید داده تصادفی، محاسبات برداری، نویز و ساخت متغیر هدف توضیح داده میشوند. در پایان نیز دادهها را به یک Pandas DataFrame تبدیل کرده و با ابزارهایی مانند head()، shape، dtypes، isna()، value_counts() و describe() ساختار و کیفیت دادهها را بررسی میکنیم.
این ویدئو مقدمات آمادهسازی داده را پوشش میدهد و زمینه ورود به مرحله آموزش مدل رگرسیون را فراهم میکند.
#پایتون #یادگیری_ماشین #رگرسیون #NumPy #Pandas #ScikitLearn #DataScience #MachineLearning
260 · 13 July 2026
Видео
Rec 0197.mp4 · 78.8 MB · click to show
Rec 0197.mp4 · 78.8 MB · click to show
در این ویدئو، بخش پنجم کتاب Python Data Science Handbook با عنوان Machine Learning را تا ابتدای فصل ۳۷ بررسی میکنیم. با تعریف کلی یادگیری ماشین، اهداف این بخش، نقش کتابخانه Scikit-Learn و مسیر پیشِروی آموزش آشنا میشویم تا برای ورود به مفاهیم اصلی و الگوریتمهای یادگیری ماشین آماده شویم.
259 · Файл
Jake_VanderPlas_Python_Data_Science_Handbook_Essential_Tools · 19.7 MB · click to show
Jake_VanderPlas_Python_Data_Science_Handbook_Essential_Tools · 19.7 MB · click to show
📘 معرفی کتاب Python Data Science Handbook
کتاب Python Data Science Handbook نوشتهی جیک واندرپلاس (Jake VanderPlas)، یکی از منابع کاربردی و معتبر برای یادگیری علم داده با پایتون است. این کتاب بهصورت مرحلهبهمرحله ابزارهای مهم این حوزه را معرفی میکند؛ از کار با IPython و Jupyter گرفته تا محاسبات عددی با NumPy، تحلیل و پاکسازی دادهها با Pandas، مصورسازی با Matplotlib و پیادهسازی الگوریتمهای یادگیری ماشین با Scikit-Learn. ساختار مثالمحور و کدنویسی عملی کتاب، آن را به منبعی مناسب برای دانشجویان، پژوهشگران و علاقهمندان سطح مقدماتی تا متوسط علم داده تبدیل کرده است.
نکته: ناشر، تاریخ انتشار رسمی ویرایش دوم را دسامبر ۲۰۲۲ ثبت کرده است؛ نسخهای که با عنوان چاپ ۲۰۲۳ در اختیار دارید، احتمالاً چاپ یا توزیع سال ۲۰۲۳ همین ویرایش است.
355 · 14 July 2026
🚀 پایان جنگ همیشگی GET و POST: متد جدید QUERY در HTTP رسمی شد!
اگر کئوریهای سنگین، فیلترهای پیچیده داشبورد یا کدهای GraphQL مینویسید، دیگر نیازی به هکهای قدیمی نیست. متد QUERY (استاندارد جدید RFC 10008) دقیقاً مثل یک «GET دارای Body» عمل میکند.
❌ مشکل قدیمی چی بود؟ برای فیلترهای سنگین یا باید آدرس URL رو با دیتای زیاد کثیف و طولانی میکردیم (GET) که به محدودیت کاراکتر میخورد، یا به دروغ از POST استفاده میکردیم که اصلاً کشپذیر نبود و امنیت شبکه رو به هم میزد.
💡 راهحل جدید (QUERY): حالا دیتای سنگین فیلترها رو میفرستیم داخل Request Body (مثل POST) اما سرور و CDNها میدونن این فقط یک درخواست «خواندنی» هست، پس هم کاملاً کشپذیره و هم در صورت قطع اینترنت، مرورگر میتونه امن و خودکار تکرارش (Retry) کنه.
QUERY /api/v1/analytics HTTP/1.1
Content-Type: application/json
{
"date_range": { "start": "2026-01-01", "end": "2026-06-30" },
"metrics": ["ctr", "revenue"],
"filters": [{ "field": "region", "values": ["US", "EU"] }]
}
🔹 مزیت اصلی: آدرسهای URL تمیز میمونن، دیتای فیلترها لو نمیره، حجم نامحدوده و قابلیت Caching حفظ میشه. ⚠️ فقط زمان میبره تا فایروالها و پروکسیهای قدیمی باهاش هماهنگ بشن.
4.5K ·