楼主: yukai08008
3105 2

[学习分享] 朴素贝叶斯分类_Raw1 [推广有奖]

  • 2关注
  • 17粉丝

已卖:19份资源

讲师

2%

还不是VIP/贵宾

-

威望
0
论坛币
2176 个
通用积分
3.0600
学术水平
10 点
热心指数
7 点
信用等级
7 点
经验
5915 点
帖子
120
精华
0
在线时间
556 小时
注册时间
2012-11-28
最后登录
2022-4-11

楼主
yukai08008 在职认证  发表于 2016-8-6 19:06:43 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
ps:这只是一个原理性的代码实现(数据来源:数据挖掘导论 P141)
朴素贝叶斯分类利用分析变量与目标变量之间的条件概率来进行分类。
P(A|B)=P(A)*P(B|A)/P(B)
把A看成目标,B看成变量。
总的来说利用了目标变量的分布概率,以及分析变量与目标变量的条件概率,用条件独立的假设简化了计算。
第一步计算条件概率。
第二步对新的记录计算对应类别的概率,取概率高的分类作为结果。

假设新来的数据集里变量属性如下(new),这里撇开连续变量
data new;
input house $ marriage $;
cards;
no married
;
run;
把数据集转置,获得变量名+水平值的格式
proc transpose data=new out=new1;
var _all_;
run;
data new1;
set new1;
rename _name_=varname col1=level;
run;
根据变量名和水平值获得对应的条件概率
%mer1(new1,res,varname,level,new2)
%sort(new2,target)
proc transpose data=new2 out=new3;
by target;
var p;
run;
计算条件概率 note:这里应当把y的概率和x的概率也代入,这里就偷懒不写了
data new4;
set new3;
array cal(*) col:;
res=1;
do i=1 to dim(cal);
res=res*cal[i];
end;
run;
把概率最大的输出
%sort(new4,descending res)
data _null_;
set new4;
if _n_ then do;
call symput('cat',target);
end;
stop;
run;
把分类添加到new数据集完成分类
data new;
set new;
cat=symget('cat');
run;
proc print data=new;
run;




数据部分:
data byes;
input house $ marriage $  income target;
cards;
yes single 125 0
no married 100 0
no single 70 0
yes married 120 0
no devor 95 1
no married 60 0
yes devor 220 0
no single 85 1
no married 75 0
no single 90 1
;
run;

计算单个离散变量条件概率,可以用宏遍历变量来获得所有变量的值
对于连续变量,或者进行离散化,或者根据某个特定的分布来计算,这里就不展开写。
%macro desv(ins,xi,target,res);
%sort(&ins,&target &xi)
data b1;
retain &target ξ
set &ins;
by &target ξ
if first.&xi then son=0;
son+1;
if last.&xi then output;
keep &target &xi  son;
run;
proc sql noprint;
create table b2 as
select *,sum(son) as mud from b1
group by ⌖
quit;
data &res;
set b2;
p=son/mud;
varname="&xi";
level=ξ
keep &target varname level p;
run;
%mend;


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:贝叶斯分类 朴素贝叶斯 raw 贝叶斯 Transpose marriage house 记录

已有 1 人评分学术水平 收起 理由
eijuhz + 3 精彩帖子

总评分: 学术水平 + 3   查看全部评分

沙发
L—STAR 发表于 2017-7-19 22:45:38
你好,最近正在学习贝叶斯分类算法,请问你上面省略的关于计算离散变量和连续变量的条件概率代码应该怎么写呢?

藤椅
冯阳洋 学生认证  发表于 2019-5-6 12:08:33
你好,请问可以举一个完整的带有离散型数据的例子吗···

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 05:12