当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。