如何解决python中的KNN和交叉验证实现
我正在努力尝试实施 K-NN 方法 交叉验证。
我必须找到 k 的最优值,代表最优超参数 邻居。数据集由 10 折(训练数据)组成,每个 尺寸为 [99x64]; 10 个训练标签 大小(99x1),及其对应的测试数据 (110x1) 和 (110x64)。
计算欧几里得距离后应该遵循哪些步骤?
出于测试目的,我只设置了 3 折,这给了我 6 个距离向量。 这是我的代码:
# Assigning the parameters
K = 1 # Total Neighbours
folds = 10 # Total Folds
lambda_param = 0.1
dataf = [f for f in train_data if isfile(join(root_dir,f))]
datal = [f for f in train_label if isfile(join(root_dir,f))]
def F_train_sets(F,data):
return [pd.DataFrame.to_numpy(pd.read_csv(join(root_dir,f))) for f in data[:F] ]
total_trainf = F_train_sets(folds,dataf) #Total train set for X [99x64x10]
total_trainl = F_train_sets(folds,datal) #Total label set for Y [99x1]
def train_fn(k,fold,data,labels):
train_data = data
validation_dataset = data[fold-1]
training_set = []
accum = None
i = 0
while i < len(data):
if(i== fold):
pass
else:
training_set.append(data[i])
i+=1
for ts in training_set:
dist = (validation_dataset - ts)**2
dist = np.sum(dist,axis=1)
dist = np.sqrt(dist)
i=0
while i < K:
f=1
while f <= folds:
train_fn(i,f,total_trainf,total_trainl[0])
f+=1
i+=1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。