欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python機(jī)器學(xué)習(xí)基礎(chǔ)線性回歸與嶺回歸算法詳解

 更新時(shí)間:2021年11月12日 14:38:38   作者:Swayzzu  
這篇文章主要為大家介紹了python機(jī)器學(xué)習(xí)基礎(chǔ)線性回歸與嶺回歸算法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

一、什么是線性回歸

1.線性回歸簡(jiǎn)述

線性回歸,是一種趨勢(shì),通過(guò)這個(gè)趨勢(shì),我們能預(yù)測(cè)所需要得到的大致目標(biāo)值。線性關(guān)系在二維中是直線關(guān)系,三維中是平面關(guān)系。

我們可以使用如下模型來(lái)表示線性回歸:y = wx+b(w是權(quán)重,x是特征,b是偏置項(xiàng))

當(dāng)有多個(gè)特征時(shí),線性關(guān)系模型如下圖所示:

2.數(shù)組和矩陣

數(shù)組

數(shù)組可以是多維的,各個(gè)維度的數(shù)組表示如下:

0維:5

1維:[1,2,5,5,4,8]

2維:[[1,4,5],[1,4,7]]

3維:[[[1,4,5],[1,4,7]],[[1,4,5],[1,4,7]]]

數(shù)組運(yùn)算有加法,乘法。具體計(jì)算可以在python中嘗試,數(shù)組是ndarray類型。3.

矩陣

矩陣特點(diǎn):必須是二維,矩陣的運(yùn)算滿足了特定的需求。我們可以僅僅通過(guò)1步的矩陣乘法,就得出w1*x1+w2*x2+w3*x3這樣模型的結(jié)果。

矩陣乘法的要求會(huì)涉及到矩陣的形狀要求:m*n的矩陣 * n*p的矩陣,結(jié)果是m*p的矩陣

也就是說(shuō),第一個(gè)矩陣的列數(shù),必須要和第二個(gè)矩陣的行數(shù)相同。

3.線性回歸的算法

線性回歸是一種迭代的算法。我們需要建立一個(gè)函數(shù),對(duì)于每一個(gè)特征x(i)都有一個(gè)對(duì)應(yīng)的權(quán)重w(i),兩者相乘,并最終把所有的特征權(quán)重乘積求和,就是我們的目標(biāo)結(jié)果。但如何尋找到最佳的權(quán)重,從而使得模型能夠最好地?cái)M合我們的樣本呢?

線性回歸的迭代算法的每次迭代,都會(huì)更新權(quán)重w(i)的值,使模型往靠近樣本點(diǎn)的地方更加靠近,而損失函數(shù),就是我們用來(lái)求得最佳權(quán)重的函數(shù)。

損失函數(shù)定義如下:

損失意思就是預(yù)測(cè)的各個(gè)目標(biāo)值,與各個(gè)原目標(biāo)值的差的平方和(誤差平方和)。損失越小也就是預(yù)測(cè)值與原值越接近,效果越好。該方法也稱為最小二乘法。當(dāng)損失函數(shù)達(dá)到最小值時(shí),所對(duì)應(yīng)的權(quán)重w,就是我們的目標(biāo)權(quán)重。

二、權(quán)重的求解

1.正規(guī)方程

是求權(quán)重w的一種方法,適用于特征少的數(shù)據(jù)。用的比較少。

2.梯度下降

該方法通過(guò)指定學(xué)習(xí)率,并利用梯度,迭代更新權(quán)重。通常都使用這個(gè)方法。

正規(guī)方程API:sklearn.linear_model.LinearRegression()

梯度下降A(chǔ)PI:sklearn.linear_model.SGDRegressor()

兩個(gè)算法都可以通過(guò).coef_得到回歸系數(shù),學(xué)習(xí)率是一個(gè)超參數(shù),也可使用網(wǎng)格交叉驗(yàn)證進(jìn)行調(diào)優(yōu)。

三、線性回歸案例

1.案例概述

通過(guò)從sklearn中獲取的“波士頓房?jī)r(jià)預(yù)測(cè)”數(shù)據(jù)進(jìn)行房?jī)r(jià)預(yù)測(cè),特征有很多,比如該鎮(zhèn)的人均犯罪率、一氧化氮濃度、低收入人群占比等。我們對(duì)每一個(gè)特征都給出一個(gè)權(quán)重,通過(guò)算法,求得最佳的權(quán)重即可。

2.數(shù)據(jù)獲取

導(dǎo)入數(shù)據(jù)代碼:

from sklearn.datasets import load_boston 
lb = load_boston()

3.數(shù)據(jù)分割

x_train, x_test, y_train, y_test = train_test_split(lb.data, lb.target, test_size=0.25)

4.數(shù)據(jù)標(biāo)準(zhǔn)化

此處的數(shù)據(jù),需要對(duì)特征數(shù)據(jù)以及目標(biāo)值數(shù)據(jù)都進(jìn)行標(biāo)準(zhǔn)化,并且需要用不同的標(biāo)準(zhǔn)。

導(dǎo)入標(biāo)準(zhǔn)化方法:from sklearn.preprocessing import StandardScaler

x實(shí)例化方法:std_x = StandardScaler()

y實(shí)例化方法:std_y = StandardScaler()

標(biāo)準(zhǔn)化:

x_train = std_x.fit_transform(x_train)

x_test = std_x.transform(x_test)

y_train = std_y.fit_transform(y_train)

y_test = std_y.transform(y_test)

5.模型訓(xùn)練

注意,訓(xùn)練后得出的目標(biāo)值,是標(biāo)準(zhǔn)化后的,因此需要使用StandardScaler中的inverse_transform進(jìn)行轉(zhuǎn)換回原來(lái)的值。

實(shí)例化算法:lr = LinearRegressor()

將數(shù)據(jù)轉(zhuǎn)為二維:y_train = y_train.reshape(-1,1)

訓(xùn)練算法:lr.fit(x_train, y_train)

預(yù)測(cè)結(jié)果:y_predict = lr.predict(x_test)

結(jié)果轉(zhuǎn)為正常結(jié)果:y_lr_predict = std.inverse_transform(y_predict)

6.回歸性能評(píng)估

通過(guò)對(duì)預(yù)測(cè)值也真實(shí)值計(jì)算均方誤差可得,API中,輸入真實(shí)目標(biāo)值,以及預(yù)測(cè)目標(biāo)值即可(注意:輸入的都是標(biāo)準(zhǔn)化之前的值。

API:sklearn.metrics.mean_squared_error(y_true, y_pred)

線性回歸性能評(píng)估:mean_squared_error(y_test, y_lr_predict)

以上為使用線性回歸算法,對(duì)房?jī)r(jià)進(jìn)行的預(yù)測(cè)。其他的算法,具體操作基本一致。

7.梯度下降與正規(guī)方程區(qū)別

特點(diǎn):線性回歸器是最為簡(jiǎn)單、易用的回歸模型。 從某種程度上限制了使用,盡管如此,在不知道特征之間關(guān)系的前提下,我們?nèi)匀皇褂镁€性回歸器作為大多數(shù)系統(tǒng)的首要選擇。

小規(guī)模數(shù)據(jù)可以使用LinearRegression(不能解決擬合問(wèn)題)以及其它

大規(guī)模數(shù)據(jù)需要使用梯度下降法,SGDRegressor

四、嶺回歸Ridge

1.過(guò)擬合與欠擬合

欠擬合:一個(gè)假設(shè)在訓(xùn)練數(shù)據(jù)上不能獲得更好的擬合, 但是在訓(xùn)練數(shù)據(jù)外的數(shù)據(jù)集上也不能很好地?cái)M合數(shù)據(jù),此時(shí)認(rèn)為這個(gè)假設(shè)出現(xiàn)了欠擬合的現(xiàn)象。(模型過(guò)于簡(jiǎn)單)

解決方法:增加特征

過(guò)擬合:一個(gè)假設(shè)在訓(xùn)練數(shù)據(jù)上能夠獲得比其他假設(shè)更好的擬合, 但是在訓(xùn)練數(shù)據(jù)外的數(shù)據(jù)集上卻不能很好地?cái)M合數(shù)據(jù),此時(shí)認(rèn)為這個(gè)假設(shè)出現(xiàn)了過(guò)擬合的現(xiàn)象。(模型過(guò)于復(fù)雜)

解決方法:正則化

2.正則化

L2正則化是通過(guò)減少權(quán)重的方式,對(duì)模型進(jìn)行優(yōu)化,以解決過(guò)擬合的問(wèn)題。該方法可以使得權(quán)重的每個(gè)元素都非常接近于0,參數(shù)變小,則模型變簡(jiǎn)單。從而達(dá)到解決過(guò)擬合問(wèn)題的效果。

嶺回歸就是帶有正則化的線性回歸。

嶺回歸API:sklearn.linear_model.Ridge

正則化中,alpha(或者lambda)越大,說(shuō)明對(duì)參數(shù)的懲罰越大,參數(shù)就越趨近于0。

嶺回歸優(yōu)點(diǎn):回歸得到的回歸系數(shù)更符合實(shí)際,更可靠。另外,能讓估計(jì)參數(shù)的波動(dòng)范圍變小,變的更穩(wěn)定。在存在病態(tài)數(shù)據(jù)偏多的研究中有較大的實(shí)用價(jià)值。

以上就是python機(jī)器學(xué)習(xí)基礎(chǔ)線性回歸與嶺回歸算法詳解的詳細(xì)內(nèi)容,更多關(guān)于python線性回歸與嶺回歸算法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 在django中,關(guān)于session的通用設(shè)置方法

    在django中,關(guān)于session的通用設(shè)置方法

    今天小編就為大家分享一篇在django中,關(guān)于session的通用設(shè)置方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • pandas按行按列遍歷Dataframe的三種方式小結(jié)

    pandas按行按列遍歷Dataframe的三種方式小結(jié)

    本文主要介紹了pandas按行按列遍歷Dataframe,主要介紹了三種方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • 淺談Pycharm的項(xiàng)目文件名是紅色的原因及解決方式

    淺談Pycharm的項(xiàng)目文件名是紅色的原因及解決方式

    這篇文章主要介紹了淺談Pycharm的項(xiàng)目文件名是紅色的原因及解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • ubuntu遷移anaconda到另外的目錄(完美解決)

    ubuntu遷移anaconda到另外的目錄(完美解決)

    本文主要介紹了ubuntu遷移anaconda到另外的目錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Pygame實(shí)戰(zhàn)練習(xí)之炸彈人學(xué)院游戲

    Pygame實(shí)戰(zhàn)練習(xí)之炸彈人學(xué)院游戲

    炸彈人學(xué)院想必是很多人童年時(shí)期的經(jīng)典游戲,我們依舊能記得抱個(gè)老人機(jī)娛樂(lè)的場(chǎng)景,下面這篇文章主要給大家介紹了關(guān)于如何利用python寫(xiě)一個(gè)簡(jiǎn)單的炸彈人學(xué)院小游戲的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • 推薦8款常用的Python GUI圖形界面開(kāi)發(fā)框架

    推薦8款常用的Python GUI圖形界面開(kāi)發(fā)框架

    這篇文章主要介紹了推薦8款常用的Python GUI圖形界面開(kāi)發(fā)框架,需要的朋友可以參考下
    2020-02-02
  • Python(Django)項(xiàng)目與Apache的管理交互的方法

    Python(Django)項(xiàng)目與Apache的管理交互的方法

    這篇文章主要介紹了Python(Django)項(xiàng)目與Apache的管理交互的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 用Python編寫(xiě)一個(gè)每天都在系統(tǒng)下新建一個(gè)文件夾的腳本

    用Python編寫(xiě)一個(gè)每天都在系統(tǒng)下新建一個(gè)文件夾的腳本

    這篇文章主要介紹了用Python編寫(xiě)一個(gè)每天都在系統(tǒng)下新建一個(gè)文件夾的腳本,雖然這個(gè)實(shí)現(xiàn)聽(tīng)起來(lái)有點(diǎn)無(wú)聊...但卻是學(xué)習(xí)os和time模塊的一個(gè)小實(shí)踐,需要的朋友可以參考下
    2015-05-05
  • 使用Python讀寫(xiě)多個(gè)sheet文件

    使用Python讀寫(xiě)多個(gè)sheet文件

    這篇文章主要介紹了使用Python讀寫(xiě)多個(gè)sheet文件,本文即介紹多個(gè)sheet文件的讀入及處理數(shù)據(jù)后寫(xiě)出到新excel文件的操作過(guò)程,可以提高大家工作效率,需要的小伙伴可以參考一下
    2022-05-05
  • 關(guān)于numpy和torch.tensor的張量的操作

    關(guān)于numpy和torch.tensor的張量的操作

    這篇文章主要介紹了關(guān)于numpy和torch.tensor的張量的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評(píng)論