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

This commit is contained in:
cy
2024-10-26 19:06:10 +08:00
parent a12a9d7d6f
commit 59f017f0ba
+39 -11
View File
@@ -121,18 +121,46 @@ def load_data(filepath):
return data, target_variable
def accuracy(X, y, weights):
predictions = [predict_logreg(x, weights) for x in X]
accuracy = np.mean(predictions == y)
return accuracy
def grid_search(X_train, y_train, X_test, y_test, param_grid):
best_accuracy = 0
best_params = None
for params in product(*param_grid.values()):
learning_rate, iterations, batch_size, regularization, lambda_reg = params
print(f"尝试参数组合: {params}")
weights = train_logreg(X_train, y_train, learning_rate, iterations, batch_size, regularization, lambda_reg)
acc = accuracy(X_test, y_test, weights)
print(f"当前准确率: {acc:.4f}")
if acc > best_accuracy:
best_accuracy = acc
best_params = params
return best_params, best_accuracy
if __name__ == "__main__":
# 以下代码可用于测试,可自行随意修改
# 加载训练集
X_train, y_train = load_data("./data/horse-colic.data")
X_train, y_train = load_data("./horse-colic.data")
X_test, y_test = load_data("./horse-colic.test")
# 加载测试集
X_test, y_test = load_data("./data/horse-colic.test")
# 定义参数网格
param_grid = {
'learning_rate': [0.01, 0.05],
'iterations': [500, 1000],
'batch_size': [16, 32],
'regularization': [None, 'L1', 'L2'],
'lambda_reg': [0.1, 0.5]
}
# 训练对率回归模型
weights = train_logreg(X_train, y_train, learning_rate=0.01, iterations=1000, batch_size=16, regularization='L1',
lambda_reg=0.1)
# 进行网格搜索
best_params, best_accuracy = grid_search(X_train, y_train, X_test, y_test, param_grid)
# 测试单个数据
y_pred = predict_logreg(X_test[11], weights)
print(f"预测结果: {y_pred}, 实际结果: {y_test[11]}")
print(f"最佳参数组合: {best_params}")
print(f"最佳准确率: {best_accuracy:.4f}")