From 5f721fd1e6fc2502246f8ccc02a95c24d4ee3af3 Mon Sep 17 00:00:00 2001 From: ywq157 <271203576@qq.com> Date: Thu, 7 Nov 2024 16:49:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20function.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- function.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/function.py b/function.py index 2fdc626..8807989 100644 --- a/function.py +++ b/function.py @@ -82,9 +82,10 @@ def predict_logreg(inX, weights, bias): # 这里也写自己的代码实现 + def load_data(filepath): """ - 从文件中加载数据。 + 从文件中加载数据,处理非法字符(如 '?')并填充缺失值。 Args: - filepath (str): 数据文件路径。 @@ -93,13 +94,22 @@ def load_data(filepath): - np.array: 特征数据。 - np.array: 标签数据。 """ - data = np.loadtxt(filepath, delimiter=' ') - X = data[:, :-1] # 所有列,除了最后一列 - y = data[:, -1] # 只取最后一列作为标签 + # 使用pandas加载数据,这样可以更方便地处理缺失值 + import pandas as pd + + # 加载数据,假设数据是空格或制表符分隔的,非法字符 '?' 会被替换为 NaN + df = pd.read_csv(filepath, sep=' ', header=None, na_values='?') + + # 将 NaN 填充为该列的均值 + df.fillna(df.mean(), inplace=True) + + # 将最后一列作为标签y,其他列作为特征X + X = df.iloc[:, :-1].values # 特征数据 + y = df.iloc[:, -1].values # 标签数据 + return X, y - if __name__ == "__main__": # 以下代码可用于测试,可自行随意修改 # 加载训练集