**demo1-and-or 感知机
Pycharm代码如下:
import pandas as pd
"""
AND 感知机算法
output =1 if w1 * input1 + w2 * input2 + bias >=0
output =0 if w1 * input1 + w2 * input2 + bias <0
"""
def and1():
# 1、定义权重、偏置项。
weight1 = 1.2
weight2 = 0.7
bias = -1.3
# 2、定义输入(input) 和 目标值(targets)
test_inputs = [(0, 0), (0, 1), (1, 0), (1, 1)]
correct_outputs = [False, False, False, True]
outputs = []
# 3、将输入 和 目标值 用zip组合,并且一一遍历出来。
for test_input, correct_output, in zip(test_inputs, correct_outputs):
# 4、做线性组合,得到输出output
linear_combination = weight1* test_input[0] + weight2 * test_input[1] + bias
# 判断linear_combination 是否大于0,如果大于等于0那么输出True,反之输出 False
output = int(linear_combination >=0)
# 5、将输出的结果,追加到一个列表中,最终可视化出来。
is_correct_string = '是' if output == correct_output else '否'
outputs.append([test_input[0], test_input[1], linear_combination, output, is_correct_string])
# print(outputs)
# 6、统计错误的数量。
num_wrong = len([output[4] for output in outputs if output[4]=='否'])
# 7、可视化一下结果,和真实的标签相比较。
output_frame = pd.DataFrame(
outputs, columns=['input1', 'input2', 'linear_combination', 'Activation output', 'is correct']
)
if not num_wrong:
print('恭喜!全对了 \n')
else:
print('你错了{}个'.format(num_wrong))
print(output_frame.to_string(index=False))
def or1():
# 1、定义权重、偏置项。
weight1 = 1.2
weight2 = 0.7
bias = -0.5
# 2、定义输入(input) 和 目标值(targets)
test_inputs = [(0, 0), (0, 1), (1, 0), (1, 1)]
correct_outputs = [False, True, True, True]
outputs = []
# 3、将输入 和 目标值 用zip组合,并且一一遍历出来。
for test_input, correct_output, in zip(test_inputs, correct_outputs):
# 4、做线性组合,得到输出output
linear_combination = weight1* test_input[0] + weight2 * test_input[1] + bias
# 判断linear_combination 是否大于0,如果大于等于0那么输出True,反之输出 False
output = int(linear_combination >=0)
# 5、将输出的结果,追加到一个列表中,最终可视化出来。
is_correct_string = '是' if output == correct_output else '否'
outputs.append([test_input[0], test_input[1], linear_combination, output, is_correct_string])
# print(outputs)
# 6、统计错误的数量。
num_wrong = len([output[4] for output in outputs if output[4]=='否'])
# 7、可视化一下结果,和真实的标签相比较。
output_frame = pd.DataFrame(
outputs, columns=['input1', 'input2', 'linear_combination', 'Activation output', 'is correct']
)
if not num_wrong:
print('恭喜!全对了 \n')
else:
print('你错了{}个'.format(num_wrong))
print(output_frame.to_string(index=False))
if __name__ == '__main__':
and1()
#or1()
本文深入探讨了感知机算法在逻辑门实现中的应用,通过具体的AND和OR感知机实例,详细展示了算法的权重设置、线性组合计算及结果验证过程。文章提供了完整的Python代码示例,包括数据输入、权重调整、激活函数应用以及结果对比分析。
3569

被折叠的 条评论
为什么被折叠?



