diff --git a/function.py b/function.py index 744a800..50ed426 100644 --- a/function.py +++ b/function.py @@ -42,6 +42,7 @@ def load_data(filepath): del data[26] del data[25] del data[24] + del data[23] del data[22] del data[2] for i in data_25: @@ -57,7 +58,7 @@ def load_data(filepath): return X_train, y_train -def train_logreg(X, y, numIter=1000, learning_rate=0.06, batch_size=128, lambda_reg=0.01): +def train_logreg(X, y, numIter=1500, learning_rate=0.05, batch_size=64, lambda_reg=0.01): m, n = X.shape weights = np.zeros(n) for j in range(numIter): @@ -70,9 +71,10 @@ def train_logreg(X, y, numIter=1000, learning_rate=0.06, batch_size=128, lambda_ h = 1 / (1 + np.exp(-z)) error = batch_y - h gradient = np.dot(batch_X.T, error) / len(batch_y) - reg_term = 2 * lambda_reg * weights - gradient -= reg_term / len(batch_y) - weights += learning_rate * gradient + # L1正则化项 + l1_reg_term = np.sign(weights) + # 更新权重,加入L1正则化 + weights -= learning_rate * (gradient + lambda_reg * l1_reg_term) return weights def predict_logreg(inX, weights):