很久沒發部落格,因為實在寫不出有營養的東西,看到的數學公式又很難寫。。。做了乙個關於梯度下降的筆記,想用傳上來,萬惡的2m限制。。。
直接粘**吧:
#!/usr/bin/env python
from numpy import *
def createdataset():
#為**書寫方便第1維的1相當與自己新增的x0(線性方程中的常熟項)
datasetx = [[1,150,3],[1,200,5],[1,80,2],[1,90,2]];
datasety = [200,300,150,180];
return datasetx,datasety
def analisis(datasetx,datasety):
thita = ones((len(datasetx[0]),1),dtype='f4')#初始化線性方程引數
alpha = 0.00001 #步長設定
#將輸入list型別轉化為numpy中的矩陣型別方便計算
arr_x = mat(datasetx)
arr_y = mat(datasety).transpose()
#迭代次數
for i in range(100):
err = arr_x*thita-arr_y#1
print err
diff = (err.t*arr_x).transpose()#2
#1,2中的內容用向量的形式計算引數的變更
thita-=alpha*diff
return thita
跑一下,然後改變步長值再跑跑就能對這個演算法有一些認識了
貼一下**結果:
>>> granddes.analisis(datax,datay)
[[-46.]
[-94.]
[-67.]
[-87.]]
[[ 12.36542642]
[-16.17125142]
[-35.86673653]
[-51.97773612]]
[[ 25.76308608]
[ 1.69418383]
[-28.72001255]
[-43.93833482]]
[[ 28.83845687]
[ 5.7951231 ]
[-27.07936561]
[-42.09281242]]
[[ 29.54435444]
[ 6.73643327]
[-26.70263433]
[-41.66909003]]
[[ 29.7063446 ]
[ 6.95245743]
[-26.61603212]
[-41.57173872]]
[[ 29.74347699]
[ 7.0019871 ]
[-26.59603107]
[-41.54930818]]
[[ 29.75194883]
[ 7.01329875]
[-26.59131801]
[-41.54407537]]
[[ 29.75385475]
[ 7.01585484]
[-26.59010732]
[-41.54278243]]
[[ 29.75423992]
[ 7.01638305]
[-26.58970785]
[-41.54240203]]
[[ 29.75428534]
[ 7.01645827]
[-26.58948958]
[-41.54222548]]
[[ 29.75424135]
[ 7.01641428]
[-26.58931899]
[-41.54210258]]
[[ 29.75417948]
[ 7.01634645]
[-26.58915794]
[-41.5419904 ]]
[[ 29.75411761]
[ 7.01627862]
[-26.58899689]
[-41.54187822]]
[[ 29.75405574]
[ 7.01621079]
[-26.58883584]
[-41.54176605]]
[[ 29.75399387]
[ 7.01614296]
[-26.58867478]
[-41.54165387]]
[[ 29.753932 ]
[ 7.01607513]
[-26.58851373]
[-41.5415417 ]]
演算法最終會收斂(太長,不貼了)
下次想辦法用mathtype來打吧,沒有過程推導感覺渣渣的,下次來做svm的**。
線性回歸與梯度下降法
原文 最近在看斯坦福的 機器學習 的公開課,這個課程是2009年的,有點老了,不過講的還是很好的,廓清了一些我以前關於機器學習懵懂的地方。我的一位老師曾經說過 什麼叫理解?理解就是你能把同乙個事情用自己的語言表達出來,並且能讓別人聽得懂。本著這樣的原則,同時也為了證明自己是 理解 的,於是決定打算在...
20191008 線性回歸 梯度下降法
不斷的迭代,還是波士頓房價 獲取資料 資料清洗預處理 劃分資料集 特徵工程 預估器流程 coef intercept 模型評估 from sklearn.datasets import load boston from sklearn.model selection import train tes...
梯度下降法求解線性回歸
梯度下降法 英語 gradient descent 是乙個一階最優化演算法,通常也稱為最速下降法。要使用梯度下降法找到乙個函式的區域性極小值,必須向函式上當前點對應梯度 或者是近似梯度 的反方向的規定步長距離點進行迭代搜尋。如果相反地向梯度正方向迭代進行搜尋,則會接近函式的區域性極大值點 這個過程則...