Coursera_Stanford_ML_ex3_多标度分类和神经网络初步 作业记录
来源:互联网 发布:python爬虫框架scrapy 编辑:程序博客网 时间:2024/06/05 19:27
Programming Exercise 3:Multi-class Classi cation and Neural Networks
这周总结一下Week4的作业,使用Logstic Regression对多类别的数据进行分类,能够使用已经训练好的神经网络对图片里的数字进行识别并分类,总体来说难度较前两周有所提高,不过对于矩阵用的好的同学来说也不算难。
首先看一下作业要求:
这周有三个LR文件,一个NN文件需要我们去完成。
一.ex3
题目大意是在给出的手写数字图片基础上,利用LR对图像中的数字进行分类。
数据处理:一共有0-9这10个类别,为防止在搜索矩阵时候的越界,将0用10进行替换。给了5000张20x20的图片,数据以像素值的形式存放在ex3data1.mat中,load('ex3data1.mat');直接将每张图片的像素值和类别存放在X和y中,X的矩阵大小为5000x400(每个像素点均作为自变量),y的矩阵大小为5000x1。
当然这些操作都是已经写好了,不过在我们自己写的时候第一步是至关重要的,直接影响到训练的效果,应该引起我们的重视。
lrCostFunction.m目的是给出误差函数和梯度函数,因为使用的是Logstic Regression和上一周的一致,所以不再赘述。
oneVsAll.m目的是训练函数使误差函数达到最小,方法是对每个类别分别进行训练,得出使误差函数的参数,因为在视频中也有讲对多标度分类问题每一类的判断都分为两部分,属于该类别(y=1)以及不属于该类别(y=0)
for c=1:num_labels initial_theta = zeros(n + 1, 1); options = optimset('GradObj', 'on', 'MaxIter', 50); all_theta(c,:) = fmincg (@(t)lrCostFunction(t, X, (y==c), lambda), initial_theta, options);end
值得注意的是,fmincg这个函数是Carl Edward Rasmussen 这哥们写的,是一种寻优函数,以后有机会仔细研究一下。在初始化参数时不要忘记加常数项。
predictOneVsAll.m训练完每个类别的参数,在对新数据进行预测时,选择预测结果最高的类别作为预测结果。
[c,b]=max(sigmoid(X*all_theta'),[],2);p=b;
返回每行最大值所在的列,最终的预测精度可以达到95.04%,这比文档中的精度略高,可能跟参数精度的选择有关,选低了可能造成截断误差较大,影响精度。
二.ex3_nn.m
predict.m神经网络的参数是已经训练好的,只需要完成对新数据的预测即可,不要忘记加调整项(至于为什么要加调整项?神经网络单层结果与逻辑回归相似,类似加了一个截距,最终目的还是使结果达到最优)。
X=[ones(m,1) X];[c,b]=max(sigmoid([ones(m,1) sigmoid(X*Theta1')]*Theta2'),[],2);p=b;
预测精度达到97.52%和文档中的精度相近。
- Coursera_Stanford_ML_ex3_多标度分类和神经网络初步 作业记录
- Coursera_Stanford_ML_ex4_神经网络训练 作业记录
- NG 神经网络 多分类
- 神经网络分类
- 分类:神经网络
- 神经网络分类
- 随机网络和无标度网络
- 神经网络用于多分类的一个疑问
- (三)Multi-class Classification and Neural Networks[多分类问题和神经网络]
- 斯坦福机器学习实验之3-多分类和神经网络(Multi-class Classification and Neural Networks)
- 机器学习—第四周—作业2—用深度神经网络分类图像
- 卷积神经网络初步学习
- PyTorch上搭建简单神经网络实现回归和分类
- 利用TensorFlow和神经网络来处理文本分类问题
- 机器学习的大局:用神经网络和TensorFlow分类文本
- MySQL几种数据类型精度和标度的情况
- 初步学习CSS之定义、分类和基本语法
- 人工神经网络分类
- 回归分析
- 动态规划简单例子--象棋步骤
- 多重继承
- 华为手机调试Android程序崩溃不打印Log
- javaweb信息化门户网站
- Coursera_Stanford_ML_ex3_多标度分类和神经网络初步 作业记录
- Objective-C浅拷贝和深拷贝
- Haskell编译不能的问题
- JAVA编程规则【转自java编程思想】
- HDU5491 The Next【二进制】
- Leetcode 67:Add Binary
- 安卓控件使用系列15:ImageView适屏和裁剪图片
- HDU 2140 模拟
- LeetCode---Length of Last Word