FeatureAgglomeration#

class sklearn.cluster.FeatureAgglomeration(n_clusters=2, *, metric='euclidean', memory=None, connectivity=None, compute_full_tree='auto', linkage='ward', pooling_func=<function mean>, distance_threshold=None, compute_distances=False)[來源]#

聚集特徵。

遞迴地合併成對的特徵叢集。

請參考特徵聚集 vs. 單變量選擇,以取得 FeatureAgglomeration 策略與單變量特徵選擇策略(基於 ANOVA)比較的範例。

更多內容請參閱使用者指南

參數:
n_clustersint 或 None,預設值為 2

要尋找的叢集數量。如果 distance_threshold 不是 None,則必須為 None

metricstr 或可呼叫物件,預設值為 “euclidean”

用於計算連結的度量標準。可以是“euclidean”、“l1”、“l2”、“manhattan”、“cosine”或“precomputed”。如果連結是“ward”,則只接受“euclidean”。如果為“precomputed”,則 fit 方法需要一個距離矩陣作為輸入。

1.2 版新增。

memorystr 或具有 joblib.Memory 介面的物件,預設值為 None

用於快取樹計算的輸出。預設情況下,不進行快取。如果給定字串,則它是快取目錄的路徑。

connectivity類陣列、稀疏矩陣或可呼叫物件,預設值為 None

連通性矩陣。根據資料的給定結構,為每個特徵定義相鄰的特徵。這可以是連通性矩陣本身,也可以是將資料轉換為連通性矩陣的可呼叫物件,例如從 kneighbors_graph 衍生而來。預設值為 None,即階層式叢集演算法是非結構化的。

compute_full_tree‘auto’ 或 bool,預設值為 ‘auto’

n_clusters 時提前停止樹的建構。如果叢集的數量與特徵的數量相比不大,則這對於減少計算時間很有用。只有在指定連通性矩陣時,此選項才有用。另請注意,當改變叢集數量並使用快取時,計算完整的樹可能是有利的。如果 distance_threshold 不是 None,則必須為 True。預設情況下,compute_full_tree 為 “auto”,當 distance_threshold 不是 Nonen_clusters 小於 100 或 0.02 * n_samples 的最大值時,它等效於 True。否則,“auto” 等效於 False

linkage{“ward”, “complete”, “average”, “single”},預設值為 “ward”

要使用的連結標準。連結標準決定了在特徵集合之間使用哪個距離。該演算法將合併使此標準最小化的叢集對。

  • “ward” 使合併的叢集的變異數最小化。

  • “complete” 或最大連結使用兩個集合的所有特徵之間的距離最大值。

  • “average” 使用兩個集合的每個特徵的距離平均值。

  • “single” 使用兩個集合的所有特徵之間的距離最小值。

pooling_func可呼叫物件,預設值為 np.mean

這會將聚集特徵的值組合為單個值,並且應接受形狀為 [M, N] 的陣列和關鍵字參數 axis=1,並將其縮減為大小為 [M] 的陣列。

distance_thresholdfloat,預設值為 None

連結距離臨界值,高於或等於此臨界值的叢集將不會合併。如果不是 None,則 n_clusters 必須為 None,並且 compute_full_tree 必須為 True

0.21 版新增。

compute_distancesbool,預設值為 False

即使不使用 distance_threshold,也會計算叢集之間的距離。這可用於製作樹狀圖視覺化,但會引入計算和記憶體額外負擔。

0.24 版新增。

屬性:
n_clusters_int

演算法找到的叢集數量。如果 distance_threshold=None,則它將等於給定的 n_clusters

labels_形狀為 (n_features,) 的類陣列

每個特徵的叢集標籤。

n_leaves_int

階層式樹中的葉子數。

n_connected_components_int

圖中連通元件的估計數量。

在版本 0.21 中新增:n_connected_components_ 已被新增以取代 n_components_

n_features_in_int

fit 期間看到的特徵數量。

0.24 版新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

fit 期間看到的特徵名稱。僅當 X 具有全部為字串的特徵名稱時才定義。

在版本 1.0 中新增。

children_形狀為 (n_nodes-1, 2) 的類陣列

每個非葉節點的子節點。小於 n_features 的值對應於樹的葉節點,這些葉節點是原始樣本。大於或等於 n_features 的節點 i 是一個非葉節點,其子節點為 children_[i - n_features]。或者,在第 i 次迭代時,children[i][0] 和 children[i][1] 會合併以形成節點 n_features + i

distances_形狀為 (n_nodes-1,) 的類陣列

children_ 中對應位置的節點之間的距離。僅當使用 distance_thresholdcompute_distances 設定為 True 時才會計算。

另請參閱

AgglomerativeClustering

針對樣本而非特徵進行聚合式分群。

ward_tree

使用 ward 連接的階層式分群。

範例

>>> import numpy as np
>>> from sklearn import datasets, cluster
>>> digits = datasets.load_digits()
>>> images = digits.images
>>> X = np.reshape(images, (len(images), -1))
>>> agglo = cluster.FeatureAgglomeration(n_clusters=32)
>>> agglo.fit(X)
FeatureAgglomeration(n_clusters=32)
>>> X_reduced = agglo.transform(X)
>>> X_reduced.shape
(1797, 32)
fit(X, y=None)[原始碼]#

將階層式分群擬合到資料。

參數:
X形狀為 (n_samples, n_features) 的類陣列

資料。

y已忽略

未使用,此處為遵循慣例以保持 API 的一致性。

傳回值:
self物件

傳回轉換器。

property fit_predict#

擬合並傳回每個樣本的分群指派結果。

fit_transform(X, y=None, **fit_params)[原始碼]#

擬合資料,然後轉換資料。

使用選用參數 fit_params 將轉換器擬合到 Xy,並傳回 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

參數名稱對應到它們的值。

inverse_transform(X=None, *, Xt=None)[原始碼]#

反轉轉換並傳回大小為 n_features 的向量。

參數:
X形狀為 (n_samples, n_clusters) 或 (n_clusters,) 的類陣列

要指派給每個樣本叢集的值。

Xt形狀為 (n_samples, n_clusters) 或 (n_clusters,) 的類陣列

要指派給每個樣本叢集的值。

自版本 1.5 起已棄用:Xt 已在 1.5 版中棄用,並將在 1.7 版中移除。請改用 X

傳回值:
X形狀為 (n_samples, n_features) 或 (n_features,) 的 ndarray

大小為 n_samples 的向量,其中包含指派給每個樣本叢集的 Xred 值。

set_output(*, transform=None)[原始碼]#

設定輸出容器。

請參閱引入 set_output API以取得如何使用 API 的範例。

參數:
transform{“default”, “pandas”, “polars”},預設值為 None

設定 transformfit_transform 的輸出。

  • "default":轉換器的預設輸出格式

  • "pandas":DataFrame 輸出

  • "polars":Polars 輸出

  • None:轉換設定保持不變

在版本 1.4 中新增:新增了 "polars" 選項。

傳回值:
self估算器執行個體

估算器執行個體。

set_params(**params)[原始碼]#

設定此估算器的參數。

此方法適用於簡單的估算器以及巢狀物件(例如 Pipeline)。後者具有 <component>__<parameter> 形式的參數,因此可以更新巢狀物件的每個元件。

參數:
**paramsdict

估算器參數。

傳回值:
self估算器執行個體

估算器執行個體。

transform(X)[原始碼]#

使用建立的分群轉換新的矩陣。

參數:
X形狀為 (n_samples, n_features) 或 (n_samples, n_samples) 的類陣列

一個 M x N 陣列,其中 M 個觀察值位於 N 個維度中,或一個長度為 M 的陣列,其中包含 M 個一維觀察值。

傳回值:
Y形狀為 (n_samples, n_clusters) 或 (n_clusters,) 的 ndarray

每個特徵叢集的彙總值。