當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。