diff --git a/function.py b/function.py index 662bb49..f7fbb65 100644 --- a/function.py +++ b/function.py @@ -26,6 +26,8 @@ name = "赵昊龙" # 这里写自己的代码实现 +import numpy as np + def load_data(filepath): """ 从文件中加载数据。 @@ -37,36 +39,32 @@ def load_data(filepath): - np.array: 特征数据。 - np.array: 标签数据。 """ - file = open(filepath) - fr = file.readlines() - data_list = [] - y_list = [] - for data in fr: - data = data.strip() - data = data.split(' ') - data_25 = data[24] - y_list.append(data[22]) - del data[-1] - del data[26] - del data[25] - del data[24] - del data[22] - del data[2] - for i in data_25: - data.append(i) - data = [0 if data_elem == '?' else float(data_elem) for data_elem in data] - data_list.append(data) - - data_number = len(y_list) - y_train = np.array([1 if y[j] == '2' or y[j] == '3' else 0 for j in range(data_number)]) - X = np.array(data_list) - - # 特征缩放 - scaler = StandardScaler() - X = scaler.fit_transform(X) - X = np.insert(X, 0, 1, axis=1) # 添加偏置项 - - return X, y_train + with open(filepath, 'r') as file: + data_list = [] + y_list = [] # 确保y_list在这里被初始化 + for line in file: + data = line.strip() + data = data.split(' ') + if '?' in data: + continue # 跳过包含 '?' 的行 + data_25 = data[24] + y = data[22] # 确保y在这里被定义 + y_list.append(y) + del data[-1] + del data[26] + del data[25] + del data[24] + del data[22] + del data[2] + for i in data_25: + data.append(i) + data = [0.0 if data_elem == '?' else float(data_elem) for data_elem in data] + data_list.append(data) + # 将标签转换为1如果它们是'2'或'3',否则为0 + y_array = np.array([1 if label == '2' or label == '3' else 0 for label in y_list]) + X_array = np.array(data_list) + X_array = np.insert(X_array, 0, 1, axis=1) # 添加偏置项 + return X_array, y_array def train_logreg(X, y, numIter=1000, learning_rate=0.01, batch_size=128, lambda_reg=0.01): """