已采納回答 / Beb
個人認為講師說得有一點問題,不瞞秩或者不正定的時候,存在多個解,并不是沒有解,即解不唯一。此時選擇哪一個解作為最后模型的參數呢?一是通過既定的選擇便好來決定;二是采用梯度下降來近似。我覺得性能問題倒不是主要原因,主要原因是因為存在多個解(至于為什么你可以查查矩陣相關的資料)。
2018-11-25
換了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