我想要一些数学方面的帮助,并检查我是否正确理解了算法。因此,我一直在学习视频,并尝试了自己的示例。最后,我得到了不可靠的结果;我认为它们是“狡猾的”,因为我的输出不在 0 和 1 之间。如果我使用更高的输出,那么是的,它已经正确分类了我的新数据,但我只是不确定,因为数字完全不同。我尝试用计算器而不是 python 手工计算,但我仍然得到一个奇怪的结果,所以这让我觉得我的方法是错误的。这就是我所做的,请看看并告诉我你的想法:
# data
x = [[65,50],
[62,49],
[130,78],
[124,79],
[54,47], # the heights/weights of a child
[169,76], (0), or an adult (1)
[59,58],
[169,79],
[52,52]]
y = [0,0,1,1,0,1,0,1,0]
new = [58, 54]
好的,这就是我认为我应该做的:
计算出先验概率(在这种情况下是 5/9 的儿童,4/9 的成人)
计算出每个特征和每个类别的均值和方差:
x̄(C,H) = 58.4 x̄(C,W) = 51.2
x̄(A,H) = 148 x̄(A,W) = 78
σ²(C,H) = 23.44 σ²(C,W) = 14.16
σ²(A,H) = 445.5 σ²(A,W) = 1.5
计算高斯函数 f(x,x̄, σ²):
f(58, 58.4, 23.44) = 0.08212001659(儿童身高)
f(54, 51.2, 14.16) = 0.08038037412(儿童体重)
f(58, 148, 445.5) = 2.129877168 x10(-6)(成人身高)
f(54, 78, 1.5) = 1.343766812 x10(-84) (成人体重)
将成人和儿童类的高斯相乘:
0.08212001659 x 0.08038037412 = 6.600837656 x10(-3) (子高斯) 2.129877168 x10(-6) x 1.343766812 x10(-84) = 2.862058252 x10(-90) (高斯)
- 使用贝叶斯定理计算概率:
(子高斯 x 子概率)/(子高斯 x 子概率 x 成人高斯 x 成人概率) (成人高斯 x 成人概率)/(子高斯 x 子概率 x 成人高斯 x 成人概率)
(6.600837656 x10(-3) x 5/9)/(6.600837656 x10(-3) x 5/9 x 2.862058252 x10(-90) x 4/9) = 9.841633571 x10(89) (2.862058252 x10(-90) x 4/9)/(6.600837656 x10(-3) x 5/9 x 2.862058252 x10(-90) x 4/9) = 341.3788376
...所以这些是最终的概率。如果我选择更高的那个,那么算法会正确地将数据归类为子数据,但概率不在 0 和 1 之间,这让我认为这种方法可能不适用于其他数据。我还通过 Scikit learn 运行数据,它将新数据也归类为孩子。请让我知道您的想法,如果我对某些事情不清楚,请在评论中告诉我。