FactorAnalysis#
- class sklearn.decomposition.FactorAnalysis(n_components=None, *, tol=0.01, copy=True, max_iter=1000, noise_variance_init=None, svd_method='randomized', iterated_power=3, rotation=None, random_state=0)[source]#
因子分析 (FA)。
一個簡單的線性生成模型,具有高斯潛在變數。
假設觀察結果是由較低維度潛在因子的線性轉換和添加的高斯雜訊所引起的。在不失一般性的情況下,這些因子的分佈符合具有零均值和單位共變異數的高斯分佈。雜訊也具有零均值和任意對角共變異數矩陣。
如果我們進一步限制模型,假設高斯雜訊甚至是各向同性的(所有對角線上的值都相同),我們將得到
PCA
。FactorAnalysis 使用基於 SVD 的方法,執行所謂的
loading
矩陣(潛在變數到觀察變數的轉換)的最大似然估計。請參閱 使用者指南 以瞭解更多資訊。
在 0.13 版本中新增。
- 參數:
- n_componentsint,預設值 = None
潛在空間的維度,即在
transform
後獲得的X
的成分數量。如果為 None,則 n_components 設定為特徵的數量。- tolfloat,預設值 = 1e-2
對數似然增加的停止容差。
- copybool,預設值 = True
是否複製 X。如果為
False
,則輸入 X 會在擬合期間被覆寫。- max_iterint,預設值 = 1000
最大迭代次數。
- noise_variance_init形狀為 (n_features,) 的類陣列,預設值 = None
每個特徵的雜訊變異數的初始猜測。如果為 None,則預設為 np.ones(n_features)。
- svd_method{‘lapack’, ‘randomized’},預設值 = ‘randomized’
要使用的 SVD 方法。如果為 ‘lapack’,則使用 scipy.linalg 中的標準 SVD;如果為 ‘randomized’,則使用快速的
randomized_svd
函數。預設為 ‘randomized’。對於大多數應用程式,‘randomized’ 將足夠精確,同時提供顯著的速度提升。也可以透過為iterated_power
設定更高的值來提高精確度。如果這還不夠,為了獲得最大精確度,您應該選擇 ‘lapack’。- iterated_powerint,預設值 = 3
冪方法的迭代次數。預設值為 3。僅當
svd_method
等於 ‘randomized’ 時才使用。- rotation{‘varimax’, ‘quartimax’},預設值 = None
如果不是 None,則套用指定的旋轉。目前,已實作 varimax 和 quartimax。請參閱 「因子分析中分析旋轉的 varimax 準則」 H. F. Kaiser,1958 年。
在 0.24 版本中新增。
- random_stateint 或 RandomState 執行個體,預設值 = 0
僅當
svd_method
等於 ‘randomized’ 時才使用。傳遞 int 以便在多個函數呼叫中獲得可重現的結果。請參閱 詞彙表。
- 屬性:
- components_形狀為 (n_components, n_features) 的 ndarray
具有最大變異數的成分。
- loglike_形狀為 (n_iterations,) 的列表
每次迭代時的對數似然。
- noise_variance_形狀為 (n_features,) 的 ndarray
每個特徵的估計雜訊變異數。
- n_iter_int
執行的迭代次數。
- mean_形狀為 (n_features,) 的 ndarray
從訓練集中估計的每個特徵的經驗平均值。
- n_features_in_int
在 fit 期間看到的特徵數量。
在 0.24 版本中新增。
- feature_names_in_形狀為 (
n_features_in_
,) 的 ndarray 在 fit 期間看到的特徵名稱。僅當
X
具有全部為字串的特徵名稱時才定義。在 1.0 版本中新增。
另請參閱
參考資料
David Barber,《貝氏推理和機器學習》,演算法 21.1。
Christopher M. Bishop:《模式識別和機器學習》,第 12.2.4 章。
範例
>>> from sklearn.datasets import load_digits >>> from sklearn.decomposition import FactorAnalysis >>> X, _ = load_digits(return_X_y=True) >>> transformer = FactorAnalysis(n_components=7, random_state=0) >>> X_transformed = transformer.fit_transform(X) >>> X_transformed.shape (1797, 7)
- fit(X, y=None)[source]#
使用基於 SVD 的方法將 FactorAnalysis 模型擬合到 X。
- 參數:
- X形狀為 (n_samples, n_features) 的類陣列
訓練資料。
- y已忽略
已忽略的參數。
- 返回:
- self物件
FactorAnalysis 類別執行個體。
- fit_transform(X, y=None, **fit_params)[source]#
擬合資料,然後轉換資料。
使用可選的參數
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_covariance()[source]#
使用 FactorAnalysis 模型計算資料共變異數。
cov = components_.T * components_ + diag(noise_variance)
- 返回:
- cov形狀為 (n_features, n_features) 的 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
參數名稱對應到其值。
- get_precision()[原始碼]#
使用 FactorAnalysis 模型計算資料精確度矩陣。
- 返回:
- precision形狀為 (n_features, n_features) 的 ndarray
資料的估計精確度。
- score(X, y=None)[原始碼]#
計算樣本的平均對數似然率。
- 參數:
- X形狀為 (n_samples, n_features) 的 ndarray
資料。
- y已忽略
已忽略的參數。
- 返回:
- llfloat
當前模型下樣本的平均對數似然率。
- score_samples(X)[原始碼]#
計算每個樣本的對數似然率。
- 參數:
- X形狀為 (n_samples, n_features) 的 ndarray
資料。
- 返回:
- ll形狀為 (n_samples,) 的 ndarray
當前模型下每個樣本的對數似然率。
- set_output(*, transform=None)[原始碼]#
設定輸出容器。
有關如何使用此 API 的範例,請參閱 介紹 set_output API。
- 參數:
- transform{“default”, “pandas”, “polars”},預設為 None
配置
transform
和fit_transform
的輸出。"default"
:轉換器的預設輸出格式"pandas"
:DataFrame 輸出"polars"
:Polars 輸出None
:轉換配置不變
在 1.4 版本中新增:新增了
"polars"
選項。
- 返回:
- self估算器實例
估算器實例。