我是机器学习的初学者。我试图用Python在波士顿房价数据上实现批量随机梯度下降算法。我认为我正确地遵循了线性回归的算法,但我得到了非常大的权重向量值&;拦截 有人能帮我吗
import numpy as np
r=1
diso=0.0
intercep=0
x=np.random.normal(0.0,1.0,13)
for c in range(50):
sums2=0
batch=traindat.sample(n = 100)
batch1=batch.drop('PRICE', axis = 1)
batch2=batch['PRICE']
predtargs=(batch1.iloc[:,0:13].dot(x)+intercep)
listofsums_weights=[]
for j in batch1.reset_index(drop=True):
sums=0
for i in range(len(predtargs)):
sums=sums+(-2*(batch2.reset_index(drop=True).get(i)-((predtargs.reset_index(drop=True).get(i))))*batch1.reset_index(drop=True)[j][i])
listofsums_weights.append(sums)
for i in range(len(predtargs)):
sums2=sums2+(-2*(batch2.reset_index(drop=True).get(i)-((predtargs.reset_index(drop=True).get(i)))))
newx=[]
intercep=intercep-r*sums2
for m in range(len(x)):
newx.append(x[m]-(r*listofsums_weights[m]))
r=r/2
disn=np.linalg.norm(np.array(x)-np.array(newx))
x=newx
if int((diso))==int((disn)):
break
diso=disn
print('Final weight vector')
print(x)
print('Final intercept')
print(intercep)
这里的“r”是学习率。所有特征值都是标准化的。权重向量之间的欧氏距离正在减小,但单个值非常高
目前没有回答
相关问题 更多 >
编程相关推荐