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

This commit is contained in:
2024-11-21 15:29:57 +08:00
parent b48e57fbd6
commit 4470d0c925
+22 -6
View File
@@ -31,6 +31,7 @@ name = "杨文强"
def load_data(filepath): def load_data(filepath):
""" """
从文件中加载数据,并返回特征和标签。 从文件中加载数据,并返回特征和标签。
如果数据中包含 '?' 字符,将其处理为 NaN。
Args: Args:
- filepath (str): 数据文件路径。 - filepath (str): 数据文件路径。
@@ -39,19 +40,34 @@ def load_data(filepath):
- np.array: 特征数据。 - np.array: 特征数据。
- np.array: 标签数据。 - np.array: 标签数据。
""" """
data = np.loadtxt(filepath, delimiter=" ", dtype=str) # 读取数据,指定将 '?' 转换为 np.nan
data = np.genfromtxt(filepath, delimiter=" ", dtype=str, missing_values='?', filling_values=np.nan)
X = [] X = []
y = [] y = []
for row in data: for row in data:
features = row[:-1].astype(float) # 特征数据 features = row[:-1] # 特征数据
label = int(row[-1]) # 标签数据 (0 或 1) label = row[-1] # 标签数据
# 转换标签为 +1 或 -1 # 将特征中的 '?' 替换为 NaN,后续可以选择删除这些行或填充NaN值
y.append(1 if label == 1 else -1) features = [float(x) if x != '?' else np.nan for x in features]
# 标签的处理:确保标签是 1 或 -1
label = int(label) # 标签需要转换为整数 1 或 0
y.append(1 if label == 1 else -1) # 将标签转换为 +1 或 -1
X.append(features) X.append(features)
return np.array(X), np.array(y) X = np.array(X)
y = np.array(y)
# 处理缺失值:可以选择删除含有NaN的样本
# 这里是删除含有NaN的行
valid_indices = ~np.isnan(X).any(axis=1)
X = X[valid_indices]
y = y[valid_indices]
return X, y
def train_svm(X, y, learning_rate=0.01, iterations=1000, regularization_param=0.01): def train_svm(X, y, learning_rate=0.01, iterations=1000, regularization_param=0.01):
""" """