generated from LufsX/Experiment-LogReg
This commit is contained in:
+7
-3
@@ -28,7 +28,7 @@ def sigmoid(z):
|
||||
return 1.0 / (1 + np.exp(-z))
|
||||
|
||||
# 这里写自己的代码实现
|
||||
def train_logreg(X, y, learning_rate=0.01, iterations=1000):
|
||||
def train_logreg(X, y, learning_rate=0.01, iterations=1000, batch_size=32):
|
||||
"""
|
||||
对率回归训练函数。
|
||||
|
||||
@@ -43,9 +43,13 @@ def train_logreg(X, y, learning_rate=0.01, iterations=1000):
|
||||
m, n = X.shape
|
||||
weights = np.zeros(n)
|
||||
for i in range(iterations):
|
||||
z = np.dot(X, weights)
|
||||
for j in range(0, m, batch_size):
|
||||
end = min(j + batch_size, m)
|
||||
X_batch = X[j:end]
|
||||
y_batch = y[j:end]
|
||||
z = np.dot(X_batch, weights)
|
||||
h = sigmoid(z)
|
||||
gradient = np.dot(X.T, (h - y)) / m
|
||||
gradient = np.dot(X_batch.T, (h - y_batch)) / len(X_batch)
|
||||
weights -= learning_rate * gradient
|
||||
return weights
|
||||
|
||||
|
||||
Reference in New Issue
Block a user