Nystroem#
- class sklearn.kernel_approximation.Nystroem(kernel='rbf', *, gamma=None, coef0=None, degree=None, kernel_params=None, n_components=100, random_state=None, n_jobs=None)[source]#
使用训练数据子集逼近核映射。
使用数据子集作为基来构建任意核的近似特征映射。
在 用户指南 中了解更多信息。
版本 0.13 中新增。
- 参数:
- kernelstr 或 callable,默认为’rbf’
要逼近的核映射。可调用对象应接受两个参数以及作为
kernel_params
传递给此对象的关键字参数,并应返回一个浮点数。- gammafloat,默认为 None
RBF、拉普拉斯、多项式、指数 chi2 和 sigmoid 核的 Gamma 参数。默认值的解释留给内核;参见 sklearn.metrics.pairwise 的文档。其他内核忽略。
- coef0float,默认为 None
多项式和 sigmoid 核的零系数。其他内核忽略。
- degreefloat,默认为 None
多项式核的度数。其他内核忽略。
- kernel_paramsdict,默认为 None
作为可调用对象传递的核函数的其他参数(关键字参数)。
- n_componentsint,默认为 100
要构建的特征数量。将使用多少个数据点来构建映射。
- random_stateint、RandomState 实例或 None,默认为 None
伪随机数生成器,用于控制对训练数据的
n_components
进行无替换的均匀采样以构建基本核。传递一个整数以在多次函数调用中获得可重复的输出。参见 词汇表。- n_jobsint,默认为 None
用于计算的作业数。这是通过将核矩阵分解成
n_jobs
个均匀切片并在并行中计算它们来实现的。None
表示 1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有处理器。有关更多详细信息,请参见 词汇表。版本 0.24 中新增。
- 属性:
- components_形状为 (n_components, n_features) 的 ndarray
用于构建特征映射的训练点子集。
- component_indices_形状为 (n_components) 的 ndarray
训练集中
components_
的索引。- normalization_形状为 (n_components, n_components) 的 ndarray
嵌入所需的归一化矩阵。
components_
上的核矩阵的平方根。- n_features_in_int
在 拟合 期间看到的特征数量。
版本 0.24 中新增。
- feature_names_in_形状为 (
n_features_in_
,) 的 ndarray 在 拟合 期间看到的特征名称。仅当
X
的特征名称全部为字符串时才定义。版本 1.0 中新增。
另请参阅
AdditiveChi2Sampler
加性 chi2 核的近似特征映射。
PolynomialCountSketch
通过张量草图进行多项式核逼近。
RBFSampler
使用随机傅里叶特征逼近 RBF 核特征映射。
SkewedChi2Sampler
“偏斜卡方”核的近似特征映射。
sklearn.metrics.pairwise.kernel_metrics
内置内核列表。
参考文献
Williams, C.K.I. and Seeger, M. “Using the Nystroem method to speed up kernel machines”, Advances in neural information processing systems 2001
T. Yang, Y. Li, M. Mahdavi, R. Jin and Z. Zhou “Nystroem Method vs Random Fourier Features: A Theoretical and Empirical Comparison”, Advances in Neural Information Processing Systems 2012
示例
>>> from sklearn import datasets, svm >>> from sklearn.kernel_approximation import Nystroem >>> X, y = datasets.load_digits(n_class=9, return_X_y=True) >>> data = X / 16. >>> clf = svm.LinearSVC() >>> feature_map_nystroem = Nystroem(gamma=.2, ... random_state=1, ... n_components=300) >>> data_transformed = feature_map_nystroem.fit_transform(data) >>> clf.fit(data_transformed, y) LinearSVC() >>> clf.score(data_transformed, y) 0.9987...
- fit(X, y=None)[source]#
将估计器拟合到数据。
对训练点子集进行采样,计算这些点上的核,并计算归一化矩阵。
- 参数:
- X类数组,形状 (n_samples, n_features)
训练数据,其中
n_samples
是样本数,n_features
是特征数。- y类数组,形状 (n_samples,) 或 (n_samples, n_outputs),默认为 None
目标值(对于无监督转换,为 None)。
- 返回:
- self对象
返回实例本身。
- fit_transform(X, y=None, **fit_params)[source]#
拟合数据,然后转换它。
使用可选参数
fit_params
将转换器拟合到X
和y
,并返回X
的转换版本。- 参数:
- X形状为 (n_samples, n_features) 的类数组
输入样本。
- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组,默认为 None
目标值(对于无监督转换,为 None)。
- **fit_params字典
附加拟合参数。
- 返回:
- X_new形状为 (n_samples, n_features_new) 的 ndarray 数组
转换后的数组。
- get_feature_names_out(input_features=None)[source]#
获取转换后的输出特征名称。
输出的特征名称将以小写的类名作为前缀。例如,如果转换器输出3个特征,则输出的特征名称为:
["class_name0", "class_name1", "class_name2"]
。- 参数:
- input_features字符串类数组或 None,默认为 None
仅用于使用在
fit
中看到的名称验证特征名称。
- 返回:
- feature_names_out字符串对象的 ndarray
转换后的特征名称。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查看用户指南,了解路由机制的工作原理。
- 返回:
- routingMetadataRequest
一个
MetadataRequest
封装了路由信息。
- get_params(deep=True)[source]#
获取此估计器的参数。
- 参数:
- deep布尔值,默认为 True
如果为 True,则将返回此估计器和包含的作为估计器的子对象的参数。
- 返回:
- params字典
参数名称与其值的映射。
- set_output(*, transform=None)[source]#
设置输出容器。
请参阅介绍 set_output API,了解如何使用此 API 的示例。
- 参数:
- transform{"default", "pandas", "polars"},默认为 None
配置
transform
和fit_transform
的输出。"default"
:转换器的默认输出格式"pandas"
:DataFrame 输出"polars"
:Polars 输出None
:转换配置保持不变
版本 1.4 中新增: 添加了
"polars"
选项。
- 返回:
- self估计器实例
估计器实例。