generated from LufsX/Experiment-LogReg
This commit is contained in:
+20
-9
@@ -94,18 +94,29 @@ def load_data(filepath):
|
||||
- np.array: 特征数据。
|
||||
- np.array: 标签数据。
|
||||
"""
|
||||
# 使用pandas加载数据,这样可以更方便地处理缺失值
|
||||
import pandas as pd
|
||||
# 使用 numpy 加载数据
|
||||
data = []
|
||||
|
||||
# 加载数据,假设数据是空格或制表符分隔的,非法字符 '?' 会被替换为 NaN
|
||||
df = pd.read_csv(filepath, sep=' ', header=None, na_values='?')
|
||||
# 打开文件并读取每一行
|
||||
with open(filepath, 'r') as file:
|
||||
for line in file:
|
||||
# 分割每一行数据,并替换 '?' 为 np.nan
|
||||
values = line.strip().split() # 默认按空格或制表符分割
|
||||
values = [float(v) if v != '?' else np.nan for v in values]
|
||||
data.append(values)
|
||||
|
||||
# 将 NaN 填充为该列的均值
|
||||
df.fillna(df.mean(), inplace=True)
|
||||
# 转换为 numpy 数组
|
||||
data = np.array(data)
|
||||
|
||||
# 将最后一列作为标签y,其他列作为特征X
|
||||
X = df.iloc[:, :-1].values # 特征数据
|
||||
y = df.iloc[:, -1].values # 标签数据
|
||||
# 处理缺失值,这里使用列均值填充
|
||||
nan_mask = np.isnan(data)
|
||||
for i in range(data.shape[1]):
|
||||
column_mean = np.nanmean(data[:, i]) # 获取该列的均值(忽略 NaN)
|
||||
data[nan_mask[:, i], i] = column_mean # 用均值填充 NaN
|
||||
|
||||
# 将最后一列作为标签 y,其余列作为特征 X
|
||||
X = data[:, :-1] # 特征数据
|
||||
y = data[:, -1] # 标签数据
|
||||
|
||||
return X, y
|
||||
|
||||
|
||||
Reference in New Issue
Block a user