我是数据科学的新手,我想学习线性回归,所以我从头开始编写线性回归并执行梯度下降以找到最好的和值使用教程。一切都很好,我找到了最好的,值,我绘制了最佳拟合线(下图)。
还有我用来找到的梯度下降代码,值低于。
def step_gradient_descent(data,m,b,learning_rate=0.0001):
b_gradient= m_gradient = 0
N=float(len(data))
for i in range(len(data)):
[x,y]=data[i]
y_=(m*x)+b
m_gradient+= - (2/N)*(x*(y-y_))
b_gradient+= -(2/N)*(y-y_)
#print("m ={}, b ={}".format(m_gradient,b_gradient))
m_new = m-(learning_rate*m_gradient)
b_new = b-(learning_rate*b_gradient)
return (m_new,b_new)
def perform_gradient_descent(data,m,b,lr=0.0001,epochs=1000):
m_array=b_array=[]
for i in range(epochs):
if(i % 100 == 0 ):
print("Running {}/{}".format(i,epochs))
(m,b) = step_gradient_descent(data,m,b,lr)
return (m,b,m_array,b_array)
然后我执行了特征标准化/标准化,以下
def featureNormalize(data):
mean = np.mean(data , axis=0 )
std = np.std(data , axis=0 )
norm = ( data - mean ) / std
return norm
所以我试图像以前一样恢复之前的最佳拟合线的是
- 改变学习率()
- 变化的时代()
没有成功。所以我的理解是特征归一化/标准化不应该对梯度下降产生任何影响,但在这种情况下并没有发生。只是想知道我的情况发生了什么。
链接到我的笔记本
提前致谢。


