import numpy as np
def sigmoid(z):
"""Sigmoid activation function"""
return 1 / (1 + np.exp(-z))
def logistic_cost_function(X, y, theta):
"""
Compute the cost function for logistic regression
Parameters:
X : numpy array of shape (m, n) - feature matrix
y : numpy array of shape (m,) - target labels (0 or 1)
theta : numpy array of shape (n,) - parameters
Returns:
cost : float
"""
m = len(y)
# Calculate hypothesis using sigmoid
h = sigmoid(X @ theta)
# Avoid log(0) errors by using np.clip or np.where
h = np.clip(h, 1e-15, 1 - 1e-15) # Clip to prevent log(0)
# Cost function with logs
cost = (-1/m) * np.sum(y * np.log(h) + (1 - y) * np.log(1 - h))
return cost
aW1wb3J0IG51bXB5IGFzIG5wCgpkZWYgc2lnbW9pZCh6KToKICAgICIiIlNpZ21vaWQgYWN0aXZhdGlvbiBmdW5jdGlvbiIiIgogICAgcmV0dXJuIDEgLyAoMSArIG5wLmV4cCgteikpCgpkZWYgbG9naXN0aWNfY29zdF9mdW5jdGlvbihYLCB5LCB0aGV0YSk6CiAgICAiIiIKICAgIENvbXB1dGUgdGhlIGNvc3QgZnVuY3Rpb24gZm9yIGxvZ2lzdGljIHJlZ3Jlc3Npb24KICAgIAogICAgUGFyYW1ldGVyczoKICAgIFggOiBudW1weSBhcnJheSBvZiBzaGFwZSAobSwgbikgLSBmZWF0dXJlIG1hdHJpeAogICAgeSA6IG51bXB5IGFycmF5IG9mIHNoYXBlIChtLCkgLSB0YXJnZXQgbGFiZWxzICgwIG9yIDEpCiAgICB0aGV0YSA6IG51bXB5IGFycmF5IG9mIHNoYXBlIChuLCkgLSBwYXJhbWV0ZXJzCiAgICAKICAgIFJldHVybnM6CiAgICBjb3N0IDogZmxvYXQKICAgICIiIgogICAgbSA9IGxlbih5KQogICAgCiAgICAjIENhbGN1bGF0ZSBoeXBvdGhlc2lzIHVzaW5nIHNpZ21vaWQKICAgIGggPSBzaWdtb2lkKFggQCB0aGV0YSkKICAgIAogICAgIyBBdm9pZCBsb2coMCkgZXJyb3JzIGJ5IHVzaW5nIG5wLmNsaXAgb3IgbnAud2hlcmUKICAgIGggPSBucC5jbGlwKGgsIDFlLTE1LCAxIC0gMWUtMTUpICAjIENsaXAgdG8gcHJldmVudCBsb2coMCkKICAgIAogICAgIyBDb3N0IGZ1bmN0aW9uIHdpdGggbG9ncwogICAgY29zdCA9ICgtMS9tKSAqIG5wLnN1bSh5ICogbnAubG9nKGgpICsgKDEgLSB5KSAqIG5wLmxvZygxIC0gaCkpCiAgICAKICAgIHJldHVybiBjb3N0