diff --git a/function.py b/function.py index dad4e09..6ebd621 100644 --- a/function.py +++ b/function.py @@ -25,7 +25,6 @@ id = "202210423222" name = "邓龙树" import numpy as np -import pandas as pd def sigmoid(z): """计算sigmoid函数""" @@ -79,15 +78,15 @@ def load_data(filepath): - np.array: 特征数据。 - np.array: 标签数据。 """ - # 使用pandas读取数据,处理不规则行 - data = pd.read_csv(filepath, delim_whitespace=True, header=None, na_values='?') + # 使用dtype=str先将所有数据加载为字符串 + data = np.loadtxt(filepath, delimiter=' ', dtype=str) - # 替换缺失值为列的均值 - data.fillna(data.mean(), inplace=True) + # 替换'?'为np.nan,并转换为浮点数 + data[data == '?'] = np.nan + data = data.astype(float) - # 将数据转换为numpy数组 - X = data.iloc[:, :-1].values # 特征数据 - y = data.iloc[:, -1].values # 标签数据 + X = data[:, :-1] # 假设最后一列是标签 + y = data[:, -1] return X, y if __name__ == "__main__": @@ -97,6 +96,10 @@ if __name__ == "__main__": # 加载测试集 X_test, y_test = load_data("./data/horse-colic.test") + # 处理缺失值,例如用列的均值替代 + X_train = np.nan_to_num(X_train, nan=np.nanmean(X_train, axis=0)) + X_test = np.nan_to_num(X_test, nan=np.nanmean(X_train, axis=0)) # 用训练集的均值替代测试集 + # 确保标签为浮点型 y_train = y_train.astype(float) y_test = y_test.astype(float)