generated from LufsX/Challenge-SVM
This commit is contained in:
+12
-45
@@ -79,52 +79,19 @@ def predict_svm(inX, weights, bias):
|
|||||||
|
|
||||||
# 这里也写自己的代码实现
|
# 这里也写自己的代码实现
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
def load_data(filepath):
|
def load_data(data):
|
||||||
"""
|
# 将数据转换为 DataFrame
|
||||||
从文件中加载数据,若不自行正确实现,则无法通过评测,**不记录成绩**。
|
df = pd.DataFrame(data)
|
||||||
|
|
||||||
Args:
|
# 清洗数据,替换 '?' 为 NaN
|
||||||
- filepath (str): 数据文件路径。
|
df.replace('?', np.nan, inplace=True)
|
||||||
|
|
||||||
Returns:
|
# 尝试将数据转换为浮点数
|
||||||
- np.array: 特征数据。
|
df = df.apply(pd.to_numeric, errors='coerce')
|
||||||
- np.array: 标签数据。
|
|
||||||
"""
|
return df
|
||||||
# 使用 np.genfromtxt 处理缺失值
|
|
||||||
data = np.genfromtxt(filepath, delimiter=',', dtype=str, filling_values='nan')
|
|
||||||
|
|
||||||
# 检查数据的维度
|
|
||||||
if data.ndim == 1:
|
|
||||||
# 如果数据是一维的,可能是因为文件只有一行
|
|
||||||
data = np.expand_dims(data, axis=0)
|
|
||||||
|
|
||||||
# 特征数据
|
|
||||||
X = data[:, :-1] # 所有列,除了最后一列
|
|
||||||
# 标签数据
|
|
||||||
y = data[:, -1] # 最后一列
|
|
||||||
|
|
||||||
# 将标签转换为 -1 和 1
|
|
||||||
y = np.where(y == '1', 1, -1) # 假设标签为 '1' 表示死亡,其他为存活
|
|
||||||
|
|
||||||
# 处理特征数据中的缺失值
|
|
||||||
# 将 '?' 替换为 np.nan
|
|
||||||
X[X == '?'] = np.nan
|
|
||||||
|
|
||||||
# 将特征数据转换为浮点数
|
|
||||||
try:
|
|
||||||
X = X.astype(float)
|
|
||||||
except ValueError as e:
|
|
||||||
print(f"转换特征数据时出错: {e}")
|
|
||||||
print("特征数据内容:", X)
|
|
||||||
|
|
||||||
# 处理缺失值:可以选择填充或删除
|
|
||||||
# 这里选择用列的均值填充缺失值
|
|
||||||
col_mean = np.nanmean(X.astype(float), axis=0) # 计算每列的均值
|
|
||||||
inds = np.where(np.isnan(X)) # 找到缺失值的索引
|
|
||||||
X[inds] = np.take(col_mean, inds[1]) # 用均值填充缺失值
|
|
||||||
|
|
||||||
return X, y
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
Reference in New Issue
Block a user