2.7 程序示例--多分类问题-机器学习笔记-斯坦福吴恩达教授
程序示例–多分类问题
我们采用 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 程序示例--多分类问题-机器学习笔记-斯坦福吴恩达教授相关推荐
- 3.12 程序示例--多分类问题-机器学习笔记-斯坦福吴恩达教授
多分类问题 我们手上包含有手写字符的数据集,该数据集来自斯坦福机器学习的课后作业,每个字符图片大小为 20×20 ,总的样本规模为 5000×400 , 我们的神经网络设计如下,包含 1 个隐含层,隐 ...
- 5.11 程序示例--垃圾邮件检测-机器学习笔记-斯坦福吴恩达教授
程序示例–垃圾邮件检测 邮件内容的预处理 下面展示了一封常见的 email,邮件内容包含了一个 URL (http://www.rackspace.com/),一个邮箱地址(groupname-uns ...
- 2.5 程序示例--非线性决策边界-机器学习笔记-斯坦福吴恩达教授
程序示例–非线性决策边界 我们首先对数据进行了多项式拟合,再分别使用 λ=0,λ=1,λ=100λ=0,λ=1,λ=100λ=0,λ=1,λ=100 的批量梯度下降法(sgd)完成了训练,获得了非线性 ...
- 2.4 程序示例--线性决策边界-机器学习笔记-斯坦福吴恩达教授
程序示例–线性决策边界 回归模块 在逻辑回归模块 logical_regression.py 中,实现了批量梯度下降法(bgd)以及随机梯度下降法(sgd),同时,支持正规化方程 # coding: ...
- 1.9 程序示例--局部加权线性回归-机器学习笔记-斯坦福吴恩达教授
程序示例–局部加权线性回归 现在,我们在回归中又添加了 JLwr() 方法用于计算预测代价,以及 lwr() 方法用于完成局部加权线性回归: # coding: utf-8 # linear_regr ...
- 6.8 程序示例--二分 K-Means-机器学习笔记-斯坦福吴恩达教授
程序示例–二分 K-Means 仍然是在 kmeans.py 中,我们又添加了二分 K-Means 算法: # coding: utf-8 # kmeans/kmeans.py# ... def bi ...
- 3.1 再论 0/1 分类问题-机器学习笔记-斯坦福吴恩达教授
再论 0/1 分类问题 在逻辑回归一章中,我们讨论了 0/1 分类问题,并且知道,通过对特征进行多项式展开,可以让逻辑回归支持非线性的分类问题.假定我们现在有 nnn 维特征,需要进行非线性分类,采用 ...
- 3.9 神经网络解决多分类问题-机器学习笔记-斯坦福吴恩达教授
神经网络解决多分类问题 假定我们需要将图像分为四类: 行人图像 车辆图像 摩托车图像 卡车图像 这是一个多分类问题,由于图像特征较多,因此我们可以考虑设计含有多个隐含层的神经网络来完成特征优化(扩展) ...
- 2.6 多分类问题-机器学习笔记-斯坦福吴恩达教授
多分类问题 通常采用 One-vs-All,亦称 One-vs-the Rest 方法来实现多分类,其将多分类问题转化为了多次二分类问题.假定完成 KKK 个分类,One-vs-All 的执行过程如下 ...
最新文章
- 自动化测试和测试自动化的区别
- npm更改为淘宝镜像
- 解析word template返回使用的webservice WSDL和Operation
- designer一直未响应 qt_未雨绸缪及时清淤 曾是内涝重灾区 这次涵洞未积水
- 一晚浓浓的程序员鸡汤,先干为敬
- 30 CO配置-控制-产品成本控制-成本对象控制-期末结算-定义更新
- redis日志_面试题之Redis如何保证系统宕机数据不会丢失?
- OpenMP模式下多线程文件操作 (转)
- 从零基础入门Tensorflow2.0 ----三、9.tf.function
- 疫情下的思考:全球疫情带来的危机与机遇
- 新书上市|这套北大数学系青睐的数学科普书,又添新成员
- Questa sim使用常见报错汇总
- 【JAVA】JSR、JCP是什么?
- [7.19NOIP模拟测试6]失恋三连(雾 题解
- 有钱就能赞助FIFA世界杯?NO!看雅迪电动车的全球征程
- Littlefs移植,FLASH用的是W25Q32
- CSS的三种布局方式
- CAD批量打图精灵更新至9.5.3,支持使用Adobe PDF虚拟打印机以创建高质量的PDF文件。
- 徐无忌MySQL笔记:索引的使用规则
- Java之UML类图的六种关系