0%
در حال بارگذاری...

جستجو در سایت

درس ۵ سطح پیشرفته: (Machine Learning) یادگیری ماشین در پایتون – FastAPI + Scikit-learn + استقرار مدل با Docker

پایتون | Python پیشرفته

سلام دانشمند داده و مهندس هوش مصنوعی پایتون! بعد گذشتن از درس چهارم به درس پنجم و یکی از جذاب‌ترین درس‌های سطح پیشرفته رسیدی. الان دیگه فقط برنامه‌نویس نیستی – یه **مهندس یادگیری ماشین** هستی که می‌تونه مدل‌های هوشمند بسازه، با داده‌های واقعی آموزشش بده، با FastAPI در قالب API ارائه کنه و با Docker روی سرور واقعی مستقر کنه. وقتی این درس تموم بشه، می‌تونی به هر شرکتی بری و بگی: «من مدل ML رو از صفر تا استقرار می‌دم!» — و همه با چشمای گردش بهت نگاه می‌کنن. آماده‌ای که هوش مصنوعی رو وارد پروژه‌هات کنی؟ بریم که یه جهش کوانتومی بکنیم!

چرا پایتون بهترین زبان برای Machine Learning است؟

  • کتابخانه‌های بی‌نظیر: scikit-learn, TensorFlow, PyTorch, XGBoost
  • جامعه عظیم و دیتاست‌های آماده
  • استقرار ساده با FastAPI + Docker
  • استفاده شده توسط گوگل، متا، اوبر، نتفلیکس

نصب کتابخانه‌های ضروری

pip install scikit-learn pandas numpy fastapi uvicorn python-multipart joblib

اولین مدل: پیش‌بینی قیمت خانه با رگرسیون

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
import joblib

# داده نمونه (می‌تونی از Kaggle دانلود کنی)
df = pd.read_csv("house_prices.csv")

X = df[['area', 'bedrooms', 'age']]
y = df['price']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

print(f"دقت مدل: {model.score(X_test, y_test):.3f}")

# ذخیره مدل
joblib.dump(model, "house_price_model.pkl")
print("مدل ذخیره شد!")

ساخت API با FastAPI برای مدل

# main.py
from fastapi import FastAPI
from pydantic import BaseModel
import joblib
import numpy as np

app = FastAPI(title="پیش‌بینی قیمت خانه", version="1.0")

# بارگذاری مدل
model = joblib.load("house_price_model.pkl")

class HouseInput(BaseModel):
    area: float
    bedrooms: int
    age: int

@app.post("/predict")
async def predict_price(house: HouseInput):
    features = np.array([[house.area, house.bedrooms, house.age]])
    prediction = model.predict(features)[0]
    return {
        "predicted_price": round(float(prediction), 2),
        "unit": "میلیون تومان",
        "input": house.dict()
    }

@app.get("/")
async def home():
    return {"message": "مدل پیش‌بینی قیمت خانه آماده است! به /docs برو"}

استقرار مدل با Docker

# Dockerfile
FROM python:3.11-slim

WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .

EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

پیش‌پردازش داده‌ها – مهم‌ترین مرحله!

from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline

pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('model', RandomForestRegressor())
])

pipeline.fit(X_train, y_train)
joblib.dump(pipeline, "house_pipeline.pkl")

طبقه‌بندی: تشخیص ایمیل اسپم در ماشین لرنینگ پایتون

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB

emails = ["خرید ویاگرا", "جلسه فردا", "فاکتور خرید", "تبریک برنده شدی!"]
labels = [1, 0, 0, 1]  # 1=اسپم

vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(emails)

model = MultinomialNB()
model.fit(X, labels)

def is_spam(text):
    vec = vectorizer.transform([text])
    return "اسپم" if model.predict(vec)[0] == 1 else "عادی"

print(is_spam("تبریک! شما برنده ۱ میلیون شدید"))

۱۲ تمرین آتشین برای تبدیل شدن به ML Engineer

  1. مدل پیش‌بینی قیمت خانه رو با XGBoost بهتر کن
  2. یه API برای تشخیص اسپم ایمیل بساز
  3. مدل دسته‌بندی تصاویر با TensorFlow/Keras
  4. مدل پیش‌بینی فروش با Time Series (Prophet)
  5. Clustering مشتری‌ها با K-Means
  6. یه Recommendation System ساده بساز
  7. مدل رو با GridSearchCV بهینه کن
  8. Cross Validation و ارزیابی مدل
  9. مدل رو با Docker و Nginx استقرار بده
  10. API با Rate Limiting و Authentication
  11. مدل رو با MLflow track کن
  12. پروژه نهایی: سیستم تشخیص تقلب در تراکنش‌ها

پروژه نهایی درس: سیستم تشخیص تقلب در تراکنش‌های بانکی با ماشین لرنینگ پایتون

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import joblib
import numpy as np

app = FastAPI(title="سیستم تشخیص تقلب بانکی")

model = joblib.load("fraud_model.pkl")

class Transaction(BaseModel):
    amount: float
    time: float
    v1: float
    v2: float
    # ... تا V28
    class Config:
        schema_extra = {"example": {...}}

@app.post("/detect-fraud")
async def detect_fraud(tx: Transaction):
    features = np.array([[tx.amount, tx.time, tx.v1, tx.v2]])  # تا V28
    prediction = model.predict(features)[0]
    probability = model.predict_proba(features)[0]
    
    return {
        "is_fraud": bool(prediction),
        "fraud_probability": float(probability[1]),
        "risk_level": "HIGH" if probability[1] > 0.8 else "MEDIUM" if probability[1] > 0.5 else "LOW"
    }

جمع‌بندی و قدم بعدی

تبریک می‌گم دانشمند داده! تو الان می‌تونی مدل‌های یادگیری ماشین رو از صفر تا استقرار حرفه‌ای بسازی. درس بعدی (درس ۶) قراره درباره **DevOps پیشرفته، Monitoring، Logging، Alerting و Observability** باشه – جایی که سیستم‌هات رو ۲۴/۷ زنده و سالم نگه می‌داری. پروژه تشخیص تقلب رو توی GitHub آپلود کن و با افتخار بگو: «من ML Engineer هستم!»

ارسال نظر جدید

گزارش دیدگاه