線性回歸演算法是使用線性方程對資料集進行擬合的演算法,是乙個非常常見的回歸演算法
就是經典的最小二乘法問題 :最小化誤差的平方
均方誤差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...