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

python深度總結(jié)線(xiàn)性回歸

 更新時(shí)間:2021年09月10日 08:52:09   作者:我是小白呀  
這篇文章主要介紹了python的深度總結(jié)之線(xiàn)性回歸,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

概述

線(xiàn)性回歸的定義是: 目標(biāo)值預(yù)期是輸入變量的線(xiàn)性組合. 線(xiàn)性模型形式簡(jiǎn)單, 易于建模, 但卻蘊(yùn)含著機(jī)器學(xué)習(xí)中一些重要的基本思想. 線(xiàn)性回歸, 是利用數(shù)理統(tǒng)計(jì)中回歸分析, 來(lái)確定兩種或兩種以上變量間相互依賴(lài)的定量關(guān)系的一種統(tǒng)計(jì)分析方法, 運(yùn)用十分廣泛.

優(yōu)點(diǎn): 結(jié)果易于理解, 計(jì)算不復(fù)雜
缺點(diǎn): 對(duì)非線(xiàn)性的數(shù)據(jù)擬合不好

例子

數(shù)據(jù): 工資和年齡 (2 個(gè)特征)
目標(biāo): 預(yù)測(cè)銀行會(huì)貸款給我多少錢(qián) (標(biāo)簽)

工資 年齡 額度
4000 25 20000
8000 30 70000
5000 28 35000
7500 33 50000
12000 40 85000

工資和年齡都會(huì)影響最終銀行貸款的結(jié)果. 那么它們各自有多大的影響呢?

通俗解釋

X1, X2 代表我們的兩個(gè)特征: 年齡和工資. Y 代表銀行最終會(huì)借給我們多少錢(qián).

找到最合適的一條線(xiàn) (想象一個(gè)高維 ) 來(lái)最好的擬合我們的數(shù)據(jù)點(diǎn). 如下圖所示:

在這里插入圖片描述

數(shù)學(xué)推導(dǎo)

假設(shè) θ1 代表年齡的參數(shù), θ2 代表工資的參數(shù), 那么:

在這里插入圖片描述

注: θ0 為偏置頂, 相當(dāng)于 C

線(xiàn)性模型, 中的向量 θ 值. 客觀的表達(dá)了各屬性在預(yù)測(cè)中的重要性, 因此線(xiàn)性模型有很好的解釋性. 對(duì)于這種 “多特征預(yù)測(cè)” 也就是 (多元線(xiàn)性回歸), 那么線(xiàn)性回歸就是在這個(gè)基礎(chǔ)上得到這些 θ 的值. 然后以這些值來(lái)建立模型, 預(yù)測(cè)試數(shù)據(jù). 簡(jiǎn)單的來(lái)說(shuō)就是學(xué)得一個(gè)線(xiàn)性模型以盡可能準(zhǔn)確的預(yù)測(cè)實(shí)際輸出標(biāo)記.

那么如果對(duì)于多變量線(xiàn)性回歸來(lái)說(shuō)我們可以通過(guò)向量的方式來(lái)表示 θ 值與特征 X 值之間的關(guān)系:

在這里插入圖片描述

兩向量相乘, 結(jié)果為一個(gè)整數(shù)是估計(jì)值. 其中所有特征集合的第一個(gè)特征值 x0=1, 那么我們可以通過(guò)通用的向量公式來(lái)表示性模型:
在這里插入圖片描述

誤差

真實(shí)值和預(yù)測(cè)值之間肯定是要存在差異的. 對(duì)于每個(gè)樣本:

在這里插入圖片描述

注: ε 代表誤差

誤差ε^(i)是獨(dú)立并且具有相同的分布, 并且服從均值為 0 方差為θ^2的正態(tài)分布 (normal distribution).

獨(dú)立: 凹凸曼和馬保國(guó)一起來(lái)貸款, 不可能因?yàn)轳R保國(guó)貸款了 30 個(gè)億, 就少給凹凸曼錢(qián).

在這里插入圖片描述

預(yù)測(cè)值與誤差:

在這里插入圖片描述

誤差服從高斯分布:

在這里插入圖片描述

將 1 式帶入 2 式:

在這里插入圖片描述

似然函數(shù):

在這里插入圖片描述

對(duì)數(shù)似然函數(shù):

在這里插入圖片描述

簡(jiǎn)化:

在這里插入圖片描述

讓似然函數(shù)越大越好 (最小二乘法):

在這里插入圖片描述

目標(biāo)函數(shù):

在這里插入圖片描述

求偏導(dǎo):

在這里插入圖片描述

偏導(dǎo)等于 0:

在這里插入圖片描述

評(píng)估方法

最常用的評(píng)估項(xiàng) R^2:

在這里插入圖片描述

R^2 的取值越接近于 1 我們認(rèn)為模型擬合的越好.

梯度下降

上面誤差公式是一個(gè)通式, 我們?nèi)蓚€(gè)單個(gè)變量來(lái)求最小值. 目標(biāo)函數(shù):

在這里插入圖片描述

尋找山谷的最低點(diǎn), 也就是我們的目標(biāo)函數(shù)終點(diǎn) (什么樣的參數(shù)能使得目標(biāo)函數(shù)達(dá)到極值點(diǎn))

下山分幾步走呢?

找到當(dāng)前最合適的方向走一小步按照方向與步伐去更新我們的參數(shù)

目標(biāo)函數(shù):

在這里插入圖片描述

學(xué)習(xí)率 (learning_rate): 對(duì)結(jié)果影響較大, 越小越好.

數(shù)據(jù)批次 (batch_size): 優(yōu)先考慮內(nèi)存和效率, 批次大小是次要的.

在這里插入圖片描述

批量梯度下降

目標(biāo)

在這里插入圖片描述

容易得到最優(yōu)解, 但是由于每次考慮所有樣本, 速度很慢.

隨機(jī)梯度下降

在這里插入圖片描述

每次找一個(gè)樣本, 迭代速度快, 但不一定每次都朝著收斂的反向.

小批量梯度下降法

在這里插入圖片描述

案例一

波士頓房?jī)r(jià)預(yù)測(cè)

from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression, SGDRegressor
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler


def mylinear():
    """
    線(xiàn)性回歸直接預(yù)測(cè)房子價(jià)格
    :return: None
    """

    # 獲取數(shù)據(jù)
    lb = load_boston()

    # 分割數(shù)據(jù)記到訓(xùn)練集和測(cè)試集
    x_train, x_test, y_train, y_test = train_test_split(lb.data, lb.target, test_size=0.25)

    # 進(jìn)行標(biāo)準(zhǔn)化處理, 目標(biāo)值處理
    # 特征值和目標(biāo)是都必須進(jìn)行標(biāo)準(zhǔn)化處理, 實(shí)例化兩個(gè)標(biāo)準(zhǔn)化API
    std_x = StandardScaler()

    x_train = std_x.fit_transform(x_train)
    x_test = std_x.fit_transform(x_test)

    # 目標(biāo)值
    std_y = StandardScaler()

    y_train = std_y.fit_transform(y_train.reshape(-1, 1))
    y_test = std_y.fit_transform(y_test.reshape(-1, 1))

    # estimator預(yù)測(cè)
    # 正規(guī)方程求解方式預(yù)測(cè)結(jié)果
    lr = LinearRegression()

    lr.fit(x_train, y_train)
    print(lr.coef_)

    # 預(yù)測(cè)測(cè)試集房子價(jià)格
    y_lr_predict = std_y.inverse_transform(lr.predict(x_test))
    print("正規(guī)方程式測(cè)試集里面每個(gè)房子的預(yù)測(cè)價(jià)格: ", y_lr_predict)
    print("正規(guī)方程的均方誤差: ", mean_squared_error(std_y.inverse_transform(y_test), y_lr_predict))

    # 梯度下降去進(jìn)行房?jī)r(jià)預(yù)測(cè)
    sgd = SGDRegressor()

    sgd.fit(x_train, y_train)
    print(sgd.coef_)

    # 預(yù)測(cè)測(cè)試集的房子價(jià)格
    y_sgd_predict = std_y.inverse_transform(sgd.predict(x_test))
    print("梯度下降式測(cè)試集里面每個(gè)房子的預(yù)測(cè)價(jià)格: ", y_sgd_predict)
    print("梯度下降的均方誤差: ", mean_squared_error(std_y.inverse_transform(y_test), y_sgd_predict))

    return None


if __name__ == "__main__":
    mylinear()

輸出結(jié)果:
[[-0.12225698 0.12791281 -0.00206122 0.05700013 -0.2608399 0.28139416
0.01481249 -0.33807474 0.3299154 -0.23182836 -0.21123181 0.09206512
-0.39973041]]
正規(guī)方程式測(cè)試集里面每個(gè)房子的預(yù)測(cè)價(jià)格: [[28.95666718]
[25.61614205]
[24.20558764]
[19.30978406]
[35.89982059]
[29.03187299]
[26.34111014]
[19.46710495]
[20.6689787 ]
[29.93653292]
[25.11165216]
[32.91673513]
[19.84546548]
[23.5563843 ]
[21.79474763]
[15.75074992]
[19.80615694]
[12.98286759]
[27.59995691]
[19.00192788]
[36.16248095]
[19.2767701 ]
[16.52561836]
[23.05284655]
[16.59241324]
[25.66405442]
[30.7677223 ]
[19.86797053]
[ 9.39422797]
[27.10530759]
[27.17712717]
[39.44877655]
[10.03000383]
[15.42825832]
[23.13702928]
[14.52254261]
[19.38595173]
[29.06816506]
[36.30187936]
[22.5685246 ]
[ 9.88826283]
[21.33573342]
[31.3551175 ]
[16.18170604]
[27.59483437]
[31.66145736]
[14.31706514]
[24.46295319]
[17.51893204]
[19.35269608]
[24.26523283]
[24.86190305]
[25.11947262]
[28.93202524]
[15.75107827]
[13.3417495 ]
[22.59649735]
[29.00114487]
[12.20666867]
[30.63609004]
[21.96199386]
[27.06032461]
[25.1791211 ]
[17.97595194]
[41.57497749]
[21.43625394]
[24.28803424]
[16.5167138 ]
[19.38589021]
[ 8.06164985]
[23.7550887 ]
[12.10636177]
[23.67230518]
[31.52266655]
[19.30684626]
[20.31342004]
[25.13624205]
[18.6725454 ]
[34.44267213]
[19.76331507]
[33.68001958]
[17.21843608]
[11.93697393]
[20.10130687]
[20.60069168]
[33.02551169]
[12.20848437]
[11.34921413]
[36.81923651]
[43.09091788]
[24.5904135 ]
[27.19519096]
[13.42695648]
[21.31070858]
[18.78980458]
[26.7739455 ]
[21.04064808]
[19.37399749]
[20.61932093]
[12.70789542]
[27.30728839]
[29.19812469]
[18.2215341 ]
[14.88442393]
[13.08985585]
[37.26784993]
[23.0054703 ]
[45.03638993]
[24.43103986]
[ 9.70593527]
[ 7.20755399]
[24.11659246]
[16.87989582]
[23.8839 ]
[36.74286927]
[17.52801739]
[21.14217981]
[ 8.33442145]
[20.77366903]
[25.11687425]
[34.79817667]
[17.48069049]
[ 7.79217297]
[21.46168783]
[12.12750804]
[23.37886385]
[13.03642996]]
正規(guī)方程的均方誤差: 19.228239448103142
[-0.10382102 0.09549223 -0.0575206 0.06192685 -0.17919477 0.31416038
-0.0060828 -0.2718829 0.16557575 -0.09171927 -0.19702721 0.09358103
-0.38969764]
梯度下降式測(cè)試集里面每個(gè)房子的預(yù)測(cè)價(jià)格: [28.32281003 25.30899723 24.37354695 19.81132568 35.86134383 29.54339861
26.40901657 19.91790232 21.08280077 30.8745518 25.04025974 32.61880171
20.06776623 23.27211209 21.49391276 15.07364423 19.3604463 13.24307268
27.91816594 18.46564888 36.5121198 18.60090036 17.07584378 23.61453885
15.44119731 26.55848283 30.95932966 20.48910926 8.92774087 25.64122283
26.5405097 39.56312391 9.60876044 16.194631 21.86126606 14.3384503
19.6672515 28.37094255 37.13748452 22.56961348 10.95474568 21.31897902
31.99623025 16.32155785 27.56422641 31.91738771 16.07941322 25.21406318
17.07667764 18.61941274 23.61541029 25.09956295 24.16633871 29.24889477
16.17014144 13.52204965 21.76470038 28.75088192 11.39083277 29.94854783
21.97184713 26.76638021 25.37366415 17.75713168 42.17712979 21.44617697
24.65166416 15.74898705 19.28498974 7.18254411 23.64316345 12.17079475
23.22062874 30.81709679 19.39958374 20.53408606 25.34565728 18.55272456
33.84685681 19.4801645 33.86657711 17.02691146 11.07262797 20.44699002
20.83170047 32.66795247 11.2561216 11.94847677 35.85096014 42.30377951
24.56324407 27.96815655 13.30901928 22.23063794 19.1259557 27.02051826
21.39186325 20.33181273 21.29435341 11.25823767 27.67529642 30.095733
18.76124598 13.85728059 14.68490838 37.53663617 22.46940546 45.09885288
24.49884024 10.51414764 7.91453997 23.66015594 17.30342205 24.23971059
36.76137912 16.98059079 21.46394599 7.28066947 20.76359414 24.55927982
35.63307238 16.9695351 7.33008978 21.71197098 12.31280728 22.41710171
13.31011409]
梯度下降的均方誤差: 19.28139772207173

到此這篇關(guān)于python深度總結(jié)線(xiàn)性回歸的文章就介紹到這了,更多相關(guān)python線(xiàn)性回歸內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于numpy.array的shape屬性理解

    關(guān)于numpy.array的shape屬性理解

    這篇文章主要介紹了關(guān)于numpy.array的shape屬性理解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python 爬蟲(chóng)多線(xiàn)程詳解及實(shí)例代碼

    Python 爬蟲(chóng)多線(xiàn)程詳解及實(shí)例代碼

    這篇文章主要介紹了Python 爬蟲(chóng)多線(xiàn)程詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 淺談Python3中print函數(shù)的換行

    淺談Python3中print函數(shù)的換行

    這篇文章主要介紹了淺談Python3中print函數(shù)的換行,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • python讀取中文txt文本的方法

    python讀取中文txt文本的方法

    下面小編就為大家分享一篇python讀取中文txt文本的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Django如何實(shí)現(xiàn)內(nèi)容緩存示例詳解

    Django如何實(shí)現(xiàn)內(nèi)容緩存示例詳解

    緩存對(duì)于大家來(lái)說(shuō)應(yīng)該都不陌生,下面這篇文章主要給大家介紹了關(guān)于Django如何實(shí)現(xiàn)內(nèi)容緩存的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-09-09
  • Python中求對(duì)數(shù)方法總結(jié)

    Python中求對(duì)數(shù)方法總結(jié)

    這篇文章主要介紹了Python中求對(duì)數(shù)方法總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • python使用Flask操作mysql實(shí)現(xiàn)登錄功能

    python使用Flask操作mysql實(shí)現(xiàn)登錄功能

    這篇文章主要介紹了python使用Flask操作mysql實(shí)現(xiàn)登錄功能,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-05-05
  • 全面理解Python中self的用法

    全面理解Python中self的用法

    Python中看到或使用self時(shí)一定要弄明白self的指代,這里就帶大家來(lái)全面理解Python中self的用法,需要的朋友可以參考下
    2016-06-06
  • 模擬瀏覽器的Python爬蟲(chóng)工具全面深入探索

    模擬瀏覽器的Python爬蟲(chóng)工具全面深入探索

    Python爬蟲(chóng)是獲取網(wǎng)頁(yè)信息的重要工具,但有時(shí)網(wǎng)站對(duì)爬蟲(chóng)有限制,要求模擬瀏覽器行為,本文將深入探討如何使用Python模擬瀏覽器行為進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)抓取,我們將介紹相關(guān)工具和技術(shù),提供詳細(xì)的示例代碼和解釋
    2024-01-01
  • Python判斷素?cái)?shù)的3種方法及for-else語(yǔ)句的用法介紹

    Python判斷素?cái)?shù)的3種方法及for-else語(yǔ)句的用法介紹

    素?cái)?shù)又叫質(zhì)數(shù),指的是>1的整數(shù)中,只能被1和這個(gè)數(shù)本身整除的數(shù),這篇文章主要給大家介紹了關(guān)于Python判斷素?cái)?shù)的3種方法及for-else語(yǔ)句的用法介紹的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05

最新評(píng)論