【问题标题】:How to calculate the accuracy by hand for knn?如何手动计算knn的精度?
【发布时间】:2020-12-02 12:12:19
【问题描述】:

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

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

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

【问题讨论】:

    标签: python machine-learning knn


    【解决方案1】:

    准确度是:

    准确度 = (TP + TN)/(TP + TN + FP + FN)

    根据二进制分类中的this wikipedia article,您的问题是。您可以将“红色”定义为正面,或将“橙色”定义为正面。但这并不重要。假设我们将“红色”定义为正类。

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

    • TN:表示真正的否定(被归类为橙色且真正为橙色的点)
    • TP:表示真阳性(被分类为红色且真正为红色的点)
    • FN:表示假阴性(被归类为橙色但实际上是红色的点)
    • FP:表示误报(被归类为红色但实际上是橙色的点)

    因此您甚至可以使公式更简单,因为TN+TP+FN+FP 是总点数,TP+TN 是正确分类点的数量(KNN 预测正确)。

    【讨论】:

    • 因此,如果我的情况是 K=3,这意味着我总共有 3 个值(不包括新添加的被归类为“红色”的数据点),而 2 个值为正,1 个值为消极的。我计算了总点数(我假设是 3?)然后......我迷路了:P 不知道如何从我的例子中知道“正确分类的点数”?
    • 不,k的选择没有直接影响。它只影响预测。仅通过将预测值与真实值进行比较来计算准确性。您需要“标记”数据来计算它。在您的示例中,您将计算最接近一组点(验证集)中每个点的 3 个点,并为每个点预测市长投票。然后你计算 number_correctly_predicted/number_total。
    • 您需要准确度来测试模型的质量。你通过选择一个不在训练集中的点来做到这一点,然后你搜索它的三个最近的邻居,通过市长投票决定它应该在哪个类,然后将此点计算为正确(TP 或 TN)/错误分类( FN 或 FP)并对测试集中的所有点执行此操作,然后计算(正确分类的数量)/训练集中的点数。
    • 是的,那个点应该是黑色的。这就是您的模型所预测的。但是要测试你的模型,你需要让它预测一个你知道实际“颜色”是什么的点,然后你才能确定它是否被正确分类——没有标签,你无法判断它是否是 TP, TN、FP 或 FN 等也不检查您的模型是否能很好地预测您的数据。
    • 啊,我明白了!谢谢!
    猜你喜欢
    • 2018-05-14
    • 2020-11-08
    • 1970-01-01
    • 2012-09-14
    • 2020-01-08
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多