Python Code bij Ga jij je examens halen?

# importeer library
import numpy as np

# geef datapunten op
SE = [7.1, 5.3, 5.8, 6, 5.6, 6, 7.2, 5.3, 6.2, 8.8, 5, 4.5]
voldoende = [1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0]

# geef minimum/maximum en precisie op
a_min = 0
a_max = 3
b_min = -20
b_max = -15
precisie = 0.01

# maak grid aan
a_grid = [float(a_min) + i*precisie for i in range(int((a_max-a_min)/precisie)+1)]
b_grid = [float(b_min) + i*precisie for i in range(int((b_max-b_min)/precisie)+1)]

# bereken loss-functie voor combinatie van a en b
def loss_function(x, y, a, b):
    log_loss = 0
    for i in range(len(y)):
        y_pred = 1/(1+np.exp(-(a*x[i] + b)))
        log_loss += -y[i]*np.log(y_pred) - (1-y[i])*np.log(1-y_pred)
    return log_loss

# voer grid search uit voor alle combinaties van a en b
def grid_search(x, y, a, b):
    grid = [[0 for i in range(len(b))] for j in range(len(a))]
    for i in range(len(a)):
        for j in range(len(b)):
            grid[i][j] = loss_function(x, y, a[i], b[j])
    grid_min = np.argwhere(grid == np.nanmin(grid))
    print(f"a: {a[grid_min[0][0]]}")
    print(f"b: {b[grid_min[0][1]]}")

    if a[grid_min[0][0]] == a_min:
        print("Probeer het nog eens, maar met een lagere waarde voor a_min.")
    elif a[grid_min[0][0]] == a_max:
        print("Probeer het nog eens, maar met een hogere waarde voor a_max.")
    
    if b[grid_min[0][1]] == b_min:
        print("Probeer het nog eens, maar met een lagere waarde voor b_min.")
    elif b[grid_min[0][1]] == b_max:
        print("Probeer het nog eens, maar met een hogere waarde voor b_max.")

# bepaal waarden voor a en b
grid_search(SE, voldoende, a_grid, b_grid)