使用python实现演算法算法的方法

  介绍

本篇文章给大家分享的是有关使用python实现演算法算法的方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

代码

& # 39; & # 39; & # 39;   数据集:Mnist   训练集数量:60000(实际使用:10000)   测试集数量:10000(实际使用:1000)   层数:40   ------------------------------   运行结果:   正确率:97%   运行时长:65米   & # 39;& # 39;& # 39;      导入的时间   进口numpy np         def loadData(文件名):   & # 39;& # 39;& # 39;   加载文件   :param文件名:要加载的文件路径   返回:数据集和标签集   & # 39;& # 39;& # 39;   #存放数据及标记   dataArr=[]   labelArr=[]   #读取文件   fr=开放(文件名)   #遍历文件中的每一行   线的fr.readlines ():   #获取当前行,并按”、“切割成字段放入列表中   #地带:去掉每行字符串首尾指定的字符(默认空格或换行符)   #分裂:按照指定的字符将字符串切割成每个字段,返回列表形式   curLine=line.strip () .split (& # 39; & # 39;)   #将每行中除标记外的数据放入数据集中(curLine[0]为标记信息)   #在放入的同时将原先字符串形式的数据转换为整型   #此外将数据进行了二值化处理,大于128的转换成1,小于的转换成0,方便后续计算   dataArr.append ([int (int (num)比;128)的num curLine [1:]])   #将标记信息放入标记集中   #放入的同时将标记转换为整型      #转换成二分类任务   #标签0设置为1,反之为1   如果int (curLine [0])==0:   labelArr.append (1)   其他:   labelArr.append (1)   #返回数据集和标记   返回dataArr labelArr         def calc_e_Gx (trainDataArr trainLabelArr n div,规则,D):   & # 39;& # 39;& # 39;   计算分类错误率   :param trainDataArr:训练数据集数字   :param trainLabelArr:训练标签集数组   :param n:要操作的特征   :param div:划分点   :param规则:正反例标签   :param D:权值分布D   返回:预测结果,分类误差率   & # 39;& # 39;& # 39;   #初始化分类误差率为0   e=0   #将训练数据矩阵中特征为n的那一列单独剥出来做成数组。因为其他元素我们并不需要,   #直接对庞大的训练集进行操作的话会很慢   x=trainDataArr [: n]   #同样将标签也转换成数组格式,x和y的转换只是单纯为了提高运行速度   #测试过相对直接操作而言性能提升很大   y=trainLabelArr   预测=[]      #依据小于和大于的标签依据实际情况会不同,在这里直接进行设置   如果规则==& # 39;LisOne& # 39;:   L=1   H=1   其他:   L=1   H=1      #遍历所有样本的特征   因为我在范围(trainDataArr.shape [0]):   如果x[我]& lt;div:   #如果小于划分点,则预测为L   #如果设置小于div为1,那我么就是1,   #如果设置小于div为1,L就是1   predict.append(左)   #如果预测错误,分类错误率要加上该分错的样本的权值(8.1式)   如果y[我]!=L:   e +=D[我]   elif x[我]祝辞=div:   #与上面思想一样   predict.append (H)   如果y[我]!=H:   e +=D[我]   #返回预测结果和分类错误率e   #预测结果其实是为了后面做准备的,在算法8.1第四步式8.4中exp内部有个Gx,要用在那个地方   #以此来更新新的D   返回np.array(预测),e         def createSigleBoostingTree (trainDataArr trainLabelArr D):   & # 39;& # 39;& # 39;   创建单层提升树   :param trainDataArr:训练数据集数组   :param trainLabelArr:训练标签集数组   8.1:param D:算法中的D   返回:创建的单层提升树   & # 39;& # 39;& # 39;      #获得样本数目及特征数量   m, n=np.shape (trainDataArr)   #单层树的字典,用于存放当前层提升树的参数   #也可以认为该字典代表了一层提升树   sigleBoostTree={}   #初始化分类误差率,分类误差率在算法8.1步骤(2)(b)有提到   #误差率最高也只能100%,因此初始化为1   sigleBoostTree [& # 39; e # 39;]=1      #对每一个特征进行遍历,寻找用于划分的最合适的特征   因为我在范围(n):   #因为特征已经经过二值化,只能为0和1,因此分切分时分为-0.5,0.5,1.5三挡进行切割   在div (-0.5, 0.5, 1.5):   #在单个特征内对正反例进行划分时,有两种情况:   #可能是小于某值的为1,大于某值得为1,也可能小于某值得是1,反之为1   #因此在寻找最佳提升树的同时对于两种情况也需要遍历运行   # LisOne:低>以上就是使用python实现演算法算法的方法,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

使用python实现演算法算法的方法