generated from LufsX/Challenge-SVM
This commit is contained in:
+9
-10
@@ -86,17 +86,16 @@ def load_data(filepath):
|
||||
df = pd.read_csv(filepath, sep=' ', header=None, na_values='?') # 将 '?' 视为缺失值
|
||||
# 填充缺失值,这里简单用0填充,也可以根据特征的分布等采用更合理的填充方式,比如均值填充等
|
||||
df.fillna(0, inplace=True)
|
||||
# 获取特征数据和标签数据,确保标签符合三分类要求
|
||||
|
||||
# 先检查标签列是否存在除1、2、3之外的其他值,整体进行判断
|
||||
unique_labels = df.iloc[:, -1].unique()
|
||||
if not all(label in [1, 2, 3] for label in unique_labels):
|
||||
raise ValueError("数据标签列存在不符合1、2、3三分类要求的值,请检查数据文件")
|
||||
|
||||
# 获取特征数据和标签数据
|
||||
data = df.iloc[:, :-1].values
|
||||
labels = df.iloc[:, -1].values
|
||||
# 对标签数据进行合法性检查,确保是三分类要求的1、2、3
|
||||
valid_labels = []
|
||||
for l in labels:
|
||||
if l in [1, 2, 3]:
|
||||
valid_labels.append(int(l))
|
||||
else:
|
||||
raise ValueError(f"非法标签值 {l},数据标签应是1、2、3三分类情况")
|
||||
labels = np.array(valid_labels)
|
||||
labels = df.iloc[:, -1].values.astype(int)
|
||||
|
||||
# 选择特征23(从1开始由左向右数)作为目标变量
|
||||
data = data[:, 22].reshape(-1, 1)
|
||||
return data, labels
|
||||
|
||||
Reference in New Issue
Block a user