当前位置: 首页 > news >正文

数据挖掘题目:根据规则模板和信息表找出R中的所有强关联规则,基于信息增益、利用判定树进行归纳分类,计算信息熵的代码

一、(30分)设最小支持度阈值为0.2500, 最小置信度为0.6500。对于下面的规则模板和信息表找出R中的所有强关联规则:

S∈R,P(S,x )∧ Q(S,y )==> Gpa(S,w ) [ s, c ]
其中,P,Q ∈{ Major, Status ,Age }.

MajorStatusAgeGpaCount
ArtsGraduateOldGood50
ArtsGraduateOldExcellent150
ArtsUndergraduateYoungGood150
Appl_scienceUndergraduateYoungExcellent
ScienceUndergraduateYoungGood100

解答:
样本总数为500,最小支持数为500*0.25 = 125。
在Gpa取不同值的情形下,分别讨论。
(1)Gpa = Good,

MajorStatusAgeCount
ArtsGraduateOld50
ArtsUndergraduateYoung150
ScienceUndergraduateYoung100

频繁1项集L1 = {Major= Arts:200; Status=Undergraduate: 250; Age = Young:250} -----10分
频繁2项集的待选集C2={Major= Arts,Status= Undergraduate:150; Major= Arts,Age=Young:150;Status=Undergraduate, Age=Young:250 }
频繁2项集L2=C2

(2) Gpa = Excellent

MajorStatusAgeCount
ArtsGraduateOld150
Appl_scienceUndergraduateYoung50

频繁1项集L1 = {Major= Arts:150; Status=Graduate: 150; Age = Old:250}
频繁2项集的待选集C2={Major= Arts,Status= Graduate:150; Major= Arts,Age=Old:150;Status=Graduate, Age=Old:150 }
频繁2项集L2=C2

考察置信度:
Major(S,Arts)^Status(S,Undergraduate)=>Gpa(S,Good) [s=150/500=0.3000, c=150/150=1.0000]
Major(S, Arts)^Age(S,Young)=>Gpa(S, Good)[s=150/500=0.3000, c=150/150=1.0000]
Status(S,Undergraduate)^Age(S,Young)=>Gpa(S,Good) [s=250/500=0.5000, c=250/300=0.8333]
Major(S, Arts)^Status(S,Graduate)=>Gpa(S, Excellent)[s=150/500=0.3000, c=150/200=0.7500]
Major(S, Arts)^Age(S,Old)=>Gpa(S, Excellent)[s=150/500=0.3000, c=150/200=0.7500]
Status(S,Graduate)^Age(S,Old)=>Gpa(S,Excellent) [s=150/500=0.3000, c=150/200=0.7500]

因此,所有强关联规则是:
Major(S,Arts)^Status(S,Undergraduate)=>Gpa(S,Good) [s=150/500=0.3000, c=150/150=1.0000]
Major(S, Arts)^Age(S,Young)=>Gpa(S, Good)[s=150/500=0.3000, c=150/150=1.0000]
Status(S,Undergraduate)^Age(S,Young)=>Gpa(S,Good) [s=250/500=0.5000, c=250/300=0.8333]
Major(S, Arts)^Status(S,Graduate)=>Gpa(S, Excellent)[s=150/500=0.3000, c=150/200=0.7500]
Major(S, Arts)^Age(S,Old)=>Gpa(S, Excellent)[s=150/500=0.3000, c=150/200=0.7500]
Status(S,Graduate)^Age(S,Old)=>Gpa(S,Excellent) [s=150/500=0.3000, c=150/200=0.7500]

二、(30分)设类标号属性 Gpa 有两个不同的值( 即{ Good, Excellent } ), 基于信息增益,利用判定树进行归纳分类。

解答:
定义P: Gpa = Good
N: Gpa = Excellent
任何分割进行前,样本集的熵为:

pnI(p,n)
3002000.97095

I(p,n)=-0.6log2(0.6) –0.4log2(0.4)
= 0.97095

考虑按属性Major分割后的样本的熵

MajorpiniI(pi,ni)
Arts2001500.98523
Appl_science0500
Science10000

E(Major) = 350/500*0.98523 = 0.68966

I(p,n)=-(4/7)log2(4/7) –(3/7)log2(3/7) =0.98523

考虑按属性Status分割后的样本的熵

StatuspiniI(pi,ni)
Graduate501500.81128
Undergraduate250500.65002

E(Status) = 200/5000.81128+300/5000.65002 = 0.71452

考虑按属性Age分割后的样本的熵

AgepiniI(pi,ni)
Old501500.81128
Young250500.65002

E(Age) = E(Status) = 0.71452

各属性的信息增益如下:
Gain(Major) =0.97095-0.68966 = 0.28129
Gain(Status) =Gain(Age) =0.97095-0.71452 = 0.25643

比较后,由于Gain(Major)的值最大,按照最大信息增益原则,按照属性Major的不同取值进行第一次分割.
分割后,按照Major的不同取值,得到下面的3个表:

(1)Major = Arts

StatusAgeGpaCount
GraduateOldGood50
GraduateOldExcellent150
UndergraduateYoungGood150

考虑按属性Status分割后的样本的熵

StatuspiniI(pi,ni)
Graduate501500.81128
Undergraduate15000

E(Status) = 200/350*0.81128= 0.46359

考虑按属性Age分割后的样本的熵

StatuspiniI(pi,ni)
Old501500.81128
Young15000

E(Age) = E(Status)= 0.46359

由于E(Age) = E(Status),可按照属性Status的不同取值进行第二次分割。分割后,按照Status的不同取值,得到下面的2个表:

(1.1) Status =Graduate

AgeGpaCount
OldGood50
OldExcellent150

由于表中属性Age的取值没有变化,停止分割。按照多数投票原则,该分支可被判定为Gpa=Excellent。
(1.2)Status = Undergraduate

StatusAgeGpaCount
UndergraduateYoungGood150

在这种情形下,所有样本的Gpa属性值都相同.停止分割.
(2)Major= Appl_Science

StatusAgeGpaCount
UndergraduateYoungExcellent50

在这种情形下,所有样本的Gpa属性值都相同.停止分割.
(3)Major=Science

StatusAgeGpaCount
UndergraduateYoungGood100

在这种情形下,所有样本的Gpa属性值都相同.停止分割.
综合以上分析,有以下的判定树:
Major--------- Arts ----------Status-------Graduate ------Excellent
\ ______Undergraduate______Good
_______Appl_Science_______________________Excellent

__________Science______________________Good

小 tricks

计算信息熵的代码

import mathdef entropy(probabilities):total = sum(probabilities)probabilities= [p / total for p in probabilities]entropy = 0for p in probabilities:if p > 0:entropy -= p * math.log2(p)return entropyprobabilities = [100,100,150]#计算100 100 150的信息熵result = entropy(probabilities)
print("信息熵:", result)
http://www.lryc.cn/news/218173.html

相关文章:

  • Reshape.XL 1.2 for Excel插件 Crack
  • 开发知识点-PHP从小白到拍簧片
  • 飞书开发学习笔记(二)-云文档简单开发练习
  • 设计模式——命令模式(Command Pattern)+ Spring相关源码
  • [开源]企业级在线办公系统,基于实时音视频完成在线视频会议功能
  • Scala语言用Selenium库写一个爬虫模版
  • ZZ038 物联网应用与服务赛题第I套
  • ClickHouse 学习之基础入门(一)
  • HttpClient基本使用
  • 力扣:150. 逆波兰表达式求值(Python3)
  • Tomcat运行日志乱码问题/项目用tomcat启动时窗口日志乱码
  • Leetcode—199.二叉树的右视图【中等】
  • 微信小程序如何跳转到外部小程序
  • ElasticSearch集群环境搭建
  • [架构之路-250/创业之路-81]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 企业内的数据与数据库
  • delaunay和voronoi图 人脸三角剖分
  • MySQL数据库之表的增删查改
  • (论文阅读11/100)Fast R-CNN
  • Git 标签(Tag)实战:打标签和删除标签的步骤指南
  • React 底层 Fiber 架构 简单理解
  • 使用 Python 进行自然语言处理第 4 部分:文本表示
  • 【LLM】大语言模型高效微调方案Lora||直击底层逻辑
  • Qt for Android代码中输出日志
  • 力扣刷题-二叉树-二叉树的递归遍历
  • VX-3R APRS发射试验
  • JAVA毕业设计109—基于Java+Springboot+Vue的宿舍管理系统(源码+数据库)
  • CMU/MIT/清华/Umass提出生成式机器人智能体RoboGen
  • STM32:AHT20温湿度传感器驱动程序开发
  • 【Linux】第七站:vim的使用以及配置
  • 汇编-算术运算符