机器学习3 - 多类分类
问题描述
通过逻辑回归来进行手写数字识别(0-9)
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#通过scipy加载matlab型数据
from scipy.io import loadmat、
data = loadmat('ex3data1.mat')#该命令用于载入mat数据(mat数据是matlab格式)
data
data为字典型数据,输出结果如下:
{'__header__': b'MATLAB 5.0 MAT-file, Platform: GLNXA64, Created on: Sun Oct 16 13:09:09 2011', '__version__': '1.0', '__globals__': [], 'X': array([[0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], ..., [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.], [0., 0., 0., ..., 0., 0., 0.]]), 'y': array([[10], [10], [10], ..., [ 9], [ 9], [ 9]], dtype=uint8)}
data['X'].shape, data['y'].shape #查看数据维度
#((5000, 400), (5000, 1))
原始图像为20*20像素,因此可以得到400维向量特征是原始图像中每个像素的灰度强度
分析问题
将逻辑回归修改为完全向量化(没有for循环)。其优势为:简洁,可以利用线性代数优化,比循环代码快,在之前练习中已经实现
sigmoid函数
g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+e−z1
逻辑回归模型的假设函数:
h θ ( x ) = 1 1 + e − θ T X h_\theta(x)=\frac{1}{1+e^{-\theta^TX}} hθ(x)=1+e−θ