當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python sklearn SplineTransformer用法及代碼示例


本文簡要介紹python語言中 sklearn.preprocessing.SplineTransformer 的用法。

用法:

class sklearn.preprocessing.SplineTransformer(n_knots=5, degree=3, *, knots='uniform', extrapolation='constant', include_bias=True, order='C')

為特征生成單變量 B-spline 基。

為每個特征生成一個由多項式階=`degree`的n_splines=n_knots + degree - 1(n_knots - 1 for extrapolation="periodic")樣條基函數(B-splines)組成的新特征矩陣。

在用戶指南中閱讀更多信息。

參數

n_knots整數,默認=5

如果 knots 等於 {‘uniform’, ‘quantile’} 之一,則樣條線的結數。必須大於或等於 2。如果 knots 類似於數組,則忽略。

degree整數,默認=3

樣條基的多項式次數。必須是非負整數。

knots{‘uniform’, ‘quantile’} 或形狀類似數組 (n_knots, n_features),默認=‘uniform’

設置結位置,使得第一個結 <= 特征 <= 最後一個結。

  • 如果‘uniform’、n_knots 節點數從特征的最小值到最大值均勻分布。
  • 如果‘quantile’,它們沿著特征的分位數均勻分布。
  • 如果給出類似數組,它直接指定排序的結位置,包括邊界結。請注意,在內部,degree 結點數量添加在第一個結點之前,最後一個結點之後添加相同的數量。
extrapolation{‘error’, ‘constant’, ‘linear’, ‘continue’, ‘periodic’},默認='常量'

如果 ‘error’,訓練特征的最小值和最大值之外的值會引發 ValueError 。如果‘constant’,則將特征的最小值和最大值處的樣條值用作常數外推。如果‘linear’,使用線性外插。如果‘continue’,樣條線按原樣外推,即 scipy.interpolate.BSpline 中的選項extrapolate=True。如果‘periodic’,則使用周期等於第一個結和最後一個結之間距離的周期樣條。周期樣條在第一個和最後一個結處強製執行相等的函數值和導數。例如,這可以避免在從自然周期 “day-of-year” 輸入特征派生的樣條特征中引入在 12 月 31 日和 1 月 1 日之間的任意跳躍。在這種情況下,建議手動設置節點值來控製周期。

include_bias布爾,默認=真

如果為 True(默認),則刪除特征數據範圍內的最後一個樣條元素。由於B-splines 對每個數據點的樣條基函數求和為一個,它們隱含地包含一個偏差項,即一列。它充當線性模型中的截距項。

order{‘C’,‘F’},默認=‘C’

輸出數組的順序。 “F”階計算速度更快,但可能會減慢後續估計器的速度。

屬性

bsplines_形狀列表(n_features,)

BSplines 對象列表,每個特征一個。

n_features_in_int

輸入特征的總數。

feature_names_in_ndarray 形狀(n_features_in_,)

擬合期間看到的特征名稱。僅當 X 具有全為字符串的函數名稱時才定義。

n_features_out_int

輸出特征的總數,計算為 n_features * n_splines ,其中 n_splines 是 B-splines 的基元素數,n_knots + degree - 1 用於非周期性樣條,n_knots - 1 用於周期性樣條。如果 include_bias=False ,那麽它隻是 n_features * (n_splines - 1)

注意

高度數和大量節點會導致過度擬合。

參看例子/linear_model/plot_polynomial_interpolation.py.

例子

>>> import numpy as np
>>> from sklearn.preprocessing import SplineTransformer
>>> X = np.arange(6).reshape(6, 1)
>>> spline = SplineTransformer(degree=2, n_knots=3)
>>> spline.fit_transform(X)
array([[0.5 , 0.5 , 0.  , 0.  ],
       [0.18, 0.74, 0.08, 0.  ],
       [0.02, 0.66, 0.32, 0.  ],
       [0.  , 0.32, 0.66, 0.02],
       [0.  , 0.08, 0.74, 0.18],
       [0.  , 0.  , 0.5 , 0.5 ]])

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.preprocessing.SplineTransformer。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。