使用程序设计流程图解析并建立神经网络(不依赖深度学习library)

介绍:

Flow chart for a simple neural network:

#(1)Take inputs 输入

#(2)Add bias (if required)

#(3)Assign random weights to input features 随机一个权重

#(4)Run the code for training. 训练集训练

#(5)Find the error in prediction. 找预测损失

#(6)Update the weight by gradient descent algorithm. 根据梯度下降更新权重

#(7)Repeat the training phase with updated weights. 重复训练更新权重

#(8)Make predictions. 做预测

参考: 深度学习使用python建立最简单的神经元neuron-CSDN博客

数据:

python 复制代码
# Import the required libraries
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt

# Load the data
df = pd.read_csv('Lesson44-data.csv') 
df

一、

python 复制代码
# Separate the features and label
x = df[['Glucose','BloodPressure']]#特征值
y = df['Outcome']#标签

三、

python 复制代码
np.random.seed(10)#初始化
label = y.values.reshape(y.shape[0],1)
weights = np.random.rand(2,1)#随机一个权重
bias = np.random.rand(1)
learning_rate = 0.0000004#梯度下降步长
epochs = 1000 #迭代次数

四~七、

python 复制代码
# Define the sigmoid function
def sigmoid(input):    
    output = 1 / (1 + np.exp(-input))
    return output



# Define the sigmoid derivative function基于sigmoid导数
def sigmoid_derivative(input):
    return sigmoid(input) * (1.0 - sigmoid(input))




def train_network(x,y,weights,bias,learning_rate,epochs):  #Epochs. 来回 One Epoch is when an ENTIRE dataset is passed forward and backward through the neural network only ONCE.
    j=0                                                    #weights 权重
    k=[]                                                   #learning_rate梯度下降的步长
    l=[]
    for epoch in range(epochs):       
        dot_prod = np.dot(x, weights) + bias#np.dot矩阵乘积
        # using sigmoid
        preds = sigmoid(dot_prod)
        # Calculating the error
        errors = preds - y  #计算错误,预测-实际
        # sigmoid derivative
        deriva_preds = sigmoid_derivative(preds)
        deriva_product = errors * deriva_preds
        #update the weights
        weights = weights -  np.dot(x.T, deriva_product) * learning_rate
        loss = errors.sum()
        j=j+1
        k.append(j)
        l.append(loss)
        print(j,loss)
    for i in deriva_product:
        bias = bias -  i * learning_rate
    plt.plot(k,l)
    return weights,bias

weights_final, bias_final = train_network(x,label,weights,bias,learning_rate,epochs)

八、

python 复制代码
weights_final
'''结果:
array([[ 0.06189634],
       [-0.12595182]])
'''

bias_final
#结果:array([0.633647])

# Prediction
inputs = [[101,76]]
dot_prod = np.dot(inputs, weights_final) + bias_final
preds = sigmoid(dot_prod) >= 1/2
preds
#结果:array([[False]])

inputs = [[137,40]]
dot_prod = np.dot(inputs, weights_final) + bias_final
preds = sigmoid(dot_prod) >= 1/2
preds
#结果:array([[ True]])
相关推荐
Andrew_Xzw20 分钟前
数据结构与算法(快速基础C++版)
开发语言·数据结构·c++·python·深度学习·算法
凤头百灵鸟1 小时前
Python语法基础篇(包含类型转换、拷贝、可变对象/不可变对象,函数,拆包,异常,模块,闭包,装饰器)
python
多多*2 小时前
LUA+Reids实现库存秒杀预扣减 记录流水 以及自己的思考
linux·开发语言·redis·python·bootstrap·lua
何双新3 小时前
第21讲、Odoo 18 配置机制详解
linux·python·开源
Wish3D3 小时前
阿里云OSS 上传文件 Python版本
开发语言·python·阿里云
阿福不是狗5 小时前
Python使用总结之Mac安装docker并配置wechaty
python·macos·docker
gen_6 小时前
mac环境下的python、pycharm和pip安装使用
python·macos·pycharm
AI视觉网奇6 小时前
pycharm 左右箭头 最近编辑
ide·python·pycharm
思绪无限6 小时前
Pycharm的终端无法使用Anaconda命令行问题详细解决教程
ide·python·pycharm·终端·命令行·anaconda·问题教程
漫步云端-r6 小时前
Pycharm的使用技巧总结
ide·python·pycharm