01-線性回歸-LinearRegress(小白入門)

三哥平凡創作生活 發佈 2024-04-27T15:05:57.693695+00:00

視頻詳解:01-機器學習-線性回歸-LinearRegress1、什麼是線性回歸?線性:兩個變量之間的關係是一次函數關係的非線性:兩個變量之間的關係不是一次函數關係的2、應用場景房價預測流量預測票房預測....

視頻詳解:01-機器學習-線性回歸-LinearRegress

1、什麼是線性回歸?

  • 線性:兩個變量之間的關係是一次函數關係的
  • 非線性:兩個變量之間的關係不是一次函數關係的

2、應用場景

  • 房價預測
  • 流量預測
  • 票房預測
  • ....

3、表達式&優化函數

  • 表達式: =+

w是x的係數,b是偏置項

  • 目標函數(Loss Function)
  • 利用梯度下降法求 J 的最小值,從而推導出w和b

4、為什麼需要正則化

4.1 L1正則化(Lasso回歸)

L1正則化項:

L1如何解決過擬合問題:

  • 特徵稀疏性

4.2 L2正則化(嶺回歸)

L2正則化項:

L2如何解決過擬合問題

  • 擬合過程中通常都傾向於讓權值儘可能小
  • 參數很小,數據偏移得多一點也不會對結果造成什麼影響,魯棒性更強
  • 參數:=0.01

代碼實現:房價回歸預測-LinearRegression

# encoding: utf-8
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

# 1.獲取數據集
boston_data = load_boston()
x = pd.DataFrame(boston_data.data) # 波士頓房價data
y = boston_data.target             # 波士頓房價真實值
x.columns = boston_data.feature_names # 特徵賦值

#特徵14個:
#CRIM: 城鎮人均犯罪率
#ZN: 住宅用地所占比例
#INDUS: 城鎮中非住宅用地所占比例
#CHAS: 虛擬變量,用於回歸分析
#NOX: 環保指數
#RM: 每棟住宅的房間數
#AGE: 1940 年以前建成的自住單位的比例
#DIS: 距離 5 個波士頓的就業中心的加權距離
#RAD: 距離高速公路的便利指數
#TAX: 每一萬美元的不動產稅率
#PTRATIO: 城鎮中的教師學生比例
#B: 城鎮中的黑人比例
#LSTAT: 地區中有多少房東屬於低收入人群
#MEDV: 自住房屋房價中位數(也就是均價)


# 2.劃分訓練集、測試集
xtrain,xtest,ytrain,ytest = train_test_split(x,y,test_size=0.2,random_state=125)
# 3.建立線性回歸模型
model = LinearRegression().fit(xtrain,ytrain)
# 4.1 獲取預測值
y_pred = model.predict(xtest)

y_w = model.coef_

# 4.4 將回歸係數與特徵對應
compare_feature = [*zip(xtrain.columns,y_w)]

# 5.預測結果可視化
plt.rcParams['font.sans-serif'] = 'SimHei'
fig = plt.figure(figsize=(10,6))
plt.plot(range(ytest.shape[0]),ytest,color='black',linestyle='-',linewidth=1.5)
plt.plot(range(y_pred.shape[0]),y_pred,color='red',linestyle='-.',linewidth=1.5)
plt.xlim((0,102))
plt.ylim((0,55))
plt.legend(['真實值','預測值'])
plt.show()

預測值&實際值效果圖:


關鍵字: