diff --git a/function.py b/function.py index 78f51fd..54129ea 100644 --- a/function.py +++ b/function.py @@ -55,10 +55,21 @@ def predict_logreg(inX, weights): return 0 # 这里也写自己的代码实现 def load_data(filepath): - data = np.loadtxt(filepath, delimiter=' ') + data = np.loadtxt(filepath, delimiter=',') + # 将 '?' 替换为 np.nan,表示缺失值 + data = np.where(data == '?', np.nan, data) + # 将非数值列转换为数值,这里假设非数值列是分类数据,可以使用 label encoding 或 one-hot encoding + # 这里我们使用 label encoding 作为示例 + for i in range(data.shape[1]): + if data[:, i].dtype == np.object: # 如果是对象类型(字符串),则进行编码 + data[:, i] = np.nan # 先将 '?' 替换为 np.nan + data[:, i] = pd.Categorical(data[:, i]).codes # 将分类数据转换为数值 + # 将缺失值填充为 0 或者其他合适的值 + data = np.nan_to_num(data, nan=0.0) X = data[:, :-1] y = data[:, -1] - return X, y + return X, y.astype(int) # 确保标签是整数类型 + if __name__ == "__main__": # 以下代码可用于测试,可自行随意修改