佳木斯湛栽影视文化发展公司

主頁 > 知識(shí)庫 > python深度總結(jié)線性回歸

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

熱門標(biāo)簽:呼叫中心市場(chǎng)需求 網(wǎng)站文章發(fā)布 銀行業(yè)務(wù) 鐵路電話系統(tǒng) 服務(wù)器配置 智能手機(jī) 檢查注冊(cè)表項(xiàng) 美圖手機(jī)

概述

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

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

例子

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

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

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

通俗解釋

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

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

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

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

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

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

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

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

誤差

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

注: ε 代表誤差

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

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

預(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è)變量來求最小值. 目標(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():
    """
    線性回歸直接預(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é)線性回歸的文章就介紹到這了,更多相關(guān)python線性回歸內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • tensorflow基本操作小白快速構(gòu)建線性回歸和分類模型
  • 回歸預(yù)測(cè)分析python數(shù)據(jù)化運(yùn)營(yíng)線性回歸總結(jié)
  • python實(shí)現(xiàn)線性回歸算法
  • python機(jī)器學(xué)習(xí)之線性回歸詳解
  • 使用pytorch實(shí)現(xiàn)線性回歸
  • pytorch實(shí)現(xiàn)線性回歸
  • 詳解TensorFlow2實(shí)現(xiàn)前向傳播

標(biāo)簽:上海 新疆 紅河 河南 沈陽 滄州 樂山 長(zhǎng)治

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《python深度總結(jié)線性回歸》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    改则县| 汉源县| 阿克陶县| 永兴县| 罗江县| 茶陵县| 辽源市| 玉树县| 延安市| 内丘县| 五寨县| 绿春县| 宝清县| 宣威市| 青岛市| 察雅县| 大悟县| 文登市| 河西区| 德令哈市| 疏勒县| 任丘市| 皮山县| 通辽市| 延寿县| 崇义县| 长乐市| 安国市| 青川县| 临颍县| 阳原县| 察隅县| 来凤县| 岳普湖县| 江西省| 小金县| 镇坪县| 萨迦县| 从化市| 江永县| 阳新县|