该系统应选择的软件架构是哪种?并说明理由。
下列说法正确的是( )
图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。
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__":
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)
①该信息系统由硬件、软件、数据、通信⽹络和⽤户构成
②该信息系统的数据主要存储在智能终端⾥
③该信息系统采⽤了B/S架构
④该信息系统对外部环境有依赖性
①温度传感器 ②湿度传感器 ③声⾳传感器 ④光线传感器 ⑤⽓体传感器
该系统的客户端无需专门的应用程序,用户工作界面通过浏览器来实现,应用程序基本上都集中于服务器端。
from flask import Flask, render_template,request #导入Flask库函数
app=Flask(_name_)
@app.route("/")
def index():
#获取采集的数据并存储到列表变量 data,代码略
return render_template("index.html",data= )
@app.route("/ ",methods=["GET"]) #数据采集子页面路由命令
def get():
id=int(request.args.get("id")) d=float( )
#获取 URL 中“id=1”后的数据“1”
#变量 d 存储采集到的光线数据
#打开数据库, 并将接收的数据存储到数据库中,代码略
return "数据存储成功! "
#其他系统子页面路由, 代码略
if _name_=='_main_':
app.run ( )