diff --git a/function.py b/function.py index c9ddba0..521ef93 100644 --- a/function.py +++ b/function.py @@ -79,52 +79,19 @@ def predict_svm(inX, weights, bias): # 这里也写自己的代码实现 import numpy as np +import pandas as pd -def load_data(filepath): - """ - 从文件中加载数据,若不自行正确实现,则无法通过评测,**不记录成绩**。 - - Args: - - filepath (str): 数据文件路径。 - - Returns: - - np.array: 特征数据。 - - np.array: 标签数据。 - """ - # 使用 np.genfromtxt 处理缺失值 - data = np.genfromtxt(filepath, delimiter=',', dtype=str, filling_values='nan') - - # 检查数据的维度 - if data.ndim == 1: - # 如果数据是一维的,可能是因为文件只有一行 - data = np.expand_dims(data, axis=0) - - # 特征数据 - X = data[:, :-1] # 所有列,除了最后一列 - # 标签数据 - y = data[:, -1] # 最后一列 - - # 将标签转换为 -1 和 1 - y = np.where(y == '1', 1, -1) # 假设标签为 '1' 表示死亡,其他为存活 - - # 处理特征数据中的缺失值 - # 将 '?' 替换为 np.nan - X[X == '?'] = np.nan - - # 将特征数据转换为浮点数 - try: - X = X.astype(float) - except ValueError as e: - print(f"转换特征数据时出错: {e}") - print("特征数据内容:", X) - - # 处理缺失值:可以选择填充或删除 - # 这里选择用列的均值填充缺失值 - col_mean = np.nanmean(X.astype(float), axis=0) # 计算每列的均值 - inds = np.where(np.isnan(X)) # 找到缺失值的索引 - X[inds] = np.take(col_mean, inds[1]) # 用均值填充缺失值 - - return X, y +def load_data(data): + # 将数据转换为 DataFrame + df = pd.DataFrame(data) + + # 清洗数据,替换 '?' 为 NaN + df.replace('?', np.nan, inplace=True) + + # 尝试将数据转换为浮点数 + df = df.apply(pd.to_numeric, errors='coerce') + + return df if __name__ == "__main__":