diff --git a/function.py b/function.py index 8807989..579813c 100644 --- a/function.py +++ b/function.py @@ -94,18 +94,29 @@ def load_data(filepath): - np.array: 特征数据。 - np.array: 标签数据。 """ - # 使用pandas加载数据,这样可以更方便地处理缺失值 - import pandas as pd + # 使用 numpy 加载数据 + data = [] - # 加载数据,假设数据是空格或制表符分隔的,非法字符 '?' 会被替换为 NaN - df = pd.read_csv(filepath, sep=' ', header=None, na_values='?') + # 打开文件并读取每一行 + with open(filepath, 'r') as file: + for line in file: + # 分割每一行数据,并替换 '?' 为 np.nan + values = line.strip().split() # 默认按空格或制表符分割 + values = [float(v) if v != '?' else np.nan for v in values] + data.append(values) - # 将 NaN 填充为该列的均值 - df.fillna(df.mean(), inplace=True) + # 转换为 numpy 数组 + data = np.array(data) - # 将最后一列作为标签y,其他列作为特征X - X = df.iloc[:, :-1].values # 特征数据 - y = df.iloc[:, -1].values # 标签数据 + # 处理缺失值,这里使用列均值填充 + nan_mask = np.isnan(data) + for i in range(data.shape[1]): + column_mean = np.nanmean(data[:, i]) # 获取该列的均值(忽略 NaN) + data[nan_mask[:, i], i] = column_mean # 用均值填充 NaN + + # 将最后一列作为标签 y,其余列作为特征 X + X = data[:, :-1] # 特征数据 + y = data[:, -1] # 标签数据 return X, y