機器學習(5)多項式回歸 用基函式擴充套件線性模型

2021-07-28 13:43:34 字數 3222 閱讀 2740

機器學習中的乙個常見模式是使用資料的非線性函式訓練的線性模型。 這種方法保持了線性方法的一般快速的效能,同時允許它們適應更寬範圍的資料。

例如,可以通過從係數構建多項式特徵來擴充套件簡單的線性回歸。 在標準線性回歸情況下,對於二維資料,您可能有乙個類似於下面的模型:

如果我們想要將拋物面擬合到資料而不是平面,我們可以組合二階多項式中的特徵,使得模型看起來像這樣:

(有時令人驚訝的)觀察是,這仍然是乙個線性模型:看到這一點,想象建立乙個新的變數

通過這種重新標記的資料,我們的問題可以寫

我們看到,所得到的多項式回歸是在我們上面考慮的同一類線性模型中(即模型在w中是線性的),並且可以通過相同的技術來求解。 通過考慮使用這些基函式構建的更高維空間內的線性擬合,該模型具有適應更寬範圍的資料的靈活性。

這裡是乙個應用這個想法到一維資料,使用不同程度的多項式特徵的例子:

此圖是使用polynomialfeatures預處理器建立的。 該預處理器將輸入資料矩陣變換為給定度的新資料矩陣。 它可以如下使用:

>>> 

from

sklearn.preprocessing

import

polynomialfeatures

>>>

import

numpy

asnp

>>> x=

np.arange(6

).reshape(3

,2)>>>

xarray([[0, 1],

[2, 3],

[4, 5]])

>>>

poly

=polynomialfeatures

(degree=2

)>>>

poly

.fit_transform(x

)array([[ 1., 0., 1., 0., 0., 1.],

[ 1., 2., 3., 4., 6., 9.],

[ 1., 4., 5., 16., 20., 25.]])

x的特徵已經從

這種預處理可以用流水線(

pipeline

)工具簡化。 表示簡單多項式回歸的單個物件可以被建立並使用如下:

>>> 

from

sklearn.preprocessing

import

polynomialfeatures

>>>

from

sklearn.linear_model

import

linearregression

>>>

from

sklearn.pipeline

import

pipeline

>>>

import

numpy

asnp

>>>

model

=pipeline

([('poly'

,polynomialfeatures

(degree=3

)),...

('linear'

,linearregression

(fit_intercept

=false

))])

>>>

# fit to an order-3 polynomial data

>>> x=

np.arange(5

)>>> y=

3-2*

x+x**

2-x**

3>>>

model

=model

.fit(x

[:,np

.newaxis],y

)>>>

model

.named_steps

['linear'].

coef_

array([ 3., -2., 1., -1.])

在多項式特徵上訓練的線性模型能夠精確地恢復輸入多項式係數。

在某些情況下,不需要包括任何單個特徵的更高的指數,而只需要將最多d個不同特徵相乘的所謂的相互作用特徵。 這些可以從polynomialfeatures設定interaction_only=true獲得。

例如,當處理布林特徵時,對於所有n,

>>> 

from

sklearn.linear_model

import

perceptron

>>>

from

sklearn.preprocessing

import

polynomialfeatures

>>>

import

numpy

asnp

>>> x=

np.array

([[0,0

],[0,

1],[1

,0],[

1,1]])

>>> y=

x[:,0]

^x[:,1

]>>>

yarray([0, 1, 1, 0])

>>> x=

polynomialfeatures

(interaction_only

=true).

fit_transform(x

).astype

(int

)>>>

xarray([[1, 0, 0, 0],

[1, 0, 1, 0],

[1, 1, 0, 0],

[1, 1, 1, 1]])

>>>

clf=

perceptron

(fit_intercept

=false

,n_iter=10

,shuffle

=false).

fit(x,

y)

分類器「**」是完美的:

>>> 

clf.

predict(x

)array([0, 1, 1, 0])

>>>

clf.

score(x

,y)1.0

機器學習筆記 多項式回歸

比如你的資料分布,是符合y 0.5 x 2 x 2的.那你用y ax b去擬合,無論如何都沒法取的很好的效果.通過上面的分析,我們可以看出,我們想做的事情是對樣本做公升維 即增加樣本的特徵數目 sklean中完成這一功能的類叫做polynomialfeatures.classsklearn.prep...

python 機器學習多項式回歸

現實世界的曲線關係都是通過增加多項式實現的,現在解決多項式回歸問題 住房 樣本 樣本影象 import matplotlib.font manager as fm import matplotlib.pyplot as plt myfont fm.fontproperties fname c win...

機器學習 監督學習 (回歸)多項式回歸

多項式回歸 sklearn import numpy as np import matplotlib.pyplot as plt from sklearn.preprocessing import polynomialfeatures from sklearn.linear model import...