当前位置: 代码迷 >> SQL >> SQL Server 贝叶斯公式-一 原理遍
  详细解决方案

SQL Server 贝叶斯公式-一 原理遍

热度:53   发布时间:2016-05-05 12:21:55.0
SQL Server 贝叶斯公式-1 原理遍

转载 请注明,曾新文 MSBI

讲贝叶斯定律的,先看一组我造的统计数据。

 

 

如何求一个人在下雨的情况下带了伞的概率  p(带伞|下雨)= [ p(下雨) n P(带伞) ] / p(下雨)  = 0.333333/0.55556 =0.5999946

 

这概率在我们理解就是,今天太不爽了下雨了,不晓得小王会不会带。到时我可以和他一起回家。如果他要带了。

这样你就有0.599946希望今天可以不被淋到。

 

那么贝叶斯公式是什么呢?    

P(A|B)= p(A n B)/P(B)  ,设定B已发生的情况下,A发生的概率是多少。

 

注意 这这里n 是的意思  P(A n B)=P(A | B) *P(B)

 

我们验证一下。

P(下雨 又 带伞的概率) = P(带伞|下雨)* P(下雨)  =   0.5999946* 0.55556=0.333333

 

 

 

 

针对这样数据,我们怎么得出矩阵图呢?

 代码如下:

with t as (select '带伞' as 带不带,	'下雨' as 天气union allselect '带伞' ,	'下雨'union allselect '带伞',	'下雨'union allselect '带伞',	'下雨'union allselect '带伞',	'下雨'union allselect '带伞',	'下雨'union allselect '不带伞',	'下雨'union allselect '不带伞',	'下雨'union allselect '不带伞',	'下雨'union allselect '不带伞',	'下雨'union allselect '带伞',	'不下雨'union allselect '带伞',	'不下雨'union allselect '不带伞',	'不下雨'union allselect '不带伞',	'不下雨'union allselect '不带伞',	'不下雨'union allselect '不带伞',	'不下雨'union allselect '不带伞',	'不下雨'union allselect '不带伞',	'不下雨')select case grouping_id(t1.带不带) when 1 then '汇总'else t1.带不带 endas  带不带,sum(下雨) as 下雨,sum(不下雨) as 不下雨,sum(下雨)+sum(不下雨)合计 from  (--大的子语句***********************select 带不带,下雨*1.0/总次数 as 下雨,不下雨*1.0/总次数 as 不下雨 from  ( select count(*) as 总次数 from  t) 总数cross join(select 带不带, 下雨 下雨 , 不下雨from  tPIVOT(count(天气)FOR 天气 IN (下雨, 不下雨)) as b ) b--大的子语句***********************) t1group by cube(带不带)


 

 

 

贝叶斯也涉及到一个数据挖掘算法, 这里简单介绍一下,下一遍,将演示根据样本数据,判断用户某一行为,是否符合某一状态。

 

 

例如,你可以据,一般喜欢听什么歌的人是单身的人。然后你根据他要的歌,去判断这家伙是不是单身。  

 

 

 

 

 

 

 

 

 

  相关解决方案