更新 function.py
Gitea Actions Experiment Test / Experiment-Actions (push) Successful in 11s

This commit is contained in:
cy
2024-10-24 17:21:10 +08:00
parent 23921f47c6
commit d9385b0323
+9 -9
View File
@@ -28,7 +28,7 @@ def sigmoid(z):
return 1.0 / (1 + np.exp(-z)) return 1.0 / (1 + np.exp(-z))
# 这里写自己的代码实现 # 这里写自己的代码实现
def train_logreg(X, y, learning_rate=0.01, iterations=1000, batch_size=32): def train_logreg(X, y, learning_rate=0.01, iterations=1000):
""" """
对率回归训练函数。 对率回归训练函数。
@@ -42,15 +42,15 @@ def train_logreg(X, y, learning_rate=0.01, iterations=1000, batch_size=32):
""" """
m, n = X.shape m, n = X.shape
weights = np.zeros(n) weights = np.zeros(n)
# 用于Adagrad的累积平方梯度
r = np.zeros(n)
epsilon = 1e-8
for i in range(iterations): for i in range(iterations):
for j in range(0, m, batch_size): z = np.dot(X, weights)
end = min(j + batch_size, m) h = sigmoid(z)
X_batch = X[j:end] gradient = np.dot(X.T, (h - y)) / m
y_batch = y[j:end] r += gradient ** 2
z = np.dot(X_batch, weights) weights -= learning_rate * gradient / (np.sqrt(r) + epsilon)
h = sigmoid(z)
gradient = np.dot(X_batch.T, (h - y_batch)) / len(X_batch)
weights -= learning_rate * gradient
return weights return weights
def predict_logreg(inX, weights): def predict_logreg(inX, weights):