diff --git a/function.py b/function.py index d588228..1fb3293 100644 --- a/function.py +++ b/function.py @@ -31,22 +31,36 @@ name = "董秋" def load_data(filepath): data = [] labels = [] + with open(filepath, 'r') as file: for line in file: fields = line.strip().split() - fields = [0 if f == '?' else float(f) for f in fields] # 缺失值填充 + + # 处理缺失值,用0填充 + fields = [0 if f == '?' else float(f) for f in fields] + + # 特征是除最后一列外的所有列 features = np.array(fields[:-1], dtype=float) + + # 标签是最后一列 label = int(fields[-1]) + + # 添加数据和标签 data.append(features) labels.append(label) - labels = np.array(labels) - - # 检查标签是否为三类 - unique_labels = np.unique(labels) - if len(unique_labels) != 3: - raise ValueError("标签数量不为3,请确保标签未合并!") - return np.array(data), labels + # 转换为numpy数组 + labels = np.array(labels) + data = np.array(data) + + # 检查标签的唯一值,确保只有 0, 1, 2 + unique_labels = np.unique(labels) + + if len(unique_labels) != 3: + print(f"错误:标签数据包含的类别不是3个,实际类别为:{unique_labels}") + raise ValueError("标签数量不为3,请确保标签未合并!") + + return data, labels def train_svm(X, y, learning_rate=0.01, iterations=1000, regularization_strength=0.01): n_samples, n_features = X.shape