線性回歸計算回歸係數

2021-09-24 23:10:56 字數 1964 閱讀 3978

"""

線性回歸:

優點:結果易於理解,計算上不複雜

缺點:對非線性的資料擬合不好

適用資料型別:數值型和標稱型資料

標稱型資料:一般在有限的資料中取,而且只存在「是」和「否」兩種不同的結果(一般用於分類)

數值型資料:可以在無線的資料中取,而且數值比較具體化,例如4.02, 6.23這種值(一般用於回歸分析)

回歸的一般方法:

1收集資料:採用任意方法收集資料

2準備資料:回歸需要數值型資料,標稱型資料將被轉換成二值型資料

3分析資料:會出資料的視覺化二維圖將有助於對資料做出理解和分析,在採用縮減法求得新回歸係數之後,可以將新擬合線繪在圖上作為對比

4訓練演算法:找到回歸係數

5測試演算法:使用r^2或者**值和資料的擬合度,來分析模型的效果

6使用演算法:使用回歸,可以在給定輸入的時候**出乙個數值,這是對分類方法的提公升,因為這樣可以**連續型資料而不僅僅是離散的類別標籤

"""from numpy import *

def loaddataset(filename):

"""該函式開啟乙個用tab鍵分隔的文字檔案,這裡仍然預設檔案每行的最後乙個值是目標值

readline():該方法每次讀取一行內容,所以讀取時占用記憶體小,比較適合大檔案,該方法返回乙個字串物件

readlines():該方法讀取整個檔案的所有行,儲存在乙個列表變數中,每行作為乙個元素,但讀取大檔案比較占用記憶體

該函式第乙個返回值返回列表中的自變數第一列和第二列, 第二個返回值返回結果,最後一列

:param filename:

:return:

"""numfeat = len(open(filename).readline().split("\t")) - 1

datamat =

labelmat =

fr = open(filename)

for line in fr.readlines(): # readlines()讀取整個檔案儲存在列表變數中

linearr =

curline = line.strip().split("\t") # strip()返回移除字串頭尾制定的字元生成的新字串, split():通過指定分隔符對字串進行切片 curline:每一行元素切分成的列表

for i in range(numfeat):

return datamat, labelmat

def standregres(xarr, yarr):

"""該函式用來計算最佳擬合直線,函式首先讀入x和y,並將他們儲存到矩陣中,然後計算x的轉置與x的乘積

然後判斷他的行列式是否為零,如果行列式為零,那麼計算逆矩陣就會出現錯誤numpy提供乙個線性代數

的庫linalg,可以通過linalg.det()來計算行列式,最後,如果行列式非零,計算並返回w

:param xarr:

:param yarr:

:return:

"""xmat = mat(xarr) # 列表型別轉換為矩陣型別

ymat = mat(yarr).t

xtx = xmat.t * xmat # 求x的轉置與x相乘的結果

# 判斷矩陣的行列式是否為零,如果為零,則無法計算逆矩陣

if linalg.det(xtx) == 0.0:

print("this matrix is singular, cannot do inverse")

return

ws = xtx.i * (xmat.t * ymat) # xtx.i 為xtx的逆,計算得出未知量的係數

return ws

if __name__ == '__main__':

xarr, yarr = loaddataset("ex0.txt")

ws = standregres(xarr, yarr)

print(ws)

Logistics回歸係數解讀

logistic回歸雖然名字叫 回歸 但卻是一種分類學習方法。使用場景大概有兩個 第一用來 第二尋找因變數的影響因素。線性回歸和logistic回歸都是廣義線性模型的特例。假設有乙個因變數y和一組自變數x1,x2,x3,xn,其中y為連續變數,我們可以擬合乙個線性方程 y 0 1x1 2x2 3x3...

線性回歸(標準回歸)

今天我們來討論機器學習的另乙個領域 首先我們來討論利用線性回歸來 數值型資料。利用線性回歸進行 的過程就是求解回歸係數的過程,求出回歸係數後進行係數與特徵值乘積求和即可,這裡我們使用最小二乘法進行求解 ex0.txt 提取碼 dbe2 def loaddataset filename numfeat...

回歸學習 線性回歸

匯入資料 from sklearn.datasets import load boston boston load boston print boston.descr 資料分割 from sklearn.cross validation import train test split import ...