Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何手工计算knn的精度?_Python_Machine Learning_Knn - Fatal编程技术网

Python 如何手工计算knn的精度?

Python 如何手工计算knn的精度?,python,machine-learning,knn,Python,Machine Learning,Knn,我目前正在学习一些机器学习,我知道如何计算不同数据点之间的欧几里德距离;然而,我想知道是否有人知道如何手工计算准确度,以确定哪一个k值作为“k”的选择是最好的 我知道如何实现基本的python类来计算精度,但我也想学习如何手工实现。我试着用谷歌搜索它,但它们都只是显示python实现 例如,假设您只有8个数据点,4个红色和4个橙色;例如,我选择k=3,得到2个红色和1个橙色(因此新数据点被分类为红色)。现在我想计算这个K值的准确度?准确度是: 精度=(TP+TN)/(TP+TN+FP+FN) 根

我目前正在学习一些机器学习,我知道如何计算不同数据点之间的欧几里德距离;然而,我想知道是否有人知道如何手工计算准确度,以确定哪一个k值作为“k”的选择是最好的

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

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

准确度是:

精度=(TP+TN)/(TP+TN+FP+FN)

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

然后根据上述公式:

  • TN:表示真负片(分为橙色和真橙色的点)
  • TP:表示真阳性(分为红色和真红色的点)
  • FN:表示假阴性(分为橙色,但实际上是红色)
  • FP:表示假阳性(分为红色,但实际上是橙色)
因此,您甚至可以简化公式,因为
TN+TP+FN+FP
是总点数,
TP+TN
是正确分类的点数(KNN正确预测)。

准确度为:

精度=(TP+TN)/(TP+TN+FP+FN)

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

然后根据上述公式:

  • TN:表示真负片(分为橙色和真橙色的点)
  • TP:表示真阳性(分为红色和真红色的点)
  • FN:表示假阴性(分为橙色,但实际上是红色)
  • FP:表示假阳性(分为红色,但实际上是橙色)

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

因此,如果我的案例为K=3,则意味着我总共有3个值(不包括新添加的被分类为“红色”的数据点),而2个值为正,1个值为负。我取总点数(我假设是3分),然后。。。我迷失了方向:例如,P不知道如何从我的例子中知道“正确分类的点数”?不,k的选择没有直接影响。它只会影响预测。仅通过将预测值与真实值进行比较来计算精度。您需要“标记”数据来计算它。在您的示例中,您将计算一组点(验证集)中与每个点最近的3个点,并为每个点预测市长投票。然后你正确地计算出预测数/总数。你需要准确度来测试你的模型的质量。通过选择一个不在训练集中的点,然后搜索它的三个最近邻点,通过市长投票决定它应该在哪一类,然后将该点计算为正确分类(TP或TN)/错误分类(FN或FP),并对测试集中的所有点执行此操作,然后计算(正确分类的num)/训练集中的点数。是的,该点数为黑色。这就是你的模型所预测的。但是要测试你的模型,你需要让它预测一个点,你知道实际的“颜色”是什么,只有这样你才能决定它是否被正确分类——没有标签,你无法分辨它是TP、TN、FP还是FN,因此也不能检查你的模型是否能很好地预测你的数据。啊,我明白了!非常感谢。因此,如果我的情况是K=3,这意味着我总共有3个值(不包括被分类为“红色”的新添加的数据点),而2个值为正,1个值为负。我取总点数(我假设是3分),然后。。。我迷失了方向:例如,P不知道如何从我的例子中知道“正确分类的点数”?不,k的选择没有直接影响。它只会影响预测。仅通过将预测值与真实值进行比较来计算精度。您需要“标记”数据来计算它。在您的示例中,您将计算一组点(验证集)中与每个点最近的3个点,并为每个点预测市长投票。然后你正确地计算出预测数/总数。你需要准确度来测试你的模型的质量。通过选择一个不在训练集中的点,然后搜索它的三个最近邻点,通过市长投票决定它应该在哪一类,然后将该点计算为正确分类(TP或TN)/错误分类(FN或FP),并对测试集中的所有点执行此操作,然后计算(正确分类的num)/训练集中的点数。是的,该点数为黑色。这就是你的模型所预测的。但是要测试你的模型,你需要让它预测一个点,你知道实际的“颜色”是什么,只有这样你才能决定它是否被正确分类——没有标签,你无法分辨它是TP、TN、FP还是FN,因此也不能检查你的模型是否能很好地预测你的数据。啊,我明白了!非常感谢。