NeighborhoodComponentsAnalysis#

class sklearn.neighbors.NeighborhoodComponentsAnalysis(n_components=None, *, init='auto', warm_start=False, max_iter=50, tol=1e-05, callback=None, verbose=0, random_state=None)[源代码]#

邻里要素分析。

邻居分量分析(NCA)是一种用于度量学习的机器学习算法。它以监督的方式学习线性变换,以提高变换空间中随机近邻规则的分类准确性。

阅读更多的 User Guide .

参数:
n_componentsint,默认=无

投影空间的首选维度。如果没有,则将设置为 n_features .

init' Auto '、'、' identity '、'随机'}或形状的nd数组 (n_features_a,n_features_b),默认='自动'

线性变换的预设。可能的选项包括 'auto' , 'pca' , 'lda' , 'identity' , 'random' ,以及麻木的形状阵列 (n_features_a, n_features_b) .

  • 'auto'

    取决于 n_components ,选择最合理的初始化。如果 n_components <= min(n_features, n_classes - 1) 我们使用 'lda' ,因为它使用标签信息。如果不是,但是 n_components < min(n_features, n_samples) ,我们使用 'pca' ,因为它将数据投影到有意义的方向(方差较高的方向)。否则,我们就用 'identity' .

  • 'pca'

    n_components 传递给的输入的主要成分 fit 将用于初始化转换。(见 PCA )

  • 'lda'

    min(n_components, n_classes) 传递给的输入中最具区分性的成分 fit 将用于初始化转换。(如果 n_components > n_classes ,其余成分将为零。)(见 LinearDiscriminantAnalysis )

  • 'identity'

    如果 n_components 严格小于传递给的输入的维度 fit ,单位矩阵将被截断到第一个 n_components 行。

  • 'random'

    初始转换将是形状的随机数组 (n_components, n_features) .每个值都是从标准正态分布中抽样的。

  • numpy数组

    n_features_b 必须与传递给的输入的维度相匹配 fit 并且n_features_a必须小于或等于该值。如果 n_componentsNone , n_features_a 必须匹配它。

warm_start布尔,默认=假

如果 Truefit 之前调用过,则上一次调用的解决方案 fit 用作初始线性变换 (n_componentsinit 将被忽略)。

max_iterint,默认=50

优化中的最大迭代次数。

tol浮点数,默认值= 1 e-5

优化的收敛容忍度。

callback可调用,默认值=无

如果不是 None ,此函数将在优化器的每次迭代后调用,并将当前解决方案(扁平化变换矩阵)和迭代次数作为参数。这在希望检查或存储每次迭代后发现的转换的情况下可能很有用。

verboseint,默认=0

如果为0,则不会打印任何进度消息。如果为1,进度消息将打印到stdout。如果> 1,将打印进度消息并 disp 参数 scipy.optimize.minimize 将被设置为 verbose - 2 .

random_stateint或numpy。RandomState,默认=无

伪随机数生成器对象或其种子if int。If init='random' , random_state 用于初始化随机变换。如果 init='pca' , random_state 在初始化转换时作为参数传递给PCA。传递int以获得跨多个函数调用的可重复结果。看到 Glossary .

属性:
components_ndrow形状数组(n_components,n_features)

在装配过程中学习的线性变换。

n_features_in_int

期间看到的功能数量 fit .

Added in version 0.24.

n_iter_int

计算优化器执行的迭代次数。

random_state_numpy.RandomState

初始化期间使用的伪随机数生成器对象。

feature_names_in_ :nd形状数组 (n_features_in_ ,)nd数组形状(

Names of features seen during fit. Defined only when X has feature names that are all strings.

Added in version 1.0.

参见

sklearn.discriminant_analysis.LinearDiscriminantAnalysis

线性辨别分析。

sklearn.decomposition.PCA

主成分分析(PCA)。

引用

[1]

J. Goldberger, G. Hinton, S. Roweis, R. Salakhutdinov. "Neighbourhood Components Analysis". Advances in Neural Information Processing Systems. 17, 513-520, 2005. http://www.cs.nyu.edu/~roweis/papers/ncanips.pdf

[2]

维基百科关于邻里要素分析的条目https://en.wikipedia.org/wiki/Neighbourhood_components_analysis

示例

>>> from sklearn.neighbors import NeighborhoodComponentsAnalysis
>>> from sklearn.neighbors import KNeighborsClassifier
>>> from sklearn.datasets import load_iris
>>> from sklearn.model_selection import train_test_split
>>> X, y = load_iris(return_X_y=True)
>>> X_train, X_test, y_train, y_test = train_test_split(X, y,
... stratify=y, test_size=0.7, random_state=42)
>>> nca = NeighborhoodComponentsAnalysis(random_state=42)
>>> nca.fit(X_train, y_train)
NeighborhoodComponentsAnalysis(...)
>>> knn = KNeighborsClassifier(n_neighbors=3)
>>> knn.fit(X_train, y_train)
KNeighborsClassifier(...)
>>> print(knn.score(X_test, y_test))
0.933333...
>>> knn.fit(nca.transform(X_train), y_train)
KNeighborsClassifier(...)
>>> print(knn.score(nca.transform(X_test), y_test))
0.961904...
fit(X, y)[源代码]#

根据给定的训练数据对模型进行匹配。

参数:
X形状类似阵列(n_samples,n_features)

训练样本。

y形状类似阵列(n_samples,)

相应的培训标签。

返回:
self对象

拟合估计量。

fit_transform(X, y=None, **fit_params)[源代码]#

适应数据,然后对其进行转换。

适合变压器 Xy 具有可选参数 fit_params 并返回的转换版本 X .

参数:
X形状类似阵列(n_samples,n_features)

输入样本。

y形状为(n_samples,)或(n_samples,n_outputs)的阵列状, 默认值=无

目标值(无监督转换)。

**fit_paramsdict

其他适合参数。

返回:
X_newndray形状数组(n_samples,n_features_new)

变形的数组。

get_feature_names_out(input_features=None)[源代码]#

获取用于转换的输出要素名称。

输出的功能名称将以大写的类别名称为开头。例如,如果Transformer输出3个特征,则输出的特征名称为: ["class_name0", "class_name1", "class_name2"] .

参数:
input_features字符串或无的类数组,默认=无

仅用于通过中看到的名称验证要素名称 fit .

返回:
feature_names_out字符串对象的nd数组

转换的功能名称。

get_metadata_routing()[源代码]#

获取此对象的元数据路由。

请检查 User Guide 关于路由机制如何工作。

返回:
routingMetadataRequest

A MetadataRequest 封装路由信息。

get_params(deep=True)[源代码]#

获取此估计器的参数。

参数:
deep布尔,默认=True

如果为True,将返回此估计量和包含的作为估计量的子对象的参数。

返回:
paramsdict

参数名称映射到其值。

set_output(*, transform=None)[源代码]#

设置输出容器。

看到 介绍 set_output API 了解如何使用API的示例。

参数:
transform{“默认”,“pandas”,“polars”},默认=无

配置输出 transformfit_transform .

  • "default" :Transformer的默认输出格式

  • "pandas" :DataFrame输出

  • "polars" :两极输出

  • None :转换配置不变

Added in version 1.4: "polars" 添加了选项。

返回:
self估计器实例

估计实例。

set_params(**params)[源代码]#

设置此估计器的参数。

该方法适用于简单估计器以及嵌套对象(例如 Pipeline ).后者具有以下形式的参数 <component>__<parameter> 以便可以更新嵌套对象的每个组件。

参数:
**paramsdict

估计参数。

返回:
self估计器实例

估计实例。

transform(X)[源代码]#

将学习到的转换应用于给定数据。

参数:
X形状类似阵列(n_samples,n_features)

数据样本。

返回:
X_embeded:形状的nd数组(n_samples,n_components)

数据样本已转换。

提出:
NotFittedError

If fit has not been called before.