这是接着上一篇 ex_acm3025 主程序之后的评测代码
来吧,看一看👦
在看 KNN 和 Kmeans 之前,看一下传进来的数据是什么
xx = np.expand_dims(jhy_final_embedding, axis=0)[test_mask]
yy = y_test[test_mask]
xx 是最后输出的向量升维,选择测试集的样本 y
my_KNN
把 x 中维度是 1 的都去掉1
x = np.squeeze(x)
获取每行最大值的索引2
if len(y.shape) > 1:
y = np.argmax(y, axis=1)
按照 [0.2, 0.4, 0.6, 0.8] 划分训练集和测试集
每个比例下进行 10 轮的训练预测
每一轮都要打乱数据
一个 5 邻居的 KNN 训练预测
得到 macro f1 和 microf1
输出每个划分下 10 轮的 macro f1 和 micro f1 的均值
my_Kmeans
和上面一样,x 去除维度为 1 的,y 取每行值最大的索引
做一个 4 聚类器的 Kmeans
进行 10 轮的聚类训练预测
通过 sklean 的 normalized_mutual_info_score、adjusted_rand_score3 获得 NMI、ARI
score = normalized_mutual_info_score(y, y_pred)
NMI_list.append(score)
s2 = adjusted_rand_score(y, y_pred)
ARI_list.append(s2)
输出 10 轮的 NMI 和 ARI 均值