Python 线性回归
生活随笔
收集整理的這篇文章主要介紹了
Python 线性回归
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Python 線性回歸
1 聲明
本文的數據來自網絡,部分代碼也有所參照,這里做了注釋和延伸,旨在技術交流,如有冒犯之處請聯系博主及時處理。
2 線性回歸簡介
相關概念見下:
如果想通過一個模型找到目標變量和特征的線性關系就用到線性回歸(在房價的預測的場景中假設拿到地段、面積、學區、建筑時間等特征后,通過訓練線性回歸模型,進而可對的新數據進行預測)。線性回歸假設特征與目標變量存在線性關系,換言之這種影響(系數或參數,神經網絡里又叫權重)是常量。這里是概率統計里的應用,下面以二元回歸作為里例子,演示其原理。
這里 是目標變量, 是每個特征, 和 是x1和x2的系數。 是截距, 是誤差。
更普通的方式可以矩陣的形式表達 Y=Xβ+ε,一般使用最小二乘法擬合得系數的解為
詳細證明見:最小二乘法(多元)推導
相關統計量
詳見:Excel一元線性回歸示例
交互項(Interactive Term):當特征間有相互作用時可以使用交互項,表現形式見下:
正則化:
為了解決過擬合、方差較高的問題,需要對線性回歸模型進行正則化(收縮懲罰即RSS和系數更小),一般用L1(LaSSO)、L2(嶺回歸)法。
這里的RSS對應前文的SSE即殘差平方和,線性回歸模型的目的就是使得RSS最小。
其中嶺回歸里通過如下方式添加懲罰項(α乘以系數的平方和,α是超參數):
LASSO正則化(α乘以系數絕對值的和,α是超參數,n是樣本數):
3 線性回歸代碼示例
# 加載相關包:標準化、線性回歸、特征構造 # Scenario 1 普通線性回歸 from sklearn.linear_model import LinearRegression,Ridge from sklearn.datasets import load_boston from sklearn.preprocessing import PolynomialFeatures from sklearn.preprocessing import StandardScaler# 加載波士頓房價數據并指定特征和目標變量 boston = load_boston() features = boston.data[:,0:2] target = boston.target # 創建并擬合線性回歸模型 regression = LinearRegression()model1 = regression.fit(features, target)# 查看截距 print(model1.intercept_) # 查看系數β1、β2 print(model1.coef_)# Scenario 2 帶交互項的線性回歸 # 通過PolynomialFeatures創建交互項 interaction = PolynomialFeatures( degree=3, include_bias=False, interaction_only=True) features_interaction = interaction.fit_transform(features)# 創建并擬合線性回歸模型 regression = LinearRegression() model2 = regression.fit(features_interaction, target) # 驗證樣本交互項X1*X2 print(features_interaction[0]) # 查看帶交互項的系數 print(model2.coef_)# Scenario 3 正則化之嶺回歸 # 標準化數據,即特征都在同一量綱上(無量綱) scaler = StandardScaler() features_standardized = scaler.fit_transform(features)# 創建帶α的嶺回歸并擬合 regression = Ridge(alpha=0.5) model3 = regression.fit(features_standardized, target)# 評價指標R2(僅演示如何使用) from sklearn.metrics import r2_score print('R^2 train: %.3f' % r2_score(target, model1.predict(features)))4 總結
總結
以上是生活随笔為你收集整理的Python 线性回归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 车险到期了可以推迟多久交 交强险一天也
- 下一篇: 工业4.0板块龙头股 已经受到了外资的关