From 63ee03fe2216d10bb4d034fc06e7ad820a68048a Mon Sep 17 00:00:00 2001 From: Dengddd <3149942468@qq.com> Date: Thu, 31 Oct 2024 14:38:46 +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, 17 insertions(+), 3 deletions(-) diff --git a/function.py b/function.py index 836b618..cced63e 100644 --- a/function.py +++ b/function.py @@ -63,14 +63,28 @@ def load_data(filepath): max_columns = max(max_columns, len(parts)) data.append(parts) - # 填充缺失的列 + # 填充缺失的列 for i in range(len(data)): if len(data[i]) < max_columns: data[i].extend(['nan'] * (max_columns - len(data[i]))) # 转换成numpy数组,处理缺失值 - data_array = np.array(data, dtype=float) - data_array[np.isnan(data_array)] = np.nanmean(data_array, axis=0) + data_array = [] + for row in data: + cleaned_row = [] + for value in row: + if value == '?': # 替换无法转换的值 + cleaned_row.append(np.nan) + else: + cleaned_row.append(float(value)) # 转换为float + data_array.append(cleaned_row) + + data_array = np.array(data_array) + + # 处理缺失值 + col_mean = np.nanmean(data_array, axis=0) + for i in range(data_array.shape[1]): + data_array[np.isnan(data_array[:, i]), i] = col_mean[i] return data_array[:, :-1], data_array[:, -1]