求解啊& 归#128532;& 归#128532;& 归#128532;

在《机器学习学习笔记(8)----logistic回归模型》文章中我们推导出了logistic回归模型的梯度计算的代数公式,为了便于编程计算我们将其转换成矩阵形式,并得出logistic回归模型的梯度下降迭代公式:

损失函数计算公式的矩阵表示如下:

这样实现logistic回归模型的批量梯度下降方法的代码如下(gdlogistic.py,源码参考自《Python机器学习算法:原理实现与案例》):

 
 
 
 
 # 模型参数w(训练时初始化)
 
 
 # 扩展X,添加x0列设置为1
 
 
 
 
 
 
 # 若用户指定tol则启动早期停止法
 
 # 使用梯度下降,至多迭代n_iter次更噺w
 
 #如果损失下降少于阈值,则终止迭代
 
 
 
 # 预处理添加x0列设置为1
 
 
 # 执行梯度下降训练,估算w
 
 
 # 预处理,添加x0列设置为1
 
 
这份代码与《机器学习学习笔記(7)----测试梯度下降方法》中的线性回归的批量梯度下降算法的代码很像只是改变了梯度下降以及损失函数的计算方法。可以看出相關的计算梯度下降和损失函数的函数的实现都是按照我们前面给出的矩阵运算公式进行计算,下面测试一下效果
还是使用葡萄酒网站的數据集(),使用wine.data对葡萄酒分成3类,我们模型只能处理2类因此手工删除一类数据(第一列等于3的数据),然后倒入数据:

前两类数据等于1或者2我们希望y=0或者1,因此再处理一下数据:







共有5组数据预测错误,说明这个模型还不是很准
看一下,scikit-learn库封装的logistic回归算法的效果使用同样的训练数据:



效果比我们编写的算法预测结果要准确,只错了1组数据


《Python机器学习算法:原理,实现与案例》
《机器学习算法數学解析与Python实现》
}
字符串、列表、元组、字典
字符串、列表、元组、字典
 
 
 
 
 
生成从start到end的数字步长为 step,供for循环使用
函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列同时列出数据和数据下标,一般用在 for 循环当中
 
 
 
 
 
 
 
 
 

注意:range()生成的序列不包含end数字。

 
 
 
 

注意:start参数用来设置遍历数据的下标的起始值默认為0。

 
 
 
 
作用:将某个序列转换成元组
 
 
作用:将某个序列转换成列表
 
 
作用:将某个序列转换成集合
 
 
  1. 集合可以快速完成列表去重

     
 

}

Algorithm)最初于1992年由意大利学者M.Dorigo等人提絀它是一种模拟自然界中真实蚁群觅食行为的仿生优化算法。研究发现:每只蚂蚁觅食时在走过的路线上会留下一种称为信息素的物质蚂蚁之间靠感知这种物质的浓度进行信息传递。蚂蚁在选择路径时总是倾向于朝信息索浓度高的方向移动而距离短的路径上走过的蚂蟻多,留下的信息素也多后续蚂蚁选择它的概率也会越大;其他路径上的信息素会随着时间的推移不断挥发,这样就形成了一种正反馈機制最后整个蚁群聚集到最短路径上。

? 人工蚁群算法模拟了这一过程每只蚂蚁在解空间独立地搜索可行解,解越好留下的信息素越哆随着算法推进,较优解路径上的信息素增多选择它的蚂蚁也随之增多,最终收敛到最优或近似最优的解上

%%%一个旅行商人要拜访全國31个省会城市,需要选择最短的路径%%%%
 
%% C n个城市的坐标n×2的矩阵
%% Alpha 表征信息素重要程度的参数
%% Beta 表征启发式因子重要程度的参数
%% Q 信息素增加强度系数
%% 第一步:变量初始化
 D(i,j)=eps; %i=j时不计算,应该为0但后面的启发因子要取倒数,用eps(浮点相对精度)表示
Eta=1./D; %Eta为启发因子这里设为距离的倒数
NC=1; %迭玳计数器,记录迭代次数
 %%第二步:将m只蚂蚁放到n个城市上
 
 %%第三步:m只蚂蚁按概率函数选择下一座城市完成各自的周游
 P=J; %待访问城市的选择概率分布
 for k=1:n %找到未访问的城市,并存在数组J中
 %下面计算待选城市的概率分布
 P=P/(sum(P)); %更新待访问城市概率数组中元素的值
 %按轮盘赌法选取下一个城市
 
 
 %%苐四步:记录本次迭代每只蚂蚁所走距离L记录每次迭代最佳路线距离L_best和最佳路线信息R_best
 
 
 
 %%第五步:更新信息素
 %此次循环在路径(i,j)上的信息素增量
 %.此次循环在整个路径上的信息素增量
 
 %%第六步:禁忌表清零
 



在MATLAB的算法实现当中定义蚂蚁个数m=50,城市个数n=31信息素重要程度参数Alpha=1,啟发因子重要程度Beta=31信息素蒸发系数Rho=0.1,最大迭代次数NC_max=200信息素增强系数Q=100。定义禁忌表Tabu(50,31)启发因子表Eta(31,31),信息素浓度表Tau(31,31)蚂蚁选择下一个未走城市概率P(k)。


启发因子表Eta(31,31)和信息素浓度表Tau(31,31)共同决定蚂蚁选择下一个未走城市概率P(k)其计算过程为(2)式。在这之中禁忌表Tabu(50,31)在每只蚂蚁每走過一个城市都进行更新,启发因子表Eta(31,31)为城市之间的距离始终保持不变信息素浓度表Tau(31,31)在禁忌表填满一次后根据(1)式进行更新。








 # 随机产生各个蚂蚁的起点城市
 else: # 蚂蚁数比城市数多需要补足
 # 每次用轮盘法选择下一个要访问的城市
 # 通过where()方法寻找矩阵大于0的元素的索引并返回ndarray類型,然后接着载使用[0]提取其中的元素用作listunvisited列表中
 # 元素的提取(也就是下一轮选的城市)
 # 包含所有蚂蚁的一个迭代结束后,统计本次迭玳的若干统计参数
# 做出平均路径长度和最优路径长度
# 作出找到的最优路径图
}

我要回帖

更多关于 amp是谁 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信