如何手工计算knn的准确率?

How to calculate the accuracy by hand for knn?

我目前正在学习一些机器学习,我知道如何计算不同数据点之间的欧氏距离;但是,我想知道是否有人知道如何手动计算准确度,以便查看哪个 k 值作为“k”的选择是最好的?

我知道如何实施基本的 python 类 来为我计算准确度,但我也想学习如何手动计算。我试着用谷歌搜索它,但它们都只显示 python 实现。

例如,假设您只有 8 个数据点,4 个红色和 4 个橙色;例如,我选择 k = 3 并得到 2 个红色和 1 个橙色(因此新数据点被归类为红色)。现在我要计算这个K值的准确度?

准确度是:

Accuracy = (TP + TN)/(TP + TN + FP + FN)

根据this wikipedia article二进制class化,你的问题是什么。您可以将“红色”定义为正数,或将“橙色”定义为正数。但这在这里并不重要。假设我们将“红色”定义为正 class.

那么在上面公式的上下文中:

  • TN:表示真阴性(被class化为橙色并且实际上是橙色的点)
  • TP:表示真阳性(被class化为红色并且确实是红色的点)
  • FN:表示漏报(class化为橙色,但实际上是红色的点)
  • FP:表示误报(被class化为红色,但实际上是橙色的点)

所以你甚至可以使公式更简单,因为 TN+TP+FN+FP 是总点数, TP+TN 是正确 class 化的点数(KNN 预测正确).