更新 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 numpy as np
import pandas as pd
from sklearn.impute import SimpleImputer from sklearn.impute import SimpleImputer
from sklearn.feature_selection import SelectKBest, f_classif from sklearn.feature_selection import SelectKBest, f_classif
@@ -6,52 +7,22 @@ from sklearn.feature_selection import SelectKBest, f_classif
id = "202210423213" id = "202210423213"
name = " 熊浩燃" name = " 熊浩燃"
def load_data(filepath, k_features=20): def load_data(filepath):
""" """
从文件中加载数据并进行预处理,包括缺失值填充和特征选择。 从文件中加载数据,填充缺失值,并进行特征处理。
Args:
- filepath (str): 数据文件路径。
- k_features (int): 选择的特征数量。
Returns:
- np.array: 特征数据。
- np.array: 标签数据。
""" """
data = [] # 使用pandas读取数据,处理缺失值
labels = [] df = pd.read_csv(filepath, delim_whitespace=True, header=None)
with open(filepath, 'r') as file: # 将问号替换为NaN,并填充为0
for line in file: df.replace('?', 0, inplace=True)
line = line.strip().split() df = df.astype(float) # 转换为浮点数类型
if line: # 将最后一列设置为标签
features = [] labels = df.iloc[:, -1].values.astype(int)
for feature in line[:-1]: # 最后一个元素是标签 labels[(labels == 2) | (labels == 3)] = 0 # 合并死亡和安乐死为0
try: # data = df.drop(columns=[2] + list(range(23, 28))).values # 删除不相关特征
features.append(float(feature)) # 数据标准化
except ValueError: scaler = StandardScaler()
features.append(np.nan) # 用 NaN 表示缺失值 data = scaler.fit_transform(data)
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)
return data, labels return data, labels
def sigmoid(z): def sigmoid(z):