在计算自己编写的随机梯度下降和老师编写的随机梯度下降的效率时,我发现了一个问题。
我设计了一个for循环,来测试多次准确度
#准备工作
from nike.LinearRegression import LinearRegression
from nike.LinearRegression import LinearRegression2
lin_reg1 = LinearRegression()
lin_reg2 = LinearRegression2()
模块一
t=0
for i in range(10):
lin_reg1.fit_sgd(X_train_standand,y_train,n_iters=5)
t=lin_reg1.score(X_test_standand, y_test)+t
t
#-126.284953840674
模块二
t=0
for i in range(10):
lin_reg2.fit_sgd(X_train_standand,y_train,n_iters=5)
t=lin_reg2.score(X_test_standand, y_test)+t
t
#6.513431041464907
# 随机化系数
initial_theta = np.array(np.random.randint(1, 100, X_b.shape[1]))
initial_theta = np.random.randn(X_b.shape[1])
二者之间差别很大的地方在,我的theta随机在1-100之间,而老师的theta随机在0-1之间,我认真思考了我认为可能是有些theta,随机到100,而正确值为1,需要运行很多次,才能接近准确的值,但我的n_iters没有到位,导致准确率差强人意,所以在提高循环次数后更加地稳定了。