考虑去卡拉OK厅唱歌的时候,是否要等待包间的问题。规定如下属性可用于描述该领域内的实例:
(1)Others(其他地点):附近是否有其他卡拉OK厅;
(2)WaitCond(等候条件):供顾客等候的地方是否舒适;
(3)Weekend(周末):若是周六或周日,则为真;
(4)Consumers(顾客):店中有多少顾客(值为None(没人),Some(一些)或Full(满座));
(5)Price(价格):价格范围(值为Cheep(便宜),Middle(中
等),Expensive(较贵));
(6)Raining(下雨):外面是否在下雨;
(7)Reservation(预约):是否预约过;
(8)WaitEstimate(等候时间估计):估计的等候时间(值为0—10,10—30,30—60,>60,单位为分钟)。
训练集见表:
实例 属性 目标WillWait
Others WCond WEnd Cons Price Rain Res WEst
X1 Yes No No Some EX No Yes 0-10 Yes
X2 Yes No No Full CH No No 30-60 No
X3 No Yes No Some CH No No 0-10 Yes
X4 Yes No Yes Full CH Yes No 10-30 Yes
X5 Yes No Yes Full EX No Yes >60 No
X6 No Yes No Some MID Yes Yes 0-10 Yes
X7 No Yes No None CH Yes No 0-10 No
X8 No No No Some MID Yes Yes 0-10 Yes
X9 No Yes Yes Full CH Yes No >60 No
X10 Yes Yes Yes Full EX No Yes 10-30 No
X11 No No No None CH No No 0-10 No
X12 Yes Yes Yes Full CH No No 30-60 Yes
首先是建立BP神经网络,本次实践采用隐含层数目为1的三层结构构建BP神经网络,从题目可知输入层结点为8,输出层节点为1,采用l=(n+m)1/2+a确定隐含层节点数目为8,变换函数选择S型函数f(x)=(1+e-x)-1。BP神经网络模型不能对文本进行直接的识别,所以此次实践把文本数据转换为数字形式:
#定义S型激励函数sigmoid
def sigmoid(x):
s = 1 / (1 + np.exp(-x))
return s
'''
@global_parameter:
eta
iteration_counts
sample_input
sample_output
input_hid_weight
hid_output_weight
hid_threshold
output_threshold
@local_parameter
hid_output
hid_error
output_error
est_output
output_sum_error
hid_sum_error
'''
sample_input = np.array([[1,0,0,1,3,0,1,1],
[1,0,0,2,1,0,0,3],
[0,1,0,1,1,0,0,1],
[1,0,1,2,1,1,0,2],
[1,0,1,2,3,0,1,4],
[0,1,0,1,2,1,1,1],
[