感知器算法:使用街灯状态预测行人行为
import numpy as np\nweights=np.array([0.5, 0.48, -0.7])\nalpha=0.1\nstreetlights =np.array([[ 1, 0, 1 ], [ 0, 1, 1 ], [ 0, 0, 1 ], [ 1, 1, 1 ], [ 0, 1, 1 ], [ 1, 0, 1 ]])\nwalk_vs_stop =np.array([ 0, 1, 0, 1, 1, 0 ])\ninput=streetlights[0]#[1, 0, 1]\ngoal_prediction =walk_vs_stop[0] #equals 0... i.e. "stop"\nfor iteration in range(20):\n prediction=input.dot(weights)\n error=(goal_prediction-prediction)*2\n delta=prediction-goal_prediction\n weights=weights-(alpha(input*delta))\n print("Error:" + str(error)+" Prediction:"+ str(prediction))\n\n第1行:导入numpy库并将其命名为np。\n第2行:创建一个名为weights的numpy数组,其中包含[0.5, 0.48, -0.7]。\n第3行:设置学习率alpha为0.1。\n第4行:创建一个名为streetlights的numpy数组,其中包含[[1, 0, 1], [0, 1, 1], [0, 0, 1], [1, 1, 1], [0, 1, 1], [1, 0, 1]],表示六个街灯的状态。\n第5行:创建一个名为walk_vs_stop的numpy数组,其中包含[0, 1, 0, 1, 1, 0],表示六个街灯对应的行人行为(0表示停止,1表示行走)。\n第6行:设置input为streetlights中的第一个元素[1, 0, 1],表示第一个街灯的状态。\n第7行:设置目标预测值goal_prediction为walk_vs_stop中的第一个元素0,表示第一个街灯对应的期望行人行为为停止。\n第8行:循环20次进行训练。\n第9行:计算预测值prediction,使用dot函数将input与weights进行点乘得到一个标量值。\n第10行:计算误差error,将期望预测值goal_prediction与实际预测值prediction之差的平方。\n第11行:计算delta,表示实际预测值与期望预测值之间的差异。\n第12行:更新权重weights,使用梯度下降算法,通过减去学习率alpha乘以input乘以delta来更新权重。\n第13行:打印当前循环的误差和预测值。\n最终的代码意思是使用感知器算法训练一个模型,根据街灯的状态来预测行人的行为(停止或行走)。通过迭代训练和更新权重,使得模型能够更准确地预测行人的行为。
原文地址: https://www.cveoy.top/t/topic/pqEK 著作权归作者所有。请勿转载和采集!