Задача — реализовать бинарную логистическую регрессию с нуля для классификатора принятия поездки.
Матрица признаков дана в транспонированном формате: features[j][i] — это признак j для обучающего примера i.
Реализуйте gradient descent для логистической регрессии со свободным членом и верните бинарные предсказания для query_features, где используется такой же транспонированный формат.
Используйте порог 0.5: вероятность >= 0.5 соответствует классу 1, иначе классу 0.
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.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 границе на транспонированных признаках
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]Признаки в стиле принятия поездки: высокий рейтинг и маленькая дистанция
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