線性回歸分析(regression analysis):其資料集是給定乙個函式和他的一些座標點,然後通過回歸分析的演算法,來估計原函式的模型,求得最符合這些資料集的函式解析式。然後我們就可以用來預估未知資料,輸入乙個自變數便會根據這個模型解析式輸出因變數,這些自變數就是特徵向量,因變數即為標籤,而且標籤的值是建立在連續範圍內的。
通俗來講就是我們在做數學題的時候,解未知數的方法。假如給定自變數和函式,通過函式處理自變數,然後獲得函式的解。而回歸分析便是相當於給定自變數和函式的解,然後去求函式。如下圖所示,我們已經知道紅色點座標,然後回歸得到直線,回歸分析屬於監督學習。
上圖只是簡單的一元線性分析,回歸後我們可以得到如f(x
)=a∗
x+bf(x)=a*x+b
f(x)=a
∗x+b
的函式表示式,但更多情況下我們是求解多元線性回歸問題,那應該如何解決呢。
建立數學模型之前,我們先定義如下變數。
3.1梯度下降演算法簡述
實際生活中我們有時也利用梯度下降演算法,比如我們處在一座山的某處位置,但我們並不知道如何下山,於是決定走一步算一步,但每次都沿著最陡峭的地點下山,也就是沿著梯度的負方向前進。但有事也會遇見問題,不能每次都能到達山腳,可能到達山峰的某個區域性最低點。
從上面解釋可以看出,梯度下降不一定能夠找到全域性最優解,有可能是區域性最優解,但此種方法已能幫助我們求解線性回歸問題。另外如果求解的函式是凸函式,梯度下降法得到得解一定是全域性最優解。
3.2 梯度下降演算法相關概念
求解梯度下降演算法之前,我們先了解相關概念。
3.3梯度下降演算法過程
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import linear_model
from mpl_toolkits.mplot3d import axes3d
import seaborn as sns
#read_csv
readdata=pd.read_csv(
'data/advertising.csv'
)data=np.array(readdata.values)
#訓練資料
x_train=data[0:
150,1:
3]y_train=data[0:
150,3]
#測試資料
x_test=data[
150:
200,1:
3]y_test=data[
150:
200,3]
#回歸分析
regr = linear_model.linearregression(
)#進行training set和test set的fit,即是訓練的過程
regr.fit(x_train, y_train)
# 列印出相關係數和截距等資訊
print
('coefficients: \n'
, regr.coef_)
print
('intercept: '
, regr.intercept_)
# the mean square error
print
("residual sum of squares: %.2f"
% np.mean(
(regr.predict(x_test)
- y_test)**2
))# explained variance score: 1 is perfect prediction
print
('variance score: %.2f'
% regr.score(x_test, y_test)
)#得出回歸函式 並自定義資料
x_line=np.linspace(0,
300)
y_line=np.linspace(0,
50)z_line=
0.04699836
*x_line+
0.17913965
*y_line+
3.00431061176
#畫圖fig=plt.figure(
)ax = plt.subplot(
111, projection=
'3d'
)# 建立乙個三維的繪圖工程
ax.scatter(data[:,
1],data[:,
2],data[:,
3],c='red',)
# 繪製資料點
ax.plot(x_line,y_line,z_line,c=
'blue'
)#繪製回歸曲線
其中紅色為資料點,藍色線便為我們回歸之後的曲線,這裡我們是利用sklearn進行線性回歸分析,後續會寫出sklearn教程。如有錯誤之處還請指正,謝謝。
機器學習之線性回歸
訓練樣例 x y 輸入變數 特徵 x ps n 1行,1 列 輸出變數 目標變數 y訓練樣例總數 m 特徵維度 n第 i 個訓練樣例 x i y i 所有訓練樣例的輸入變數組成的矩陣 x ps m行,n 1 列,每行是 x i t 所有訓練樣例的輸出變數組成的矩陣 y ps m行,1 列 下表是某地...
機器學習之線性回歸
線性回歸就是用線性方程去擬合一組資料,x 的最高端是1,用方程可以表示為 h x 0 1x1 n xn我們令 x0 1則上式可以改寫為 h x i 0n ixi tx 既然是擬合的模型,則肯定會存在不符合該模型的點,第 i 個點的真實值與模型 的值之間的差稱為誤差 e h x i y i 假設總共有...
機器學習之線性回歸
機器學習之線性回歸 已有資料是 電視廣告的投入 x 產品銷售量 y import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.linear model import linearregres...