2 線性回歸

2021-09-28 18:23:52 字數 3128 閱讀 2417

線性回歸演算法是使用線性方程對資料集進行擬合的演算法,是乙個非常常見的回歸演算法

就是經典的最小二乘法問題 :最小化誤差的平方

均方誤差mse

公式

是mse開個根號,其實實質是一樣的。只不過用於資料更好的描述。

例如:要做房價**,每平方是萬元,我們**結果也是萬元。那麼差值的平方單位應該是千萬級別的。那我們不太好描述自己做的模型效果。於是乾脆就開個根號就好了。我們誤差的結果就跟我們資料是乙個級別的,在描述模型的時候就說,我們模型的誤差是多少萬元

平均絕對誤差mae

公式

類似l1損失

r squared

公式

轉化

線性回歸最小化損失函式

損失函式是乙個凸函式,

尋找損失函式的最低點來得到線性函式,找到的點只是訓練資料集中的損失函式最低點,相對比較好的結果

梯度下降方法

梯度下降是一元的解決方法,還有多元的牛頓方法

對一元的損失函式為什麼不求導為0:不是所有的方程都有解,(方程作為矩陣來求,並不是所有的矩陣都會有逆的);當資料很大時,一次性求解計算量會很大

多元函式每一元的偏導,

線性回歸與正則化

正則化(優化,有約束的去逼近結果)防止函式過擬合

import numpy as np

import matplotlib.pyplot as plt

from sklearn import datasets

#資料集的載入

boston = datasets.load_boston(

)#檢視資料集的鍵值

# print(boston.keys())

# print('feature_names:',boston.feature_names) #樣本的特徵名稱

# print('data:',boston.data[1]) #樣本資料

# print('target:',boston.target[1]) #樣本標籤

# print('descr',boston.descr) #樣本描述

x = boston.data[:,

5]#獲取樣本前5行

y = boston.target #獲取標籤

#繪圖展示

# plt.scatter(x,y)

# plt.axis([0,10,0,60])

# plt.show()

x = x[y<50]

#減少異常值,大於50的刪除

y = y[y<50]

# print(x.shape,y.shape)

# 計算線性方程

from sklearn.model_selection import train_test_split

#分割資料 test_size=0.2測試集所佔的比例

x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=

0.2,random_state=

999)

print

('x_train:'

,x_train.shape,

'x_test'

,x_test.shape)

# 訓練簡單線性回歸

from sklearn.linear_model import linearregression

reg = linearregression(

)reg.fit(x_train,y_train)

#獲得線性方程的斜率,和截距

print

('斜率:'

,reg.coef_,

'截距:'

,reg.intercept_)

#計算測試資料的得分

print

('得分:'

,reg.score(x_test,y_test)

)# 繪製圖形

# plt.scatter(x_train,y_train) #y_train : 訓練用到的真實資料

# plt.show()

#**測試資料

y_predict = reg.predict(x_test)

print

(y_predict)

# 衡量線性回歸的mse,rmse,mae

from sklearn.metrics import mean_absolute_error,mean_squared_error,r2_score

mse_test = mean_squared_error(y_test,y_predict)

print

('mse:'

,mse_test)

mae_test = mean_absolute_error(y_test,y_predict)

print

('mae:'

,mae_test)

from math import sqrt

rmse_test = sqrt(mse_test)

print

('rmse:'

,rmse_test)

r2 = r2_score(y_test,y_predict)

print

('r2:'

,r2)

2 線性回歸

模型的可解釋性 對loss.sum backward 的理解 對.sum 的理解 import torch x torch.arange 4.0 x.requires grad true y 2 torch.dot x,x y.backward x.grad 輸出 tensor 0.4.8.12.x...

回歸的線性模型(2)

其實越往後面越發現自己之前認識的片面性,但是對我這種記性不好的人來說還是要寫一點東西總結一下,以便之後翻查,審視自己當初的思路有沒有錯誤。不當之處還請各位及時批評。前文已經看到,採用最大似然方法對目標變數的分布進行點估計時,容易產生過擬合現象,通過引入分布引數的先驗概率來引入正則化項,來限制模型複雜...

2 非線性回歸

import keras import numpy as np import matplotlib.pyplot as plt sequential按順序構成的模型 from keras.models import sequential dense全連線層 from keras.layers imp...