多类分类问题
就是把多个类别细分为多个0-1类别来分析
代码:
导入与处理数据
1.导入模块
1 | import numpy as np |
2.导入数据
因为图像的灰度值是用.mat
存储的,所以用loadmat
来导入到python
中
1 | # 5000个训练样本,每个样本20*20的灰度值,展开为400维向量。输出为0~9的数字 |
3.可以随机显示一张图片来观察
1 | def plot_an_image(X,y): |
结果如图:
代价函数
正则化项逻辑回归,和之前的没区别
1 | def cost_reg(theta,X,y,lmd): |
梯度函数
和之前的没区别,只不过这里用了np.concatenate()
来拼接。
1 | def gradient_reg(theta,X,y,lmd): |
one vs all
每次循环都求出0~9中任一数字的$\theta$值(将该数字和其他数字二分类),最后拼接成一个矩阵。
1 | def one_vs_all(X,y,lmd,K): |
计算精确度
1 | ''' |
main函数
1 | def main(): |
神经网络
原理
模仿人类大脑的神经元:
进一步设计出神经网络:
代码
这个实验是神经网络的正向传播过程,不涉及如何训练。
导入模块
1 | from scipy.io import loadmat |
导入数据
这里的权重已经给出,导入即可
1 | def load_weigth(path): |
main函数
1 | def main(): |