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


Python sklearn FactorAnalysis用法及代碼示例

本文簡要介紹python語言中 sklearn.decomposition.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)

因子分析(FA)。

具有高斯潛變量的簡單線性生成模型。

假設觀察結果是由低維潛在因子的線性變換和添加的高斯噪聲引起的。在不失一般性的情況下,因子根據具有零均值和單位協方差的高斯分布。噪聲也是零均值並且具有任意對角協方差矩陣。

如果我們進一步限製模型,假設高斯噪聲甚至是各向同性的(所有對角線條目都相同),我們將獲得 PPCA

FactorAnalysis 使用基於 SVD 的方法對所謂的 loading 矩陣執行最大似然估計,將潛在變量轉換為觀測變量。

在用戶指南中閱讀更多信息。

參數

n_components整數,默認=無

潛在空間的維度,在transform之後得到的X的分量數。如果沒有,n_components 設置為特征數。

tol浮點數,默認=1e-2

停止對對數似然增加的容忍。

copy布爾,默認=真

是否複製 X。如果是 False ,則輸入 X 在擬合期間被覆蓋。

max_iter整數,默認=1000

最大迭代次數。

noise_variance_initndarray 形狀 (n_features,),默認 = 無

每個特征的噪聲方差的初始猜測。如果沒有,它默認為 np.ones(n_features)。

svd_method{‘lapack’, ‘randomized’},默認='隨機'

使用哪種 SVD 方法。如果 ‘lapack’ 使用來自 scipy.linalg 的標準 SVD,如果 ‘randomized’ 使用快速 randomized_svd 函數。默認為‘randomized’。對於大多數應用,‘randomized’ 將足夠精確,同時提供顯著的速度增益。通過為 iterated_power 設置更高的值也可以提高準確性。如果這還不夠,為了獲得最大精度,您應該選擇‘lapack’。

iterated_power整數,默認=3

冪方法的迭代次數。 3 默認。僅在 svd_method 等於 ‘randomized’ 時使用。

rotation{‘varimax’, ‘quartimax’},默認=無

如果不是無,則應用指示的旋轉。目前,實現了 varimax 和 quartimax。看“因子分析中解析旋轉的最大方差標準”H. F. 凱撒,1958 年。

random_stateint 或 RandomState 實例,默認=0

僅當svd_method等於‘randomized’時使用。傳遞 int 以獲得跨多個函數調用的可重現結果。請參閱術語表。

屬性

components_ndarray 形狀(n_components,n_features)

具有最大方差的組件。

loglike_形狀列表(n_iterations,)

每次迭代的對數似然。

noise_variance_ndarray 形狀 (n_features,)

每個特征的估計噪聲方差。

n_iter_int

運行的迭代次數。

mean_ndarray 形狀 (n_features,)

Per-feature 經驗平均值,根據訓練集估計。

n_features_in_int

擬合期間看到的特征數。

feature_names_in_ndarray 形狀(n_features_in_,)

擬合期間看到的特征名稱。僅當 X 具有全為字符串的函數名稱時才定義。

參考

  • 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)

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.decomposition.FactorAnalysis。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。