机器学习——前馈神经网络多分类

本次主要讲向前传播过程,每层的权重已经给出了,只需要每层加权值,然后利用激活函数运算传递给下一层,最后收口在10个值,并且计算这10个值的最大值所在的索引。

  • 读取数据和每层权重
%matplotlib inline
import math
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt #绘图模块
from scipy.special import expit
import scipy.io as sio #用来读取matlab文件
data = sio.loadmat("CourseraML/ex3/data/ex3data1.mat") #读取数据
X, y = data["X"], data["y"] #特征和标签 
X = np.insert(X, 0, 1, axis =1) #插入截距虚拟列
#print(X.shape, y.shape) #(5000, 401) (5000, 1)

weight_data = sio.loadmat("CourseraML/ex3/data/ex3weights.mat") #权重数据
theta1, theta2 = weight_data['Theta1'], weight_data['Theta2']
#print(theta1.shape, theta2.shape) #(25, 401) (10, 26)
  • 向前传播
def forwardPropagation(mytheta1, mytheta2, myX): #定义向前传播函数
    a1 = myX #第一层,输入层
    z1 = np.dot(myX, mytheta1.T) #加权重 
    a2 = expit(z1)#第一层激活函数运算
    a2 = np.insert(a2, 0, 1, axis =1) #加常数偏置度 (5000, 26)
    z2 = np.dot(a2, mytheta2.T)  #(5000, 26)*(26,10) = (5000, 10)
    a3 = expit(z2) #第二层激活函数运算,输出层
    classes = np.argmax(a3, axis =1) #按列找出每行最大预测值的序号 
    classes = classes + 1 #偏移1个单位
    return classes
  • 模型评估
classes = forwardPropagation(theta1, theta2, X)

n_correct, n_total = 0, 0
for i in range(X.shape[0]):
    n_total +=1
    if classes[i] == y[i]:
        n_correct +=1
accuarcy = n_correct/n_total
print("The accuarcy is %0.2f%%"%(accuarcy*100))

正确输出是 The accuarcy is 97.52%

延伸阅读

机器学习——逻辑回归多分类

机器学习——逻辑回归正则(二)

机器学习——逻辑回归不正则(一)

机器学习——多元线性回归模型

机器学习——单变量线性回归模型

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三行数学

赞赏也是一种肯定!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值