换了X的值或改一下参数,就会出错。
然后一步步琢磨了下,
theta = theta + np.sum(alpha*(Y-dot(X,theta)) "*X.reshpae" )/3.
实在想不出引号部分有什么用,感觉是多余的,直接删了,就没问题了。
theta = theta + np.sum(alpha*(Y-dot(X,theta)))/3.
这样,随便改X,X里数的个数,参数,都没有问题。记得把‘3.’改成X的数的个数就行。
其实‘/3.’不写也行,会减慢收敛速度‘3’倍,以及得到的值可能是实际参数的近似值
然后一步步琢磨了下,
theta = theta + np.sum(alpha*(Y-dot(X,theta)) "*X.reshpae" )/3.
实在想不出引号部分有什么用,感觉是多余的,直接删了,就没问题了。
theta = theta + np.sum(alpha*(Y-dot(X,theta)))/3.
这样,随便改X,X里数的个数,参数,都没有问题。记得把‘3.’改成X的数的个数就行。
其实‘/3.’不写也行,会减慢收敛速度‘3’倍,以及得到的值可能是实际参数的近似值
2018-08-26
代码更新:Python3.2.6
theat=np.full((4,1),1.,dtype=float) #用 1.0去填充一个4*1的array,类型指定float
alpha=0.1
x0=X.iloc[:,0].values.reshape(-1,1) #-1进行占位,代表有多少个算多少个,例如是150,则-1代表150,其它同理
x1=X.iloc[:,1].values.reshape(-1,1)
x2=X.iloc[:,2].values.reshape(-1,1)
x3=X.iloc[:,3].values.reshape(-1,1)
print(x3[0:6,:])
theat=np.full((4,1),1.,dtype=float) #用 1.0去填充一个4*1的array,类型指定float
alpha=0.1
x0=X.iloc[:,0].values.reshape(-1,1) #-1进行占位,代表有多少个算多少个,例如是150,则-1代表150,其它同理
x1=X.iloc[:,1].values.reshape(-1,1)
x2=X.iloc[:,2].values.reshape(-1,1)
x3=X.iloc[:,3].values.reshape(-1,1)
print(x3[0:6,:])
2018-08-24