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)[source]#
鄰域成分分析。
鄰域成分分析 (NCA) 是一種用於度量學習的機器學習演算法。它以監督方式學習線性轉換,以提高轉換空間中隨機最近鄰規則的分類準確性。
請在使用者指南中閱讀更多資訊。
- 參數:
- n_componentsint,預設值=None
投影空間的首選維度。如果為 None,則會設定為
n_features
。- init{‘auto’, ‘pca’, ‘lda’, ‘identity’, ‘random’} 或形狀為 (n_features_a, n_features_b) 的 ndarray,預設值=’auto’
線性轉換的初始化。可能的選項為
'auto'
、'pca'
、'lda'
、'identity'
、'random'
以及形狀為(n_features_a, n_features_b)
的 numpy 陣列。'auto'
根據
n_components
,選擇最合理的初始化。如果n_components <= min(n_features, n_classes - 1)
,則使用'lda'
,因為它使用標籤資訊。如果不是,但n_components < min(n_features, n_samples)
,則使用'pca'
,因為它會將資料投影到有意義的方向(變異數較大的方向)。否則,我們只使用'identity'
。
'lda'
傳遞到
fit
的輸入的min(n_components, n_classes)
個最具鑑別性的成分將用於初始化轉換。(如果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_startbool,預設值=False
如果為
True
且先前已呼叫過fit
,則先前呼叫fit
的解決方案將用作初始線性轉換(n_components
和init
將被忽略)。- max_iterint,預設值=50
最佳化中的最大迭代次數。
- tolfloat,預設值=1e-5
最佳化的收斂容差。
- callbackcallable,預設值=None
如果不是
None
,則會在最佳化器的每次迭代後呼叫此函式,並將目前解(扁平轉換矩陣)和迭代次數作為引數。如果想要檢查或儲存每次迭代後找到的轉換,這可能會很有用。- verboseint,預設值=0
如果為 0,則不會列印任何進度訊息。如果為 1,則會將進度訊息列印到 stdout。如果 > 1,則會列印進度訊息,且
scipy.optimize.minimize
的disp
參數會設定為verbose - 2
。- random_stateint 或 numpy.RandomState,預設值=None
一個虛擬隨機數生成器物件,或當它是整數時,作為其種子。如果
init='random'
,則使用random_state
來初始化隨機轉換。如果init='pca'
,則在初始化轉換時,將random_state
作為參數傳遞給 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]Wikipedia 上關於鄰域成分分析的條目 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)[原始碼]#
擬合資料,然後轉換它。
使用可選參數
fit_params
將轉換器擬合到X
和y
,並返回X
的轉換版本。- 參數:
- X形狀為 (n_samples, n_features) 的類陣列
輸入樣本。
- y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列,預設值=None
目標值(對於無監督轉換為 None)。
- **fit_paramsdict
額外的擬合參數。
- 返回:
- X_new形狀為 (n_samples, n_features_new) 的 ndarray 陣列
轉換後的陣列。
- get_feature_names_out(input_features=None)[原始碼]#
取得轉換的輸出特徵名稱。
輸出特徵名稱將以小寫的類別名稱作為前綴。例如,如果轉換器輸出 3 個特徵,則輸出特徵名稱為:
["class_name0", "class_name1", "class_name2"]
。- 參數:
- input_features字串或 None 的類陣列,預設值=None
僅用於使用在
fit
中看到的名稱來驗證特徵名稱。
- 返回:
- feature_names_out字串物件的 ndarray
轉換後的特徵名稱。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請查看使用指南,了解路由機制如何運作。
- 返回:
- routingMetadataRequest
封裝路由資訊的
MetadataRequest
。
- get_params(deep=True)[原始碼]#
取得此估算器的參數。
- 參數:
- deepbool,預設值=True
如果為 True,則會傳回此估算器和所包含的子物件(即估算器)的參數。
- 返回:
- paramsdict
對應到其值的參數名稱。
- set_output(*, transform=None)[原始碼]#
設定輸出容器。
請參閱介紹 set_output API,以取得如何使用 API 的範例。
- 參數:
- transform{"default", "pandas", "polars"},預設值=None
設定
transform
和fit_transform
的輸出。"default"
:轉換器的預設輸出格式"pandas"
:DataFrame 輸出"polars"
:Polars 輸出None
:轉換組態未變更
在 1.4 版本中新增:新增了
"polars"
選項。
- 返回:
- self估算器實例
估算器實例。