解释 e1071:R 中 naiveBayes 分类器返回的条件概率
Interpreting conditional probabilities returned by naiveBayes classifier in e1071:R
正在使用以下流程开发 class化解决方案:
一个。使用 e1071.
在 R 中执行朴素贝叶斯 class化
b。获取先验概率 table 和条件概率 tables
c。使用应用程序中的 PL/SQL 程序使用这些值进行预测。即最终预测将不涉及使用 R 预测函数。
在步骤 b 中,我看到模型生成后 R 返回的负数和大于 1 的条件概率 - 它们真的是条件概率吗?
用 2 个数据集说明问题 - 一个我能够解释,一个我无法解释。
数据集1:
水果识别(在本论坛的一个很好的朴素贝叶斯插图中看到了这个)
Data Frame Fruit_All:
Long Sweet Yellow Fruit
Yes Yes Yes Banana
Yes Yes Yes Banana
Yes Yes Yes Banana
Yes Yes Yes Banana
No Yes Yes Banana
No Yes Yes Orange
No Yes Yes Orange
No Yes Yes Orange
Yes Yes Yes Other
No Yes No Other
Yes Yes Yes Banana
Yes Yes Yes Banana
Yes No Yes Banana
Yes No No Banana
No No Yes Banana
No No Yes Orange
No No Yes Orange
No No Yes Orange
Yes Yes No Other
No No No Other
执行朴素贝叶斯class化:
`NB.fit <- naiveBayes(Fruit~., data=Fruit_All,laplace=0)`
其中 Fruit 是 class 列,Fruit_All 是完整的数据框。
NB.fit中返回的条件概率完全符合预期。
此外,所有行概率整齐地加起来为 1。例如香蕉+黄色为 0.1 + 0.9
条件概率:
Long
Y No Yes
Banana 0.2 0.8
Orange 1.0 0.0
Other 0.5 0.5
Sweet
Y No Yes
Banana 0.30 0.70
Orange 0.50 0.50
Other 0.25 0.75
Yellow
Y No Yes
Banana 0.10 0.90
Orange 0.00 1.00
Other 0.75 0.25
A-priori probabilities:
Banana Orange Other
0.5 0.3 0.2
我可以使用上面的内容轻松编写代码来预测所提供输入的结果,例如对于 Long、Sweet 和 Yellow 都等于是。
该产品最大的水果:
P(Long|Fruit) * P(Sweet|Fruit) * P(Yellow|Fruit) * apriori P(Fruit)
数据集 2:虹膜数据集在 R 中可用
`NB.fit <- naiveBayes(Species~., data=iris)`
条件概率:
Sepal.Length
Y [,1] [,2]
setosa 5.006 0.3524897
versicolor 5.936 0.5161711
virginica 6.588 0.6358796
Sepal.Width
Y [,1] [,2]
setosa 3.428 0.3790644
versicolor 2.770 0.3137983
virginica 2.974 0.3224966
Petal.Length
Y [,1] [,2]
setosa 1.462 0.1736640
versicolor 4.260 0.4699110
virginica 5.552 0.5518947
Petal.Width
Y [,1] [,2]
setosa 0.246 0.1053856
versicolor 1.326 0.1977527
virginica 2.026 0.2746501
在这种情况下,同一个函数似乎没有返回条件概率,因为某些值大于 1,并且 none 行加起来等于 1。
注意:如果我在 R 中使用 predict 函数,我会得到正确的结果作为 Iris 的预测。
我知道 Iris 数据集有点不同,因为变量是连续数值,而不是与水果示例不同的因子。
对于其他复杂的数据集,我什至将负值视为 classifier 返回的条件概率。虽然最终结果在 R 中很好。
问题:
鸢尾花数据集返回的条件概率真的是条件概率吗?
我在水果示例中所做的相同产品最大化是否适用于 Iris,甚至适用于条件概率为负的数据集?
是否可以根据 Iris 条件概率 tables 编写自定义预测函数?
这个答案晚了大约一年,但我偶然发现了它。在您撰写时,预测变量是数字,因此与因素不同。您得到的是条件高斯分布的均值(第一列)和 sd(第二列)。因此,对于
Petal.Width
Y [,1] [,2]
setosa 0.246 0.1053856
我们得到平均花瓣宽度为 0.246,标准差为 0.10。你也可以从
看到
> iris %>% dplyr::filter(Species=="setosa") %>%
dplyr::summarize(mean(Petal.Width), sd(Petal.Width))
mean(Petal.Width) sd(Petal.Width)
1 0.246 0.1053856
利用贝叶斯公式对条件概率进行高斯密度反演,得到合适的条件概率。
正在使用以下流程开发 class化解决方案:
一个。使用 e1071.
在 R 中执行朴素贝叶斯 class化b。获取先验概率 table 和条件概率 tables
c。使用应用程序中的 PL/SQL 程序使用这些值进行预测。即最终预测将不涉及使用 R 预测函数。
在步骤 b 中,我看到模型生成后 R 返回的负数和大于 1 的条件概率 - 它们真的是条件概率吗?
用 2 个数据集说明问题 - 一个我能够解释,一个我无法解释。
数据集1: 水果识别(在本论坛的一个很好的朴素贝叶斯插图中看到了这个)
Data Frame Fruit_All:
Long Sweet Yellow Fruit
Yes Yes Yes Banana
Yes Yes Yes Banana
Yes Yes Yes Banana
Yes Yes Yes Banana
No Yes Yes Banana
No Yes Yes Orange
No Yes Yes Orange
No Yes Yes Orange
Yes Yes Yes Other
No Yes No Other
Yes Yes Yes Banana
Yes Yes Yes Banana
Yes No Yes Banana
Yes No No Banana
No No Yes Banana
No No Yes Orange
No No Yes Orange
No No Yes Orange
Yes Yes No Other
No No No Other
执行朴素贝叶斯class化:
`NB.fit <- naiveBayes(Fruit~., data=Fruit_All,laplace=0)`
其中 Fruit 是 class 列,Fruit_All 是完整的数据框。
NB.fit中返回的条件概率完全符合预期。
此外,所有行概率整齐地加起来为 1。例如香蕉+黄色为 0.1 + 0.9
条件概率:
Long
Y No Yes
Banana 0.2 0.8
Orange 1.0 0.0
Other 0.5 0.5
Sweet
Y No Yes
Banana 0.30 0.70
Orange 0.50 0.50
Other 0.25 0.75
Yellow
Y No Yes
Banana 0.10 0.90
Orange 0.00 1.00
Other 0.75 0.25
A-priori probabilities:
Banana Orange Other
0.5 0.3 0.2
我可以使用上面的内容轻松编写代码来预测所提供输入的结果,例如对于 Long、Sweet 和 Yellow 都等于是。
该产品最大的水果:
P(Long|Fruit) * P(Sweet|Fruit) * P(Yellow|Fruit) * apriori P(Fruit)
数据集 2:虹膜数据集在 R 中可用
`NB.fit <- naiveBayes(Species~., data=iris)`
条件概率:
Sepal.Length
Y [,1] [,2]
setosa 5.006 0.3524897
versicolor 5.936 0.5161711
virginica 6.588 0.6358796
Sepal.Width
Y [,1] [,2]
setosa 3.428 0.3790644
versicolor 2.770 0.3137983
virginica 2.974 0.3224966
Petal.Length
Y [,1] [,2]
setosa 1.462 0.1736640
versicolor 4.260 0.4699110
virginica 5.552 0.5518947
Petal.Width
Y [,1] [,2]
setosa 0.246 0.1053856
versicolor 1.326 0.1977527
virginica 2.026 0.2746501
在这种情况下,同一个函数似乎没有返回条件概率,因为某些值大于 1,并且 none 行加起来等于 1。
注意:如果我在 R 中使用 predict 函数,我会得到正确的结果作为 Iris 的预测。
我知道 Iris 数据集有点不同,因为变量是连续数值,而不是与水果示例不同的因子。
对于其他复杂的数据集,我什至将负值视为 classifier 返回的条件概率。虽然最终结果在 R 中很好。
问题:
鸢尾花数据集返回的条件概率真的是条件概率吗?
我在水果示例中所做的相同产品最大化是否适用于 Iris,甚至适用于条件概率为负的数据集?
是否可以根据 Iris 条件概率 tables 编写自定义预测函数?
这个答案晚了大约一年,但我偶然发现了它。在您撰写时,预测变量是数字,因此与因素不同。您得到的是条件高斯分布的均值(第一列)和 sd(第二列)。因此,对于
Petal.Width
Y [,1] [,2]
setosa 0.246 0.1053856
我们得到平均花瓣宽度为 0.246,标准差为 0.10。你也可以从
看到> iris %>% dplyr::filter(Species=="setosa") %>%
dplyr::summarize(mean(Petal.Width), sd(Petal.Width))
mean(Petal.Width) sd(Petal.Width)
1 0.246 0.1053856
利用贝叶斯公式对条件概率进行高斯密度反演,得到合适的条件概率。