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

This commit is contained in:
2024-11-21 16:57:20 +08:00
parent 8491852abb
commit 6b6aa8df7b
+19 -2
View File
@@ -78,6 +78,8 @@ def predict_svm(inX, weights, bias):
# 这里也写自己的代码实现 # 这里也写自己的代码实现
import numpy as np
def load_data(filepath): def load_data(filepath):
""" """
从文件中加载数据,若不自行正确实现,则无法通过评测,**不记录成绩**。 从文件中加载数据,若不自行正确实现,则无法通过评测,**不记录成绩**。
@@ -89,7 +91,8 @@ def load_data(filepath):
- np.array: 特征数据。 - np.array: 特征数据。
- np.array: 标签数据。 - np.array: 标签数据。
""" """
data = np.loadtxt(filepath, delimiter=',', dtype=str) # 使用 np.genfromtxt 处理缺失值
data = np.genfromtxt(filepath, delimiter=',', dtype=str, filling_values='nan')
# 检查数据的维度 # 检查数据的维度
if data.ndim == 1: if data.ndim == 1:
@@ -97,12 +100,26 @@ def load_data(filepath):
data = np.expand_dims(data, axis=0) data = np.expand_dims(data, axis=0)
# 特征数据 # 特征数据
X = data[:, :-1].astype(float) # 所有列,除了最后一列 X = data[:, :-1] # 所有列,除了最后一列
# 标签数据 # 标签数据
y = data[:, -1] # 最后一列 y = data[:, -1] # 最后一列
# 将标签转换为 -1 和 1 # 将标签转换为 -1 和 1
y = np.where(y == '1', 1, -1) # 假设标签为 '1' 表示死亡,其他为存活 y = np.where(y == '1', 1, -1) # 假设标签为 '1' 表示死亡,其他为存活
# 处理特征数据中的缺失值
# 将 '?' 替换为 np.nan
X[X == '?'] = np.nan
# 将特征数据转换为浮点数
X = X.astype(float)
# 处理缺失值:可以选择填充或删除
# 这里选择用列的均值填充缺失值
col_mean = np.nanmean(X, axis=0) # 计算每列的均值
inds = np.where(np.isnan(X)) # 找到缺失值的索引
X[inds] = np.take(col_mean, inds[1]) # 用均值填充缺失值
return X, y return X, y