程序示例–多分类问题

我们采用 One-vs-All 方法来进行多分类,在原有的逻辑回归模块中添加 One-vs-All 的训练以及预测方法:

# coding: utf-8
# logical_regression/logical_regression.py# ...def oneVsAll(X, y, options):"""One-vs-All 多分类Args:X 样本y 标签options 训练配置Returns:Thetas 权值矩阵"""# 类型数classes = set(np.ravel(y))# 决策边界矩阵Thetas = np.zeros((len(classes), X.shape[1]))# 一次选定每种分类对应的样本为正样本,其他样本标识为负样本,进行逻辑回归for idx, c in enumerate(classes):newY = np.zeros(y.shape)newY[np.where(y == c)] = 1result, timeConsumed = gradient(X, newY, options)thetas,errors,iterations = resultThetas[idx] = thetas[-1].ravel()return Thetasdef predictOneVsAll(X,Thetas):"""One-vs-All下的多分类预测Args:X 样本Thetas 权值矩阵Returns:H 预测结果"""H = sigmoid(Thetas * X.T)return H

测试程序如下,我们对手写字符集进行了多分类,并统计了训练精度:

# coding: utf-8
# logical_regression/test_onevsall.py
"""OneVsAll 多分类测试
"""
import numpy as np
import logical_regression as regression
from scipy.io import loadmatif __name__ == "__main__":data = loadmat('data/ex3data1.mat')X = np.mat(data['X'])y = np.mat(data['y'])# 为X添加偏置X = np.append(np.ones((X.shape[0], 1)), X, axis=1)# 采用批量梯度下降法options = {'rate': 0.1,'epsilon': 0.1,'maxLoop': 5000,'method': 'bgd'}# 训练Thetas = regression.oneVsAll(X,y,options)# 预测H = regression.predictOneVsAll(X, Thetas)pred = np.argmax(H,axis=0)+1# 计算准确率print 'Training accuracy is: %.2f%'%(np.mean(pred == y.ravel())*100)

程序运行结果如下:

Training accuracy is: 89.26%

2.7 程序示例--多分类问题-机器学习笔记-斯坦福吴恩达教授相关推荐

  1. 3.12 程序示例--多分类问题-机器学习笔记-斯坦福吴恩达教授

    多分类问题 我们手上包含有手写字符的数据集,该数据集来自斯坦福机器学习的课后作业,每个字符图片大小为 20×20 ,总的样本规模为 5000×400 , 我们的神经网络设计如下,包含 1 个隐含层,隐 ...

  2. 5.11 程序示例--垃圾邮件检测-机器学习笔记-斯坦福吴恩达教授

    程序示例–垃圾邮件检测 邮件内容的预处理 下面展示了一封常见的 email,邮件内容包含了一个 URL (http://www.rackspace.com/),一个邮箱地址(groupname-uns ...

  3. 2.5 程序示例--非线性决策边界-机器学习笔记-斯坦福吴恩达教授

    程序示例–非线性决策边界 我们首先对数据进行了多项式拟合,再分别使用 λ=0,λ=1,λ=100λ=0,λ=1,λ=100λ=0,λ=1,λ=100 的批量梯度下降法(sgd)完成了训练,获得了非线性 ...

  4. 2.4 程序示例--线性决策边界-机器学习笔记-斯坦福吴恩达教授

    程序示例–线性决策边界 回归模块 在逻辑回归模块 logical_regression.py 中,实现了批量梯度下降法(bgd)以及随机梯度下降法(sgd),同时,支持正规化方程 # coding: ...

  5. 1.9 程序示例--局部加权线性回归-机器学习笔记-斯坦福吴恩达教授

    程序示例–局部加权线性回归 现在,我们在回归中又添加了 JLwr() 方法用于计算预测代价,以及 lwr() 方法用于完成局部加权线性回归: # coding: utf-8 # linear_regr ...

  6. 6.8 程序示例--二分 K-Means-机器学习笔记-斯坦福吴恩达教授

    程序示例–二分 K-Means 仍然是在 kmeans.py 中,我们又添加了二分 K-Means 算法: # coding: utf-8 # kmeans/kmeans.py# ... def bi ...

  7. 3.1 再论 0/1 分类问题-机器学习笔记-斯坦福吴恩达教授

    再论 0/1 分类问题 在逻辑回归一章中,我们讨论了 0/1 分类问题,并且知道,通过对特征进行多项式展开,可以让逻辑回归支持非线性的分类问题.假定我们现在有 nnn 维特征,需要进行非线性分类,采用 ...

  8. 3.9 神经网络解决多分类问题-机器学习笔记-斯坦福吴恩达教授

    神经网络解决多分类问题 假定我们需要将图像分为四类: 行人图像 车辆图像 摩托车图像 卡车图像 这是一个多分类问题,由于图像特征较多,因此我们可以考虑设计含有多个隐含层的神经网络来完成特征优化(扩展) ...

  9. 2.6 多分类问题-机器学习笔记-斯坦福吴恩达教授

    多分类问题 通常采用 One-vs-All,亦称 One-vs-the Rest 方法来实现多分类,其将多分类问题转化为了多次二分类问题.假定完成 KKK 个分类,One-vs-All 的执行过程如下 ...

最新文章

  1. 自动化测试和测试自动化的区别
  2. npm更改为淘宝镜像
  3. 解析word template返回使用的webservice WSDL和Operation
  4. designer一直未响应 qt_未雨绸缪及时清淤 曾是内涝重灾区 这次涵洞未积水
  5. 一晚浓浓的程序员鸡汤,先干为敬
  6. 30 CO配置-控制-产品成本控制-成本对象控制-期末结算-定义更新
  7. redis日志_面试题之Redis如何保证系统宕机数据不会丢失?
  8. OpenMP模式下多线程文件操作 (转)
  9. 从零基础入门Tensorflow2.0 ----三、9.tf.function
  10. 疫情下的思考:全球疫情带来的危机与机遇
  11. 新书上市|这套北大数学系青睐的数学科普书,又添新成员
  12. Questa sim使用常见报错汇总
  13. 【JAVA】JSR、JCP是什么?
  14. [7.19NOIP模拟测试6]失恋三连(雾 题解
  15. 有钱就能赞助FIFA世界杯?NO!看雅迪电动车的全球征程
  16. Littlefs移植,FLASH用的是W25Q32
  17. CSS的三种布局方式
  18. CAD批量打图精灵更新至9.5.3,支持使用Adobe PDF虚拟打印机以创建高质量的PDF文件。
  19. 徐无忌MySQL笔记:索引的使用规则
  20. Java之UML类图的六种关系

热门文章

  1. 刷题总结——愤怒的小鸟(NOIPDAY2T3)
  2. Linux 文件大小 文件夹大小 磁盘大小
  3. 06:甲流疫情死亡率
  4. EJB(四)JPA 分布式事务处理
  5. 2012需要一种智慧
  6. JS,中文,未结束的字符常量
  7. UA MATH523A 实分析3 积分理论例题 一个测度与积分的综合计算题
  8. 模p加法和模p乘法学习
  9. Bing空间数据服务
  10. windows 内核情景分析