0
我是机器学习新手,我试图通过梯度下降对f(x)= kx进行线性回归。 而为什么梯度下降这种简单的线性回归工作?
d(f(x)-y)^2/dk
=2(f(x)-y) * d(kx-y)/dk
=2x(f(x)-y)
=2x(kx-y)
因此,通过k = k - rate * 2x(kx-y)
更新K,通过梯度下降。
而这正是它是怎么说的教科书上,所以我想这将工作:-(
from random import uniform
k,k0=uniform(-100,100),uniform(-100,100)
for _ in range(10):
x=uniform(-100,100)
k=k-0.01*x*(k*x-k0*x)
print k,k0
可悲的是,输出:在镦粗速度
-2639.75970458 -72.294275335
56444.9277867 -72.294275335
-350533.559366 -72.294275335
-315222.824967 -72.294275335
26481249.7869 -72.294275335
25795070.4808 -72.294275335
-329558179.012 -72.294275335
22212688252.9 -72.294275335
-2.2317104093e+11 -72.294275335
1.61788553661e+12 -72.294275335
k
偏离k0
:-(
我已经阅读了wiki,谷歌和这个页面右侧推荐的问题,但不知道:-(Tnanks很多
我看到unutbu已经很好地回答了你的问题,但我只想补充一点,这是对'种子()'随机数生成器非常有用。当数字不断变化时,试图调试使用随机数的程序可能会很烦人。 :)你可以提供'random.seed()'作为种子,例如数字或字符串;如果你省略了种子或者提供'None',那么它会以系统时间(这是默认种子)播种。 – 2014-09-20 11:26:41