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

This commit is contained in:
wzy
2024-10-24 17:17:16 +08:00
parent 1632972d99
commit 0ee6be36ef
+40 -3
View File
@@ -21,12 +21,26 @@ import numpy as np
"""
请在这里填写学号和姓名,不填写即成绩无效。
"""
id = "202210423xxx"
name = "test_name"
id = "202210423209"
name = "万子玉"
# 这里写自己的代码实现
def train_logreg(X, y, other_params="你自己设置一些其它参数"):
def sigmoid(z):
return 1 / (1 + np.exp(-z))
def train_logreg(X, y, learning_rate=0.01, iterations=1000):
X = np.insert(X, 0, 1, axis=1) # 添加偏置项
weights = np.zeros(X.shape[1])
m = X.shape[0]
for _ in range(iterations):
z = np.dot(X, weights)
h = sigmoid(z)
gradient = np.dot(X.T, (h - y)) / m
weights -= learning_rate * gradient
return weights
"""
对率回归训练函数。
@@ -41,6 +55,11 @@ def train_logreg(X, y, other_params="你自己设置一些其它参数"):
def predict_logreg(inX, weights):
inX = np.insert(inX, 0, 1) # 添加偏置项
z = np.dot(inX, weights)
h = sigmoid(z)
return 1 if h >= 0.5 else 0
"""
对率回归预测函数。
@@ -55,6 +74,24 @@ def predict_logreg(inX, weights):
# 这里也写自己的代码实现
def load_data(filepath):
with open(filepath, 'r') as file:
lines = file.readlines()
data = [line.strip().split() for line in lines]
data = [list(map(lambda x: float(x) if x != '?' else np.nan, row)) for row in data]
# 处理缺失值,这里简单用平均值填充
for i in range(len(data[0])):
mean_val = np.nanmean([row[i] for row in data if not np.isnan(row[i])])
for row in data:
if np.isnan(row[i]):
row[i] = mean_val
# 分离特征和标签
X = [row[:-1] for row in data]
y = [row[-1] for row in data]
return np.array(X), np.array(y)
"""
从文件中加载数据,若不自行正确实现,则无法通过评测,**不记录成绩**。