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

This commit is contained in:
2024-11-03 21:57:01 +08:00
parent cab0fa2857
commit 2cc6215467
+17 -16
View File
@@ -3,14 +3,14 @@ import numpy as np
id="202210423210"
name="陈宇杰"
# Utility Functions
# Sigmoid Function
def sigmoid(z):
return 1 / (1 + np.exp(-z))
# Optimized Logistic Regression Training
# Optimized Logistic Regression Training Function
def train_logreg(X, y, learning_rate=0.01, iterations=1000, batch_size=128, lambda_reg=0.01):
m, n = X.shape
weights = np.random.randn(n) * 0.01 # Initialize weights with small random values for faster convergence
weights = np.random.randn(n) * 0.01 # Initialize weights with small random values
prev_weights = np.copy(weights)
for j in range(iterations):
@@ -30,7 +30,7 @@ def train_logreg(X, y, learning_rate=0.01, iterations=1000, batch_size=128, lamb
weights += learning_rate * gradient
# Early stopping: Check for convergence
# Early stopping condition
if np.linalg.norm(weights - prev_weights) < 1e-5:
print(f"Converged after {j} iterations.")
break
@@ -42,7 +42,7 @@ def predict_logreg(X, weights):
probabilities = sigmoid(np.dot(X, weights))
return (probabilities >= 0.5).astype(int)
# Load Data Function
# Data Loading Function
def load_data(filepath):
data, labels = [], []
with open(filepath, 'r') as file:
@@ -53,22 +53,23 @@ def load_data(filepath):
data.append(features)
labels.append(1 if label in ['2', '3'] else 0)
# Convert to numpy arrays
data = np.array(data)
labels = np.array(labels)
# Normalize data
data_mean = np.mean(data, axis=0)
data_std = np.std(data, axis=0)
data = (data - data_mean) / (data_std + 1e-10)
return data, labels, data_mean, data_std
return data, labels
# Load and Preprocess Data
# Main script
if __name__ == "__main__":
# Training data
X_train, y_train, data_mean, data_std = load_data("./data/horse-colic.data")
# Normalize test data using training mean and std
X_test, y_test, _, _ = load_data("./data/horse-colic.test")
# Load training data
X_train, y_train = load_data("./data/horse-colic.data")
# Calculate mean and std from training data
data_mean = np.mean(X_train, axis=0)
data_std = np.std(X_train, axis=0)
X_train = (X_train - data_mean) / (data_std + 1e-10)
# Load and normalize test data using training mean and std
X_test, y_test = load_data("./data/horse-colic.test")
X_test = (X_test - data_mean) / (data_std + 1e-10)
# Train model