题目

决策树是一种通过树形结构进行分类的人工智能预测模型,如根据图1所示“气象特点与游客是否来游乐场的关系”绘制的图2所示的决策树树形结构: 图1 图2 通过了解当天的是否有风、天气、温度和湿度这4个节点参数即可预测当天是否有人来游乐场。 不同的节点划分顺序可以绘制不同的决策树,为了选出最优的节点划分顺序,需要采用“信息熵”与“信息增益”指标。 信息熵,又称香农熵,被用来度量信息量的大小,信息熵越大表示信息量越大; 信息增益,表示样本经某节点划分后的信息熵变化大小。我们绘制决策树时应当逐次选择信息增益最大的节点作为当前节点。 对于有n个信息的样本D,记第k个信息发生的概率为,信息熵计算公式为E(D)=, 例如游乐场14个样本中“去”(9个)、“不去”(5个),则信息熵==0.940 若样本按“是否有风”节点划分,“是”(6个,其中3个去,3个不去)信息熵==1; “否”(8个,其中6个去,2个不去)信息熵==0.811;经过此节点划分后的信息增益=原始信息熵按此节点划分后样本信息熵比例和=0.940(0.811)=0.048。 (1) 该网络应用属于架构。(单选,填字母:A . B/S架构,B . C/S架构) (2) 若待解密文本为“自息爱信也我己爱”,密钥为“2, 7, 1, 6, 4, 0, 3, 5”,则解密结果是。 (3) 实现该功能的python程序如下,请在划线处填入合适的代码: from flask import render_template,request,Flask import random app=Flask(__name__)  #创建应用实例 @app.route('/')  #选择页面路由 def index():     return render_template('') #加密功能代码略,以下为解密代码: @app.route('/jiemi1/',methods=["GET","POST"]) def jiemi1():     wb=request.form["wb"]  #利用request获取网页文本框内容,返回示例:“1,4,2,3,0” keyo=request.form["key"]  #变量wb存储密文,变量keyo存储密钥     keyn=list(map(int,keyo.split(","))) #将字符串keyo转换为数值列表,示例:[1,4,2,3,0]     result=""     for i in range(len(keyn)):         for j in range(len(keyn)):             if :                     break         result+=wb[j]     return render_template("jie.html",WB=wb,KEY=keyo,RESULT=result) if __name__=="__main__":     (4) 根据上述描述与第16题图1,则“天气”节点中的“多云”信息熵是。 (5) 实现求首次划分节点的程序如下,请在划线处填入合适的代码: def cal(lst):   #计算样本lst的信息熵 x,y,z=0,len(lst),0  #x表示该样本信息熵,y表示该样本数量,z表示某信息发生的概率     num={}     for i in lst:         if i not in num:                    num[i]+=1     for k in num:         z=num[k]/y   #计算该信息发生的概率         x-=z*log(z,2)  #根据公式计算信息熵,log(b,a)等价于logab     return x def check(x,y): #根据节点x,对样本y进行划分,返回示例:{'否': [1, 1, 0, 0, 1, 1, 1, 1], '是': [1, 1, 0, 1, 0, 0]} dic={'是否有风': ['否', '否', '否', '否', '否', '否', '否', '否', '是', '是', '是', '是', '是', '是'], '天气': ['多云', '多云', '晴', '晴', '晴', '雨', '雨', '雨', '多云', '多云', '晴', '晴', '雨', '雨'], '温度': [28, 27, 29, 22, 21, 21, 20, 24, 18, 22, 26, 24, 18, 21], '湿度': [78, 75, 85, 90, 68, 96, 80, 80, 65, 90, 88, 63, 70, 80], '是否前往': [1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0]} xm=list(dic.keys()) entropy=cal(dic[xm[-1]])  #调用函数计算样本原始信息熵entropy #计算各节点信息增益 m=0;p="" col=xm[:-1]       #“是否前往”是结果项,不参与计算 for i in col:     size=len(dic[i]);entropy_1=0     zyb=  #调用函数对样本按照当前节点进行划分     for j in zyb:  #根据划分情况逐个求子样本信息熵并按比例累加         entropy_1+=len(zyb[j])/size*cal(zyb[j])     zy=entropy-entropy_1     print(i,"的信息增益:",zy)     if zy>m:   #计算最大信息增益与信息增益最大的节点         m=zy         print("信息增益最大的节点:",p) 答案: 【1】A 【1】我爱自己也爱信息 【1】index.html【2】keyn[j]==i【3】app.run() 【1】0 【1】num[i]=0【2】check(i,dic)【3】p=i
信息技术 试题推荐
最近更新