К задачам

Логистическая регрессия с нуля на транспонированных признаках

СложнаяML-задачи
Лучше работает на десктопе
NumPyЛогистическая регрессияГрадиентный спускРазмерности
План подготовки

Задача — реализовать бинарную логистическую регрессию с нуля для классификатора принятия поездки.

Матрица признаков дана в транспонированном формате: features[j][i] — это признак j для обучающего примера i.

Реализуйте gradient descent для логистической регрессии со свободным членом и верните бинарные предсказания для query_features, где используется такой же транспонированный формат.

Используйте порог 0.5: вероятность >= 0.5 соответствует классу 1, иначе классу 0.

Signature

def predict_trip_acceptance(
    features: list[list[float]],
    targets: list[int],
    query_features: list[list[float]],
    learning_rate: float = 0.5,
    steps: int = 5000,
) -> list[int]:

Примечания

  • features имеет форму d x n, а не n x d.
  • targets имеет длину n.
  • query_features имеет форму d x m.
  • Можно использовать только Python и стандартные математические операции; NumPy допустим концептуально, но для этой версии тренажёра не нужен.

Примеры

Пример 1

Вход:
features = [[0,0,1,1],[0,1,0,1]]
targets = [0,0,0,1]
query_features = [[0,0,1,1],[0,1,0,1]]
Выход:[0,0,0,1]

Обучается простой AND-like границе на транспонированных признаках

Пример 2

Вход:
features = [[0.9,0.8,0.4,0.3,0.85,0.2],[0.1,0.2,0.7,0.8,0.3,0.9]]
targets = [1,1,0,0,1,0]
query_features = [[0.95,0.5,0.1],[0.1,0.5,0.9]]
Выход:[1,0,0]

Признаки в стиле принятия поездки: высокий рейтинг и маленькая дистанция

Пример 3

Вход:
features = [[1,2,3,4,5,6]]
targets = [0,0,0,1,1,1]
query_features = [[1.5,3.5,5.5]]
Выход:[0,1,1]

Одномерный разделимый случай всё равно использует формат d x n

Код
Python · Ctrl/⌘ + Enter для запуска
Лимит
15:00
Консоль
Нажмите кнопку запуска или Ctrl+Enter
Логистическая регрессия с нуля на транспонированных признаках — ML-задачи задача — ML Mentor