From 4519443c46dbe695b18394e4e149050968e1f28f Mon Sep 17 00:00:00 2001 From: luderby <2339127037@qq.com> Date: Tue, 5 Nov 2024 11:24:58 +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 | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/function.py b/function.py index be15b75..4705eee 100644 --- a/function.py +++ b/function.py @@ -1,5 +1,6 @@ # function.py import numpy as np +import csv """ 实验说明: @@ -82,29 +83,34 @@ def load_data(filepath): - np.array: 特征数据。 - np.array: 标签数据。 """ - # 加载数据,使用适当的分隔符和设置 - data = np.genfromtxt(filepath, delimiter=',', dtype=None, encoding=None, invalid_raise=False, filling_values=np.nan, autostrip=True) + features = [] + labels = [] + + with open(filepath, 'r') as f: + reader = csv.reader(f) + for row in reader: + # 检查每一行是否包含预期数量的列,这里假设每行需要至少一个特征和一个标签 + if len(row) > 1: + features.append([float(x) for x in row[:-1]]) # 将特征转换为浮点数 + labels.append(row[-1]) # 取最后一列作为标签 - print("Loaded data shape:", data.shape) # 打印数据的形状 + # 转换成NumPy数组 + X = np.array(features) + y = np.array(labels) - # 检查是否成功加载了二维数据 - if data.ndim == 1: - raise ValueError("Loaded data is one-dimensional, please check the file format.") + # 确保 y 只包含 0 和 1 + y = np.where(y == '1', 1, 0) - X = data[:, :-1].astype(float) # 假设最后一列为标签 - y = data[:, -1] # 最后一列为标签 - - # 检查有效索引 - valid_indices = ~np.isnan(X).any(axis=1) & ~np.isnan(y) + # 过滤掉包含 NaN 的行 + valid_indices = ~np.isnan(X).any(axis=1) & ~np.isnan(y.astype(float)) X = X[valid_indices] y = y[valid_indices] - y = np.where(y == 1, 1, 0) - return X, y + return X, y if __name__ == "__main__": # 以下代码可用于测试,可自行随意修改 # 加载训练集 X_train, y_train = load_data("./data/horse-colic.data") - \ No newline at end of file + print(f"预测结果: {y_pred[sample_index]}, 实际结果: {y_test[sample_index]}") \ No newline at end of file