Loading
Loading
Functions turn repetitive code into reusable blocks. In AI you build your own library to speed up your work.
def greet(name):
return f"Hello {name}!"
print(greet("Ahmed")) # Hello Ahmed!
def train_model(epochs=10, learning_rate=0.001, verbose=True):
if verbose:
print(f"Training: {epochs} epochs | lr={learning_rate}")
return {"epochs": epochs, "lr": learning_rate}
train_model()
train_model(epochs=50, verbose=False)
def sum_losses(*losses):
return sum(losses)
print(sum_losses(0.5, 0.3, 0.2)) # 1.0
def log_metrics(**metrics):
for key, value in metrics.items():
print(f" {key}: {value:.4f}")
log_metrics(accuracy=0.92, loss=0.15, f1=0.89)
square = lambda x: x ** 2
print(square(5)) # 25
models = [("GPT-4", 0.91), ("Claude", 0.94), ("Gemini", 0.89)]
sorted_models = sorted(models, key=lambda m: m[1], reverse=True)
import math
print(math.sqrt(16)) # 4.0
import numpy as np
import pandas as pd
from random import shuffle, choice
from datetime import datetime
import os, json, time, random
start = time.time()
print(f"Took {time.time() - start:.2f} seconds")
data = {"model": "Claude", "tokens": 200_000}
print(json.dumps(data))
random.seed(42) # for reproducibility
# ─── بناء مكتبة أدوات AI بسيطة ───
import time, random
random.seed(42)
def normalize(data: list) -> list:
# تطبيع البيانات بين 0 و 1
min_val, max_val = min(data), max(data)
span = max_val - min_val or 1
return [(x - min_val) / span for x in data]
def accuracy(predictions: list, labels: list) -> float:
correct = sum(p == l for p, l in zip(predictions, labels))
return correct / len(labels)
def train(*, epochs: int = 10, lr: float = 0.01, verbose: bool = True) -> dict:
history = {"loss": [], "acc": []}
loss = 2.0
for epoch in range(1, epochs + 1):
loss *= (1 - lr) * random.uniform(0.85, 1.05)
loss = max(loss, 0.05)
acc = min(1 - loss / 4, 0.99)
history["loss"].append(round(loss, 4))
history["acc"].append(round(acc, 4))
if verbose and (epoch % 5 == 0 or epoch == 1):
print(f" Epoch {epoch:3d}: loss={loss:.4f} | acc={acc*100:.1f}%")
return history
def evaluate_model(history: dict) -> None:
final_acc = history["acc"][-1]
best_acc = max(history["acc"])
if final_acc >= 0.90: verdict = "✅ ممتاز"
elif final_acc >= 0.75: verdict = "🔄 جيد"
else: verdict = "❌ يحتاج إعادة تدريب"
print(f" الدقة النهائية : {final_acc*100:.1f}%")
print(f" أفضل دقة : {best_acc*100:.1f}%")
print(f" الحكم : {verdict}")
print("=" * 40)
start = time.time()
history = train(epochs=20, lr=0.08, verbose=True)
print("
--- تقييم النموذج ---")
evaluate_model(history)
print(f"
⏱ وقت التنفيذ: {(time.time()-start)*1000:.1f} مللي ثانية")
raw = [10, 25, 5, 40, 15]
norm = normalize(raw)
print(f"
قبل التطبيع : {raw}")
print(f"بعد التطبيع : {[round(v, 2) for v in norm]}")