我在波士顿房价数据库上用python实现随机梯度下降有什么问题?

2024-10-06 07:02:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我是机器学习的初学者。我试图用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”是学习率。所有特征值都是标准化的。权重向量之间的欧氏距离正在减小,但单个值非常高


Tags: intrueforgetindexnprangedrop