为什么我从 knn() 中的概率得到 "weird" 比例?
Why am I getting "weird" proportions from prob in knn()?
我正在尝试从鸢尾花数据集中预测物种 (3 类):
> head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
我已经创建了数值向量 tr 和 nw,我用它们对 iris 进行子集化,这样我就可以获得训练数据和新数据:
>knn5 <- knn(iris[tr, -5], iris[nw, -5], iris$Species[nw], k = 5, prob = TRUE)
>knn5
[1] versicolor virginica virginica versicolor virginica setosa setosa setosa setosa setosa setosa setosa setosa versicolor virginica
[16] setosa setosa setosa virginica setosa setosa virginica versicolor virginica virginica versicolor setosa versicolor versicolor setosa
[31] versicolor setosa virginica setosa versicolor versicolor versicolor setosa versicolor versicolor virginica virginica virginica setosa versicolor
[46] setosa versicolor versicolor setosa versicolor
attr(,"prob")
[1] 0.4000000 0.4000000 0.4000000 0.6000000 0.4000000 0.6000000 0.6000000 0.4000000 0.3333333 0.6000000 0.6000000 0.5000000 0.6000000 0.6000000 0.6000000 0.5000000
[17] 0.4000000 0.6000000 0.4000000 0.6000000 0.6000000 0.6000000 0.6000000 0.6000000 0.6000000 0.8000000 0.4000000 0.6000000 0.6000000 0.6000000 0.4000000 0.6000000
[33] 0.4000000 0.6000000 0.8000000 0.6000000 0.6000000 0.6000000 0.6000000 0.6000000 0.6000000 0.6000000 0.6000000 0.5000000 0.6000000 0.3333333 0.4000000 0.6000000
[49] 0.6000000 0.6000000
Levels: setosa versicolor virginica
我知道预测很糟糕,因为在 knn 中我为标签输入了错误的向量;我的问题不是那个。
我的问题是,为什么我得到 0.3333333 作为概率值?由于我们正在查看 5 个邻居,因此我希望我们只能获得 n/5.
形式的值
我最初的猜测是这些地方有平局;然而,我随后意识到 0.4000000 的值是必须存在关系的地方(因为我们只有 3 类,所以其他人必须投票给 0.4 和 0.2)。所以我不再确定我的猜测了。
我假设您使用的是 class
包中的 knn
。请注意,它有一个参数 use.all
在文档中描述如下:
use.all
controls handling of ties. If true, all distances equal to
the kth largest are included. If false, a random selection of
distances equal to the kth is chosen to use exactly k neighbours.
虹膜数据包含一对完全重复的点
iris[c(102,143),]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
102 5.8 2.7 5.1 1.9 virginica
143 5.8 2.7 5.1 1.9 virginica
因此,如果这些点之一是第 5 个最近的邻居,则它们都是,并且将考虑 6 个点 - 而不仅仅是 5 个。
我正在尝试从鸢尾花数据集中预测物种 (3 类):
> head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
我已经创建了数值向量 tr 和 nw,我用它们对 iris 进行子集化,这样我就可以获得训练数据和新数据:
>knn5 <- knn(iris[tr, -5], iris[nw, -5], iris$Species[nw], k = 5, prob = TRUE)
>knn5
[1] versicolor virginica virginica versicolor virginica setosa setosa setosa setosa setosa setosa setosa setosa versicolor virginica
[16] setosa setosa setosa virginica setosa setosa virginica versicolor virginica virginica versicolor setosa versicolor versicolor setosa
[31] versicolor setosa virginica setosa versicolor versicolor versicolor setosa versicolor versicolor virginica virginica virginica setosa versicolor
[46] setosa versicolor versicolor setosa versicolor
attr(,"prob")
[1] 0.4000000 0.4000000 0.4000000 0.6000000 0.4000000 0.6000000 0.6000000 0.4000000 0.3333333 0.6000000 0.6000000 0.5000000 0.6000000 0.6000000 0.6000000 0.5000000
[17] 0.4000000 0.6000000 0.4000000 0.6000000 0.6000000 0.6000000 0.6000000 0.6000000 0.6000000 0.8000000 0.4000000 0.6000000 0.6000000 0.6000000 0.4000000 0.6000000
[33] 0.4000000 0.6000000 0.8000000 0.6000000 0.6000000 0.6000000 0.6000000 0.6000000 0.6000000 0.6000000 0.6000000 0.5000000 0.6000000 0.3333333 0.4000000 0.6000000
[49] 0.6000000 0.6000000
Levels: setosa versicolor virginica
我知道预测很糟糕,因为在 knn 中我为标签输入了错误的向量;我的问题不是那个。
我的问题是,为什么我得到 0.3333333 作为概率值?由于我们正在查看 5 个邻居,因此我希望我们只能获得 n/5.
形式的值我最初的猜测是这些地方有平局;然而,我随后意识到 0.4000000 的值是必须存在关系的地方(因为我们只有 3 类,所以其他人必须投票给 0.4 和 0.2)。所以我不再确定我的猜测了。
我假设您使用的是 class
包中的 knn
。请注意,它有一个参数 use.all
在文档中描述如下:
use.all
controls handling of ties. If true, all distances equal to the kth largest are included. If false, a random selection of distances equal to the kth is chosen to use exactly k neighbours.
虹膜数据包含一对完全重复的点
iris[c(102,143),]
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
102 5.8 2.7 5.1 1.9 virginica
143 5.8 2.7 5.1 1.9 virginica
因此,如果这些点之一是第 5 个最近的邻居,则它们都是,并且将考虑 6 个点 - 而不仅仅是 5 个。