本次练习的任务是使用逻辑归回和神经网络进行识别手写数字(form 0 to 9, 自动手写数字问题已经应用非常广泛,比如邮编识别。
使用逻辑回归进行多分类分类
练习2 中的logistic 回归实现了二分类分类问题,现在将进行多分类,one vs all。
加载数据集
这次数据时MATLAB 的格式,使用Scipy.io.loadmat 进行加载。Scipy是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。它可用于计算Numpy矩阵,使Numpy和Scipy协同工作。
import numpy as np
import scipy.io
from scipy.io import loadmat
import matplotlib.pyplot as plt
import scipy.optimize as opt
data = scipy.io.loadmat('ex3data1.mat')
X = data['X']
y = data['y']
数据集共有5000个样本, 每个样本是20*20的灰度图像。
visuazing the data
随机展示100个图像
def display_data(sample_images):
fig, ax_array = plt.subplots(nrows=10, ncols=10, figsize&#