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

This commit is contained in:
2024-11-01 00:14:13 +08:00
parent f11d075a99
commit 6936ea4ee5
+5 -9
View File
@@ -1,14 +1,8 @@
import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
"""
实验说明:
- 自行编写实现数据加载与预测病马死亡的对率回归算法。
"""
id = "202210423130"
name = "董秋"
@@ -27,7 +21,7 @@ def train_logreg(X, y, learning_rate=0.01, iterations=1000, lambda_reg=0.01):
m, n = X.shape
weights = np.zeros(n)
for _ in range(iterations):
for i in range(iterations):
z = np.dot(X, weights)
predictions = 1 / (1 + np.exp(-z))
gradient = np.dot(X.T, (predictions - y)) / m
@@ -37,6 +31,9 @@ def train_logreg(X, y, learning_rate=0.01, iterations=1000, lambda_reg=0.01):
weights -= learning_rate * gradient
# 动态调整学习率,逐渐减小
learning_rate *= 0.99 # 每次迭代将学习率乘以0.99
return weights
@@ -92,7 +89,6 @@ def preprocess_data(X):
if __name__ == "__main__":
# 以下代码可用于测试,可自行随意修改
# 加载训练集
X_train, y_train = load_data("./data/horse-colic.data")
X_train = preprocess_data(X_train)
@@ -102,7 +98,7 @@ if __name__ == "__main__":
X_test = preprocess_data(X_test)
# 训练对率回归模型
weights = train_logreg(X_train, y_train, learning_rate=0.01, iterations=1000, lambda_reg=0.01)
weights = train_logreg(X_train, y_train, learning_rate=0.1, iterations=1000, lambda_reg=0.01)
# 测试单个数据
y_pred = predict_logreg(X_test[11], weights)