更新 function.py
Gitea Actions Experiment Test / Experiment-Actions (push) Successful in 1m29s

This commit is contained in:
2024-10-31 17:22:06 +08:00
parent d412078a41
commit 0a88f8792c
+15 -44
View File
@@ -1,4 +1,5 @@
import numpy as np
import pandas as pd
from sklearn.impute import SimpleImputer
from sklearn.feature_selection import SelectKBest, f_classif
@@ -6,52 +7,22 @@ from sklearn.feature_selection import SelectKBest, f_classif
id = "202210423213"
name = " 熊浩燃"
def load_data(filepath, k_features=20):
def load_data(filepath):
"""
从文件中加载数据并进行预处理,包括缺失值填充和特征选择。
Args:
- filepath (str): 数据文件路径。
- k_features (int): 选择的特征数量。
Returns:
- np.array: 特征数据。
- np.array: 标签数据。
从文件中加载数据,填充缺失值,并进行特征处理。
"""
data = []
labels = []
with open(filepath, 'r') as file:
for line in file:
line = line.strip().split()
if line:
features = []
for feature in line[:-1]: # 最后一个元素是标签
try:
features.append(float(feature))
except ValueError:
features.append(np.nan) # 用 NaN 表示缺失值
label = int(line[-1])
data.append(features)
labels.append(label)
# 转换为 numpy 数组
data = np.array(data)
labels = np.array(labels)
# 使用SimpleImputer填充NaN
imputer = SimpleImputer(strategy='mean')
data = imputer.fit_transform(data)
# 特征标准化,避免除零错误
mean = data.mean(axis=0)
std_dev = data.std(axis=0)
std_dev[std_dev == 0] = 1 # 如果标准差为0,将其设为1,避免除以零
data = (data - mean) / std_dev
# 特征选择
selector = SelectKBest(f_classif, k=k_features)
data = selector.fit_transform(data, labels)
# 使用pandas读取数据,处理缺失值
df = pd.read_csv(filepath, delim_whitespace=True, header=None)
# 将问号替换为NaN,并填充为0
df.replace('?', 0, inplace=True)
df = df.astype(float) # 转换为浮点数类型
# 将最后一列设置为标签
labels = df.iloc[:, -1].values.astype(int)
labels[(labels == 2) | (labels == 3)] = 0 # 合并死亡和安乐死为0
# data = df.drop(columns=[2] + list(range(23, 28))).values # 删除不相关特征
# 数据标准化
scaler = StandardScaler()
data = scaler.fit_transform(data)
return data, labels
def sigmoid(z):