2-神经网络起源-demo1-*and-or 感知机

本文深入探讨了感知机算法在逻辑门实现中的应用,通过具体的AND和OR感知机实例,详细展示了算法的权重设置、线性组合计算及结果验证过程。文章提供了完整的Python代码示例,包括数据输入、权重调整、激活函数应用以及结果对比分析。

**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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值