在平常處理回歸模型的時(shí)候,大部分是涉及到的是簡(jiǎn)單線性和多元線性辽慕,那么非線性的要怎么表達(dá)呢京腥?這就要引進(jìn)sklearn.preprocessing.PolynomialFeatures,在建模過(guò)程中專門生成多項(xiàng)式特征溅蛉,并且多項(xiàng)式包含的是相互影響的特征集公浪,比如:一個(gè)輸入樣本是2維的。形式如[a,b] ,則二階多項(xiàng)式的特征集如下[1,a,b,a^2,ab,b^2]船侧。
官網(wǎng)文檔:http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.PolynomialFeatures.html
參數(shù):degree : integer欠气,多項(xiàng)式階數(shù),默認(rèn)為2镜撩;
interaction_only : boolean, default = False预柒,如果值為true(默認(rèn)是false),則會(huì)產(chǎn)生相互影響的特征集;
include_bias : boolean袁梗,是否包含偏差列宜鸯。
示例:
>>> X = np.arange(6).reshape(3, 2)
>>> X
array([[0, 1],
? ? ? [2, 3],
? ? ? [4, 5]])
>>> poly = PolynomialFeatures(2) #設(shè)置多項(xiàng)式階數(shù)為2遮怜,其他的默認(rèn)
>>> poly.fit_transform(X)
array([[? 1.,? 0.,? 1.,? 0.,? 0.,? 1.],
? ? ? [? 1.,? 2.,? 3.,? 4.,? 6.,? 9.],
? ? ? [? 1.,? 4.,? 5.,? 16.,? 20.,? 25.]])
>>> poly = PolynomialFeatures(interaction_only=True)#默認(rèn)的階數(shù)是2淋袖,同時(shí)設(shè)置交互關(guān)系為true
>>> poly.fit_transform(X)
array([[? 1.,? 0.,? 1.,? 0.],
? ? ? [? 1.,? 2.,? 3.,? 6.],
? ? ? [? 1.,? 4.,? 5.,? 20.]])
上面的數(shù)組中,每一列是一個(gè)特征锯梁〖赐耄可以看到當(dāng)interaction_only=False時(shí),它的多項(xiàng)式輸出矩陣就是[1,a,b,a^2,ab,b^2]∧暗剩現(xiàn)在將interaction_only=True拜姿。這時(shí)就是只找交互作用的多項(xiàng)式輸出矩陣。例如[a,b]的多項(xiàng)式交互式輸出[1,a,b,ab]冯遂,不存在自己與自己交互的情況如;a^2或者a*b^2之類的蕊肥。
至此就可以用轉(zhuǎn)換后的數(shù)據(jù)輸入回歸模型進(jìn)行非線性回歸建模和訓(xùn)練了。