Python數(shù)據(jù)科學(xué):線性回歸
02 多元線性回歸
多元線性回歸是在簡(jiǎn)單線性回歸的基礎(chǔ)上,增加更多的自變量。
二元線性回歸是最簡(jiǎn)單的多元線性回歸。
其中一元回歸擬合的是一條回歸線,那么二元回歸擬合的便是一個(gè)回歸平面。
在多元線性回歸中,要求自變量與因變量之間要有線性關(guān)系,且自變量之間的相關(guān)系數(shù)要盡可能的低。
回歸方程中與因變量線性相關(guān)的自變量越多,回歸的解釋力度就越強(qiáng)。
若方程中非線性相關(guān)的自變量越多,那么模型解釋力度就越弱。
可以使用調(diào)整后的R?(與觀測(cè)個(gè)數(shù)及模型自變量個(gè)數(shù)有關(guān))來(lái)評(píng)價(jià)回歸的優(yōu)劣程度,即評(píng)價(jià)模型的解釋力度。
下面還是以書中的案例,實(shí)現(xiàn)一個(gè)多元線性回歸。
分析客戶年齡、年收入、小區(qū)房屋均價(jià)、當(dāng)?shù)厝司杖?/strong>與信用卡月均支出的關(guān)系。
# 使用多元線性回歸建立模型
lm_m = ols('avg_exp ~ Age + Income + dist_h(yuǎn)ome_val + dist_avg_income', data=exp).fit()
print(lm_m.summary())
多元線性回歸模型信息如下。
輸出R為0.542,調(diào)整R?為0.513。
方程顯著性(回歸系數(shù)不全為0)的檢驗(yàn)P值為1.82e-10,接近于0,說(shuō)明回歸方程是有意義的。
客戶年齡、小區(qū)房屋均價(jià)的回歸系數(shù)都不顯著。
年收入、當(dāng)?shù)厝司杖?/strong>的回歸系數(shù)顯著。
多元線性回歸可以根據(jù)向前法、向后法、逐步法來(lái)對(duì)自變量進(jìn)行篩選。
向前法就是不斷加入變量去構(gòu)建回歸方程,向后法則是不斷去除變量去構(gòu)建回歸方程,逐步法是兩者的結(jié)合,又加入又刪除的。
三種方法都是基于AIC準(zhǔn)則(最小信息準(zhǔn)則),其中AIC值越小說(shuō)明模型效果越好,越簡(jiǎn)潔。
使用AIC準(zhǔn)則能夠避免變量的增加成為殘差平方和減小的主要原因情況的發(fā)生,防止模型復(fù)雜度的增加。
本次采用向前回歸法,不斷加入變量,得到加入后變量的AIC值,最后找到解釋力度最大的變量。
# 向前回歸法
def forward_select(data, response):
"""data是包含自變量及因變量的數(shù)據(jù),response是因變量"""
# 獲取自變量列表
remaining = set(data.columns)
remaining.remove(response)
selected = []
# 定義數(shù)據(jù)類型(正無(wú)窮)
current_score, best_new_score = float('inf'), float('inf')
# 自變量列表含有自變量時(shí)
while remaining:
aic_with_candidates = []
# 對(duì)自變量列表進(jìn)行循環(huán)
for candidates in remaining:
# 構(gòu)建表達(dá)式,自變量會(huì)不斷增加
formula = "{} ~ {}".format(response, ' + '.join(selected + [candidates]))
# 生成自變量的AIC解釋力度
aic = ols(formula=formula, data=data).fit().a(chǎn)ic
# 得到自變量的AIC解釋力度列表
aic_with_candidates.a(chǎn)ppend((aic, candidates))
# 對(duì)解釋力度列表從大到小排序
aic_with_candidates.sort(reverse=True)
# 得到解釋力度最大值(AIC值最。┘白宰兞
best_new_score, best_candidate = aic_with_candidates.pop()
# 1.正無(wú)窮大大于解釋力度最大值 2.上一期實(shí)驗(yàn)的AIC值需大于下一期的AIC實(shí)驗(yàn)值,即添加變量越多,AIC值應(yīng)該越小,模型效果越好
if current_score > best_new_score:
# 移除影響最大的自變量
remaining.remove(best_candidate)
# 添加影響較大的自變量
selected.a(chǎn)ppend(best_candidate)
# 賦值本次實(shí)驗(yàn)的AIC值
current_score = best_new_score
print('aic is {},continue。В甪ormat(current_score))
else:
print('forward selection over。В
break
# 采用影響較大的自變量列表,對(duì)數(shù)據(jù)做線性回歸
formula = "{} ~ {}".format(response, ' + '.join(selected))
print('final formula is {}'.format(formula))
model = ols(formula=formula, data=data).fit()
return model
# 采用向前回歸法篩選變量,利用篩選的變量構(gòu)建回歸模型
data_for_select = exp[['avg_exp', 'Income', 'Age', 'dist_h(yuǎn)ome_val', 'dist_avg_income']]
lm_m = forward_select(data=data_for_select, response='avg_exp')
print(lm_m.rsquared)
輸出結(jié)果。
發(fā)現(xiàn)客戶年齡(Age)被篩除了,最終得到線性回歸模型。
/ 03 / 總結(jié)
這里只是構(gòu)建了一下線性回歸模型而已,只能說(shuō)湊合著用。
后面還將對(duì)模型進(jìn)行診斷,使得模型更具有參考價(jià)值。
未完待續(xù)...

發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
您提交的評(píng)論過(guò)于頻繁,請(qǐng)輸入驗(yàn)證碼繼續(xù)
最新活動(dòng)更多
-
3月27日立即報(bào)名>> 【工程師系列】汽車電子技術(shù)在線大會(huì)
-
4月30日立即下載>> 【村田汽車】汽車E/E架構(gòu)革新中,新智能座艙挑戰(zhàn)的解決方案
-
5月15-17日立即預(yù)約>> 【線下巡回】2025年STM32峰會(huì)
-
即日-5.15立即報(bào)名>>> 【在線會(huì)議】安森美Hyperlux™ ID系列引領(lǐng)iToF技術(shù)革新
-
5月15日立即下載>> 【白皮書】精確和高效地表征3000V/20A功率器件應(yīng)用指南
-
5月16日立即參評(píng) >> 【評(píng)選啟動(dòng)】維科杯·OFweek 2025(第十屆)人工智能行業(yè)年度評(píng)選
推薦專題
- 1 UALink規(guī)范發(fā)布:挑戰(zhàn)英偉達(dá)AI統(tǒng)治的開始
- 2 北電數(shù)智主辦酒仙橋論壇,探索AI產(chǎn)業(yè)發(fā)展新路徑
- 3 降薪、加班、裁員三重暴擊,“AI四小龍”已折戟兩家
- 4 “AI寒武紀(jì)”爆發(fā)至今,五類新物種登上歷史舞臺(tái)
- 5 國(guó)產(chǎn)智駕迎戰(zhàn)特斯拉FSD,AI含量差幾何?
- 6 光計(jì)算迎來(lái)商業(yè)化突破,但落地仍需時(shí)間
- 7 東陽(yáng)光:2024年扭虧、一季度凈利大增,液冷疊加具身智能打開成長(zhǎng)空間
- 8 地平線自動(dòng)駕駛方案解讀
- 9 封殺AI“照騙”,“淘寶們”終于不忍了?
- 10 優(yōu)必選:營(yíng)收大增主靠小件,虧損繼續(xù)又逢關(guān)稅,能否乘機(jī)器人東風(fēng)翻身?