線性迴歸與邏輯迴歸
阿新 • • 發佈:2022-03-15
線性迴歸的演算法原理
線性迴歸特性:結果與特徵之間是一次函式
非線性迴歸特性:結果與特徵之間不是一次函式關係,比如二次函式、三次函式
損失函式:
計算每一個樣本點的結果值和當前的函式值的差值。具體到案例,所使用的是殘差平方和,這是一種常用的損失函式
最小二乘法:
只要有一條線,就可以通過損失函式來計算假設結果為這條線的情況下,損失值的大小。這裡的最小二乘法是要找到一組a、b的值,使得損失值達到最小。(這裡的二乘指平方)
線性迴歸的優點
運算速度快(函式簡單)
可解釋性強(有公式)
對線性關係擬合效果好
缺點
預測精度較低(只要求最小損失值)
不相關的特徵會影響結果
容易出現過擬合
邏輯迴歸
邏輯迴歸解決分類問題,在中間過程中,使用的是迴歸方法
這裡涉及了概率對數函式(Logit)的數學推導。在輸出結果時,藉助極大似然估計的方法對預測出的結果進行損失的估計
線性迴歸程式碼
import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split import numpy as np #假設資料偏移量為2.128,並且生成了100個點,作為樣本資料#生成資料的方法 def generateData(): X=[] Y=[] for i in range(0,100): tem_x=[] tem_x.append(i) X.append(tem_x) tem_y=[] tem_y.append(i+2.128+np.random.uniform(-15,15)) y.append(tem_y) plt.scatter(X,y,alpha=0.6)#繪製散點圖,透明度為0.6(顏色淺,好看) return X,y
#主方法 if __name__=='__main__' np.random.seed(0) X,y=generateData() print(len(X)) X_train,X_test,y_train,y_test= train_test_split(X,y,test_size=0.2,random_state=0) regressor=LinearRegression() regressor.fit(X_train,y_train) y_result=regressor.predict(X_test) plt.plot(X_test,y_result,color= 'red',alpha=0.6,linewidth=3,label='Predicted Line')#plotting plt.show()