我已经在 KNN 分类算法上训练了我的模型,并且我的准确率达到了 97% 左右。然而,我后来注意到我错过了对数据进行标准化的机会,我对数据进行了标准化并重新训练了我的模型,现在我的准确率只有 87%。可能是什么原因?我应该坚持使用未规范化的数据还是应该切换到规范化版本。

最佳答案

要回答您的问题,您首先需要了解 KNN 的工作原理。这是一个简单的图表:

python - KNN 中归一化的精度差异-LMLPHP

假设 ?是您尝试将其分类为红色或蓝色的点。对于这种情况,假设您尚未对任何数据进行标准化。如您所见,?比蓝色机器人更接近红点。因此,该点将被假定为红色。我们还假设正确的标签是红色的,因此这是一个正确的匹配!

现在,讨论规范化。归一化是一种获取略有不同的数据但赋予其共同状态的方法(在您的情况下,将其视为使特征更相似)。假设在上面的例子中,你归一化了 ? 的特征,因此输出 y 值变小了。这会将问号置于其当前位置下方并被更多蓝点包围。因此,您的算法会将其标记为蓝色,这是不正确的。哎哟!

现在回答你的问题。对不起,但没有答案!有时标准化数据会消除重要的特征差异,从而导致准确性下降。其他时候,它有助于消除特征中导致错误分类的噪声。此外,仅仅因为您当前使用的数据集的准确性提高,并不意味着您将使用不同的数据集获得相同的结果。

长话短说,与其试图将归一化标记为好/坏,不如考虑您用于分类的特征输入,确定哪些特征对您的模型很重要,并确保这些特征的差异在您的分类模型中准确反射(reflect)。祝你好运!

关于python - KNN 中归一化的精度差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42092448/

10-12 23:06