Coursera-吴恩达-机器学习-第四周-编程作业: Multi-class Classification and Neural Networks

本次文章内容: Coursera吴恩达机器学习课程,第四周编程作业。编程语言是Matlab。

学习算法分两部分进行理解,第一部分是对算法结构进行口头综述,第二部分是代码。

0 Introduction 

在这个练习中,将实现‘一对多’逻辑回归和神经网络来识别手写数字。

1 Multi-class Classication

part 1 algorithm 

Part 0 Initialization & Setup the parameters you will use for this part of the exercise

Part 1 Loading and Visualizing Data

          加载并可视化数据,数据格式为 .mat格式。随机选取100个可视化。可视化的时候调用displayData(sel)函数。

          注意,这里data的维度m*n,n不是特征数。

Part 2a: Vectorize Logistic Regression

          使用函数 lrCostFunction(theta, X, y, lambda) 计算logistic regression with  regularization 的cost 和 gradient。

          注意,lrCostFunction()函数内并没有加一项。

Part 2b: One-vs-All Training 

        调用fmincg()函数,不过没有看懂这个函数,,,函数返回每一个class训练好的theta,

Part 3: Predict for One-Vs-All

        使用得到的theta 来进行预测,

       注意, [M,I] = max(___) 查找 最大值,并在输出向量 I 中返回这些索引。输出M是value。

      使用函数 mean(double(pred == y)) * 100); 计算精确度。

part 2 code  

2 Neural Networks

part 1 algorithm 

Part 0 Initialization & Setup the parameters you will use for this part of the exercise

Part 1: Loading and Visualizing Data

           这部分和多分类的一样

Part 2: Loading Parameters

          加载已经训练好的theta参数,

Part 3: Implement Predict 

           训练好了模型以后得到了theta的值,可以进行预测了。

           调用函数predict() 进行预测,函数中需要进行theta与X的计算,注意这里是神经网络的结构。

           得到结果,求取最大值,[a, p] = max(pp, [], 2);

           注意,M = max(A,[],dim) 沿着维度 dim 返回最大元素。例如,如果 A 为矩阵,则 max(A,[],2) 是列向量,选出每行的最大值。

           计算准确度。mean(double(pred == y)) * 100);

part 4 随机选取一张图片,可视化,并用训练后的theta进行预测,输出预测结果

part 2 code  

猜你喜欢

转载自blog.csdn.net/qq1376725255/article/details/82802295