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


Python sklearn NeighborhoodComponentsAnalysis用法及代码示例


本文简要介绍python语言中 sklearn.neighbors.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) 是一种用于度量学习的机器学习算法。它以有监督的方式学习线性变换,以提高变换空间中随机最近邻规则的分类精度。

在用户指南中阅读更多信息。

参数

n_components整数,默认=无

投影空间的首选维度。如果 None 它将被设置为 n_features

init{‘auto’, ‘pca’, ‘lda’, ‘identity’, ‘random’} 或形状的ndarray(n_features_a,n_features_b),默认='auto'

线性变换的初始化。可能的选项是 'auto''pca''lda''identity''random' 和形状为 (n_features_a, n_features_b) 的 numpy 数组。

  • 'auto'

    根据 n_components ,将选择最合理的初始化。如果 n_components <= n_classes 我们使用 'lda' ,因为它使用标签信息。如果不是,而是 n_components < min(n_features, n_samples) ,我们使用 'pca' ,因为它将数据投射到有意义的方向(那些具有较高方差的方向)。否则,我们只使用 'identity'

  • 'pca'

    传递给 fit 的输入的 n_components 主成分将用于初始化转换。 (参见 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_components 不是 None ,则 n_features_a 必须匹配。

warm_start布尔,默认=假

如果之前调用过Truefit,则使用之前调用fit的解作为初始线性变换(n_componentsinit将被忽略)。

max_iter整数,默认=50

优化中的最大迭代次数。

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

优化的收敛容差。

callback可调用,默认=无

如果不是 None ,则在优化器的每次迭代后调用此函数,将当前解(展平变换矩阵)和迭代次数作为参数。如果想要检查或存储每次迭代后发现的转换,这可能很有用。

verbose整数,默认=0

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

random_stateint 或 numpy.RandomState,默认=无

伪随机数生成器对象或其种子(如果是 int)。如果init='random'random_state用于初始化随机变换。如果 init='pca'random_state 在初始化转换时作为参数传递给 PCA。传递 int 以获得跨多个函数调用的可重现结果。请参阅术语表。

属性

components_ndarray 形状(n_components,n_features)

在拟合过程中学习的线性变换。

n_features_in_int

拟合期间看到的特征数。

n_iter_int

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

random_state_numpy.RandomState

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

feature_names_in_ndarray 形状(n_features_in_,)

拟合期间看到的特征名称。仅当 X 具有全为字符串的函数名称时才定义。

参考

1

J. Goldberger、G. Hinton、S. Roweis、R. Salakhutdinov。 “Neighbourhood Components Analysis”。神经信息处理系统的进展。 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...

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.neighbors.NeighborhoodComponentsAnalysis。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。