diff --git a/function.py b/function.py index ef32e8e..cc12a94 100644 --- a/function.py +++ b/function.py @@ -72,33 +72,34 @@ def predict_logreg(inX, weights): # 这里也写自己的代码实现 def load_data(filepath): - """ - 从文件中加载数据,若不自行正确实现,则无法通过评测,**不记录成绩**。 - - Args: - - directory (str): 数据文件路径。 - - Returns: - - np.array: 特征数据。 - - np.array: 标签数据。 - """ data = [] labels = [] with open(filepath, 'r') as f: for line in f: - # 替换缺失值标识符,并将其分割为列表 - values = line.strip().replace('?', '0').split() # 这里将 ? 替换为 0 - # 转换为 float,注意这里需要处理转换异常 + values = line.strip().replace('?', '0').split() try: - values = [float(v) for v in values] # 转换为 float - data.append(values[:-1]) # 特征数据 - labels.append(values[-1]) # 标签数据 + values = [float(v) for v in values] + data.append(values[:-1]) + labels.append(values[-1]) except ValueError: - continue # 跳过无法转换的行 + continue return np.array(data), np.array(labels) +def preprocess_data(filepath): + # 加载数据 + X, y = load_data(filepath) + + # 特征缩放 + scaler = StandardScaler() + X_scaled = scaler.fit_transform(X) + + # 拆分数据集 + X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42) + + return X_train, X_test, y_train, y_test + if __name__ == "__main__": # 以下代码可用于测试,可自行随意修改 # 加载训练集