333
Gitea Actions Experiment Test / Experiment-Actions (push) Successful in 23s

This commit is contained in:
lzh
2024-11-02 21:16:41 +08:00
parent 00bb140faa
commit 45d9232ec5
+3 -58
View File
@@ -36,7 +36,9 @@ def load_data(filepath):
# Add bias term (intercept)
X = np.insert(X, 0, 1, axis=1)
scaler = StandardScaler()
X = scaler.fit_transform(X)
return X, y_train
def train_logreg(X, y, numIter=1000, learning_rate=0.01, batch_size=128, lambda_reg=0.01):
@@ -74,60 +76,3 @@ def predict_logreg(inX, weights):
prob = 1 / (1 + np.exp(-z))
return 1 if prob >= 0.5 else 0
if __name__ == "__main__":
# Data loading
X_train, y_train = load_data("./data/horse-colic.data")
X_test, y_test = load_data("./data/horse-colic.test")
# Standardize the features
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# Split training data into training and validation sets
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.2, random_state=42)
# Logistic regression training and evaluation
best_weights = None
best_auc = 0
for iter in range(1, 1001):
weights = train_logreg(X_train, y_train, numIter=iter, learning_rate=0.01, lambda_reg=0.1)
y_pred = [predict_logreg(x, weights) for x in X_val]
# AUC score for validation predictions
auc = roc_auc_score(y_val, y_pred)
if auc > best_auc:
best_auc = auc
best_weights = weights
if iter > 10 and auc == best_auc:
break
# Predictions on the test set
y_pred_test = [predict_logreg(x, best_weights) for x in X_test]
accuracy_test = accuracy_score(y_test, y_pred_test)
print(f"Test Accuracy: {accuracy_test}")
# Random Forest model example
rf = RandomForestClassifier(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)
rf_accuracy = rf.score(X_test, y_test)
print(f"Random Forest Test Accuracy: {rf_accuracy}")
# Gradient Boosting model example
gb_clf = GradientBoostingClassifier()
gb_clf.fit(X_train, y_train)
yf_pred_gb = gb_clf.predict(X_test)
gb_accuracy = accuracy_score(y_test, yf_pred_gb)
print(f"Gradient Boosting Test Accuracy: {gb_accuracy}")
# Cross-validation for Gradient Boosting
scores = cross_val_score(gb_clf, X_train, y_train, cv=5, scoring='accuracy')
print("Cross-validation scores:", scores)
print("Average cross-validation score:", np.mean(scores))
# F1 score evaluation
f1 = f1_score(y_test, yf_pred_gb)
print("F1 Score:", f1)