python如何实现物流分类算法

  介绍

小编给大家分享一下python如何实现物流分类算法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

最近在看吴恩达的机器学习课程,自己用python实现了其中的物流算法,并用梯度下降获取最优值。

物流分类是一个二分类问题,而我们的线性回归函数

 python如何实现物流分类算法

的取值在负无穷到正无穷之间,对于分类问题而言,我们希望假设函数的取值在0 ~ 1之间,因此物流函数的假设函数需要改造一下

 python如何实现物流分类算法

由上面的公式可以看的出,0 & lt;h (x) & lt;1,这样,我们可以以1/2为分界线

 python如何实现物流分类算法

成本函数可以这样定义

 python如何实现物流分类算法

其中,m是样本的数量,初始时θ可以随机给定一个初始值,算出一个初始的J(θ)值,再执行梯度下降算法迭代,直到达到最优值,我们知道,迭代的公式主要是每次减少一个偏导量

 python如何实现物流分类算法

如果将J(θ)代入化简之后,我们发现可以得到和线性回归相同的迭代函数

 python如何实现物流分类算法

按照这个迭代函数不断调整θ的值,直到两次J(θ)的值差值不超过某个极小的值之后,即认为已经达到最优解,这其实只是一个相对较优的解,并不是真正的最优解,其中,α是学习速率,学习速率越大,就能越快达到最优解,但是学习速率过大可能会让惩罚函数最终无法收敛,整个过程python的实现如下

import 数学      ALPHA  0.3=,   DIFF  0.00001=,         def 预测(θ,,数据):   时间=results 才能;[]   for 才能小姐:拷贝范围(0,,data.__len__ ()):   ,,,temp =0   ,,,for  j 拷贝范围(1,theta.__len__ ()):   ,,,,,temp  +=,θ[j],[我]*,数据(j 作用;1)   ,,,temp =, 1,/, (1, +, math.e  * *, (1, *, (temp  +,θ[0])))   ,,,results.append(临时)   return 才能结果         def 培训(training_data):   时间=size 才能;training_data.__len__ ()   时间=dimension 才能;training_data [0] .__len__ ()   时间=hxs 才能;[]   时间=theta 才能;[]   for 才能小姐:拷贝范围(0,维度):   ,,,theta.append (1)   initial 才能=0   for 才能小姐:拷贝范围(0,大小):   ,,,hx =,θ[0]   ,,,for  j 拷贝范围(1,尺寸):   ,,,,,hx  +=,θ[j], *, training_data[我][j]   ,,,hx =, 1,/, (1, +, math.e  * *, (1, *, hx))   ,,,hxs.append (hx)   ,,,initial  +=, (1, *, (training_data[我][0],*,math.log (hx), +,(1,安康;training_data[我][0]),*,math.log(1,安康;hx)))   initial 才能;/=,大小   iteration 才能=初始   initial 才能=0   counts 才能=1   while 才能;abs (iteration 安康;初始),祝辞,差异:   ,,,print(“第“,,,,“次迭代,,diff=?,, abs (iteration 安康;初始))   ,,,initial =,迭代   ,,,gap =0   ,,,for  j 拷贝范围(0,大小):   ,,,,,gap  +=,(本公司[j],安康;training_data [j] [0])   ,,,θ[0],=,θ[0],安康;ALPHA  *, gap /尺寸   ,,,for 小姐:拷贝范围(1,尺寸):   ,,,,,gap =0   ,,,,,for  j 拷贝范围(0,大小):   ,,,,,,,gap  +=,(本公司[j],安康;training_data [j] [0]), *, training_data [j][我]   ,,,,,θ[我],=,θ[我],安康;ALPHA  *, gap /尺寸   ,,,,,for  m 拷贝范围(0,大小):   ,,,,,,,hx =,θ[0]   ,,,,,,,for  j 拷贝范围(1,尺寸):   ,,,,,,,,,hx  +=,θ[j], *, training_data[我][j]   ,,,,,,,hx =, 1,/, (1, +, math.e  * *, (1, *, hx))   ,,,,,,,本公司[我],=hx   ,,,,,,,iteration  +=, 1, *, (training_data[我][0],*,math.log (hx), +,(1,安康;training_data[我][0]),*,math.log(1,安康;hx))   ,,,,,iteration /=,大小   ,,,counts  +=1   null   null   null   null   null   null   null   null   null   null   null

python如何实现物流分类算法