Logistic Regression с Gradient Descent

HardPython
10:00
Лучше работает на десктопе
MLLogistic Regressiongradient descentfrom scratch

Реализуйте Logistic Regression (бинарная классификация) с обучением через gradient descent.

Формулы:
- Sigmoid: σ(z) = 1 / (1 + exp(-z))
- Предсказание: ŷ = σ(X·w + b)
- Градиенты: dw = 1/n · Xᵀ·(ŷ - y), db = 1/n · Σ(ŷ - y)
- Обновление: w -= lr · dw, b -= lr · db

Задача основана на вопросах с собеседований в Яндекс и Avito.

Сигнатура

def logistic_regression(X: list[list[float]], y: list[int], lr: float, n_iter: int) -> dict:

Верните dict:
- loss: финальный BCE loss (округлить до 4 знаков)
- weights: список весов (округлить до 4 знаков)
- bias: bias (округлить до 4 знаков)
- predictions: предсказанные классы (0/1, порог 0.5)

Примеры

logistic_regression([[0,0],[0,1],[1,0],[1,1]], [0,0,0,1], 0.5, 1000)
→ {"loss": 0.0346, "weights": [6.0141, 6.0141], "bias": -9.1984, "predictions": [0,0,0,1]}

Примеры

Пример 1

Вход:
X = [[0,0],[0,1],[1,0],[1,1]]
y = [0,0,0,1]
lr = 0.5
n_iter = 1000
Выход:{"loss":0.0346,"weights":[6.0141,6.0141],"bias":-9.1984,"predictions":[0,0,0,1]}

AND gate

Пример 2

Вход:
X = [[1],[2],[3],[4]]
y = [0,0,1,1]
lr = 1
n_iter = 500
Выход:{"loss":0.0494,"weights":[4.586],"bias":-11.269,"predictions":[0,0,1,1]}

1D threshold

Консоль
Нажмите Run или Ctrl+Enter для запуска