本次文章内容: Coursera吴恩达机器学习课程,第四周编程作业。编程语言是Matlab。
学习算法分两部分进行理解,第一部分是对算法结构进行口头综述,第二部分是代码。
在这个练习中,将实现‘一对多’逻辑回归和神经网络来识别手写数字。
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 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进行预测,输出预测结果
略