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 | int, default=None 投影空间的首选尺寸。 如果为None,它将设置为n_features。 |
init | {‘auto’, ‘pca’, ‘lda’, ‘identity’, ‘random’} or ndarray of shape (n_features_a, n_features_b), default=’auto’ 线性变换的初始化。 可能的选项是“自动”,“ pca”,“ lda”,“identity”,“random”和形状为numpy的数组(n_features_a,n_features_b)。 ‘auto’ 根据n_components,将选择最合理的初始化。 如果n_components <= n_classes个,我们使用“ lda”,因为它使用标签信息。 如果不是,但n_components <min(n_features,n_samples),则我们使用“ pca”,因为它将数据投影到有意义的方向(方差较大的方向)。 否则,我们仅使用“身份”。 ‘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 array n_features_b必须匹配传递给fit的输入的维数,并且n_features_a必须小于或等于该值。 如果n_components不为None,则n_features_a必须匹配。* |
warm_start | bool, default=False 如果之前已调用True和fit,则将先前调用fit的解用作初始线性变换(n_components和init将被忽略)。 |
max_iter | int, default=50 优化中的最大迭代次数。 |
tol | float, default=1e-5 优化的收敛容限。 |
callback | callable, default=None 如果不为None,则在优化程序的每次迭代之后都将调用此函数,并以当前解(展平的变换矩阵)和迭代次数为参数。 如果要检查或存储每次迭代后发现的转换,这可能很有用。 |
verbose | int, default=0 如果为0,则不会打印任何进度消息。 如果为1,则将进度消息打印到标准输出。 如果> 1,则将打印进度消息,并将scipy.optimize.minimize的disp参数设置为详细-2。 |
random_state | int or numpy.RandomState, default=None 伪随机数生成器对象或种子(如果为int)。 如果init ='random',则random_state用于初始化随机变换。 如果init ='pca',则在初始化转换时将random_state作为参数传递给PCA。 在多个函数调用之间传递int以获得可重复的结果。 参见:term:词汇表<random_state>。 |
属性 | 说明 |
---|---|
components_ | ndarray of shape (n_components, n_features) 拟合期间学习到的线性变换。 |
n_iter_ | int 计算优化程序执行的迭代次数。 |
random_state_ | numpy.RandomState 初始化期间使用的伪随机数生成器对象。 |
参考资料
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
Wikipedia entry on Neighborhood Components Analysis https://en.wikipedia.org/wiki/Neighbourhood_components_analysis
示例
>>> 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) |
根据给定的训练数据拟合模型。 |
fit_transform (X[, y]) |
适合数据,然后对其进行转换。 |
get_params ([deep]) |
获取此估计量的参数。 |
set_params (**params) |
设置此估算器的参数。 |
transform (X) |
将学习到的转换应用于给定数据。 |
__init__(n_components=None, *, init='auto', warm_start=False, max_iter=50, tol=1e-05, callback=None, verbose=0, random_state=None)
[源码]
初始化, 请参阅help(type())以获得准确的说明
fit(X, y)
[源码]
根据给定的训练数据拟合模型。
参数 | 说明 |
---|---|
X | array-like of shape (n_samples, n_features) 训练样本 |
y | array-like of shape (n_samples,) 相应的训练标签 |
返回值 | 说明 |
---|---|
self | object 返回训练有素的NeighborhoodComponentsAnalysis模型。 |
fit_transform(X, y=None, **fit_params)
[源码]
适合数据,然后对其进行转换。
使用可选参数fit_params将转换器拟合到X和y,并返回X的转换版本。
参数 | 说明 |
---|---|
X | {array-like, sparse matrix, dataframe} of shape (n_samples, n_features) |
y | ndarray of shape (n_samples,), default=None 目标值。 |
**fit_params | dict 其他拟合参数 |
返回值 | 说明 |
---|---|
X_new | ndarray array of shape (n_samples, n_features_new) 转换后的数组。 |
get_params(deep=True)
[源码]
获取此估计量的参数
参数 | 说明 |
---|---|
deep | bool, default=True 如果为True,则将返回此估算器和作为估算器的所包含子对象的参数。 |
返回值 | 说明 |
---|---|
params | mapping of string to any 参数名称映射到其值。 |
set_params(**params)
[源码]
设置此估算器的参数。
该方法适用于简单的估计器以及嵌套对象(例如管道)。 后者的参数格式为
参数 | 说明 |
---|---|
**params | dict 估算器参数 |
返回值 | 说明 |
---|---|
self | object 估算器实例。 |
transform(X)
[源码]
将学习到的转换应用于给定数据。
参数 | 说明 |
---|---|
X | array-like of shape (n_samples, n_features) 数据样本 |
返回值 | 说明 |
---|---|
X_embedded | 形状的ndarray(n_samples,n_components) 数据样本已转换。 |
提出:
NotFittedError
如果之前尚未调用过fit
。