[吴恩达机器学习]6·逻辑回归之多分类(数字识别)
吴恩达机器学习系列课程:https://www.bilibili.com/video/BV164411b7dx
数据读入与显示
给定的数据是 .mat
格式的,使用 scipy
的 loadmat
方法可以读入数据:
1 |
|
1 |
|
文件中一共有 \(5000\) 个数据,每个数据的输入是一个长为 \(400\) 的向量,由 \(20\times 20\) 的灰度矩阵压缩而来;输出是一个数字,表示这个数字是多少。
注意:由于
MATLAB
或者Octave
的一些原因,\(0\) 被标记为了 \(10\),我们用python
时可以把 \(10\) 换回成 \(0\);另外,数据是按列压缩的,还原回 \(20\times20\) 的矩阵后其实转置了一下,这里提前转置回去方便后续编码。
1 |
|
现在我们随机挑选 \(100\) 个图像显示出来:
1 |
|
多分类
这里采用「一对多」方式完成多分类,也就是说对每一类单独训练,最后挑选概率最大的那一类视为结果。
沿用上一节写好的矩阵形式的正则化逻辑回归代码,进行 \(10\) 次分类即可。
记得给 \(X\) 每一行前加上一个 \(1\).
1 |
|
现在 theta.txt
中装入了我们训练好的 Theta,接下来我们就可以用它来进行预测了:
1 |
|
直接计算每个数字的准确率以及总准确率(其实这样不严谨,详见第九篇),得到结果:
数字 | 准确率 |
---|---|
0 | 99.0% |
1 | 97.8% |
2 | 88.2% |
3 | 90.0% |
4 | 93.4% |
5 | 89.4% |
6 | 97.0% |
7 | 93.8% |
8 | 91.4% |
9 | 91.2% |
Total | 93.12% |
[吴恩达机器学习]6·逻辑回归之多分类(数字识别)
https://xyfjason.github.io/blog-main/2020/12/28/吴恩达机器学习-6·逻辑回归之多分类(数字识别)/