邏輯回歸 4 新增多項式特徵

2022-08-04 00:24:16 字數 1852 閱讀 1872

邏輯回歸解決二分類問題,但是像下圖所示的非線性資料集,是沒辦法用一條直線分割為兩部分的。

對於此資料集,用乙個圓形或者橢圓形分割是比較合理的,圓形的表示式:\(x_1^2 + x_2^2 - r^2 = 0\)

為了讓邏輯回歸學習到這樣的決策邊界,我們需要引入多項式項,\(x_1^2,x_2^2\)分別是\(x_1,x_2\)的二次多項式。使用多項式後,可以定義任意圓心位置的圓、橢圓或不規則形狀的決策邊界。

構造資料集

邏輯回歸演算法測試

from mylib.logisticregression import logisticregression

log = logisticregression()

log.fit(x,y)

演算法正確率只有60%

畫出決策邊界:

可以看出,用線性分類來擬合此資料集是錯誤的

from sklearn.pipeline import pipeline

from sklearn.preprocessing import polynomialfeatures

from sklearn.preprocessing import standardscaler

def polynomiallogisticregression(degree):

return pipeline([

('poly',polynomialfeatures(degree=degree)),

('stand_scalor',standardscaler()),

('log_reg',logisticregression())

])poly_log_reg = polynomiallogisticregression(2)

poly_log_reg.fit(x,y)

注意:管道中的邏輯回歸是自己實現的,但是能準確的傳遞到管道中,這是因為我們是仿照scikit-learn的標準實現的

新增多項式後,演算法的準確率提高到了95%

決策邊界:

當多項式項為20時

隨著項數的增加,演算法變得複雜,趨於過擬合,但為了得到複雜形狀的決策邊界,又不能過多的減小多項式項,此時,應該考慮模型的正則化,見下章。

多項式特徵

在使用單項式特徵的時候,模型函式的型式是y a x b y c z d y a x b y c z d y a x b y c z d,但我們還可以加入多項式作為新的特徵,例如二項式增加以下特徵 x 在網路搜尋中使用 from sklearn.pipeline import pipeline fro...

多項式回歸

import numpy as np import matplotlib.pyplot as plt x np.random.uniform 3,3,size 100 x x.reshape 1,1 y 0.5 x 2 x 2 np.random.normal 0,1,100 plt.scatter...

多項式回歸

多項式回歸 import torch import numpy defmake features x 獲取 x,x 2,x 3 的矩陣 x x.unsqueeze 1 將一維資料變為 n,1 二維矩陣形式 return torch.cat x i for i in range 1 4 1 按列拼接 ...