Heim  >  Artikel  >  Backend-Entwicklung  >  python实现梯度下降代码问题?

python实现梯度下降代码问题?

WBOY
WBOYOriginal
2016-06-06 16:22:361656Durchsuche

回复内容:

1. epsilon = 0.0001在此段代码中的作用是什么?在Minimize(Jtheta)以及Cost Function的公式用,都没有看到一个叫epsilon标识

其实是有的,就在倒数第5、6行:
<code class="language-python"><span class="k">if</span> <span class="nb">abs</span><span class="p">(</span><span class="n">error1</span><span class="o">-</span><span class="n">error0</span><span class="p">)</span> <span class="o"> <span class="n">epsilon</span><span class="p">:</span>
    <span class="k">break</span>
</span></code>
epsilon就是收敛条件

theta012就是得出的最优(且让我这么称)拟合曲线多项式的各个系数,然并卵,因为你这个数据是自己臆想出来的,得出的结果价值不大

我这里也有一份梯度下滑的实现,你可以看看
github.com/racaljk/pyan 如一楼所言,这段代码存在很多问题。

『Data Science from Scratch』一书专门列了一章书来讲解Python实现梯度下降和随机梯度下降算法,非常值得学习。

我在个人博客中写了这一章的学习笔记,增加了一些理论解释,仅供参考。
参考链接:梯度下降算法的Python实现 epsilon是你设置的用于结束迭代的误差阈值。

theta是用于带到拟合的原函数里面做测试用的,梯度下降一般有两个数据集:训练集和测试集。

前面K神已经指出来了,这是初学者自己写的,缺陷很大。实现上的缺陷K神已经提到了,我提两个其他的 1 没有用矩阵写。使用for循环的效率是比较低的,而且使用矩阵更清晰明了。 2 自造的数据集,最后不一定收敛。

要学习的话建议去找一门公开课,想看代码的话可以去github上找,看这种错误很多的代码是学不到东西的, epislon跳出循环标志,判断是否收敛
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn