手写数字的识别是机器学习的一个十分经典的问题,也是逻辑回归进行多类分类的一个典型案例。
开发环境
分别使用python和matlab编程实现,下面以python为例。
数据准备
数据来自吴恩达机器学习课程,共5000张图片,大小均为20*20,在此下载。
数据导入
# 导入数据
print("loading data...")
data = scio.loadmat("ex3data1.mat")
x = data['X']
y = data['y']
数据展示
随机挑选100张图片进行展示:
# 训练样本数
m = x.shape[0]
# 选取100个样本进行数据展示,洗牌操作
arr = np.arange(m)
np.random.shuffle(arr)
disp = x[arr[0:100], :]
# 展示数据
display_data(disp)
def display_data(x):
"""
:param x: 输入的照片
:return:
"""
# 设置单个图片展示宽度及高度
width = round(math.sqrt(x.shape[1]))
m, n = x.shape
height = round(n / width)
# 设置横向、纵向展示个数
raw_num = math.floor(math.sqrt(x.shape[