本文簡要介紹python語言中 sklearn.decomposition.TruncatedSVD
的用法。
用法:
class sklearn.decomposition.TruncatedSVD(n_components=2, *, algorithm='randomized', n_iter=5, random_state=None, tol=0.0)
使用截斷的 SVD(又名 LSA)進行降維。
該轉換器通過截斷奇異值分解 (SVD) 執行線性降維。與 PCA 不同,此估計器在計算奇異值分解之前不會將數據居中。這意味著它可以有效地處理稀疏矩陣。
特別是,截斷的 SVD 適用於由
sklearn.feature_extraction.text
中的矢量化器返回的術語計數/tf-idf 矩陣。在這種情況下,它被稱為潛在語義分析(LSA)。此估計器支持兩種算法:快速隨機 SVD 求解器和 “naive” 算法,該算法使用 ARPACK 作為
X * X.T
或X.T * X
上的特征值求解器,以更有效者為準。在用戶指南中閱讀更多信息。
- n_components:整數,默認=2
輸出數據的所需維度。必須嚴格小於特征數。默認值對可視化很有用。對於 LSA,建議值為 100。
- algorithm:{‘arpack’, ‘randomized’},默認='隨機'
要使用的 SVD 求解器。 “arpack” 用於 SciPy (scipy.sparse.linalg.svds) 中的 ARPACK 包裝器,或者 “randomized” 用於 Halko (2009) 的隨機算法。
- n_iter:整數,默認=5
隨機 SVD 求解器的迭代次數。 ARPACK 不使用。默認值大於
randomized_svd
中的默認值,以處理可能具有大的緩慢衰減頻譜的稀疏矩陣。- random_state:int、RandomState 實例或無,默認=無
在隨機 svd 期間使用。傳遞 int 以獲得跨多個函數調用的可重現結果。請參閱術語表。
- tol:浮點數,默認=0.0
ARPACK 的容差。 0 表示機器精度。被隨機 SVD 求解器忽略。
- components_:ndarray 形狀(n_components,n_features)
輸入數據的右奇異向量。
- explained_variance_:ndarray 形狀 (n_components,)
通過投影變換到每個分量的訓練樣本的方差。
- explained_variance_ratio_:ndarray 形狀 (n_components,)
每個選定組件解釋的方差百分比。
- singular_values_:ndarray od 形狀(n_components,)
對應於每個選定組件的奇異值。奇異值等於 lower-dimensional 空間中
n_components
變量的 2 範數。- n_features_in_:int
擬合期間看到的特征數。
- feature_names_in_:ndarray 形狀(
n_features_in_
,) 擬合期間看到的特征名稱。僅當
X
具有全為字符串的函數名稱時才定義。
參數:
屬性:
注意:
SVD 遇到一個稱為“sign indeterminacy” 的問題,這意味著
components_
的符號和變換的輸出取決於算法和隨機狀態。要解決此問題,請將此類的實例與數據匹配一次,然後保留該實例以進行轉換。參考:
尋找具有隨機性的結構:構建近似矩陣分解的隨機算法 Halko 等人,2009 (arXiv:909) https://arxiv.org/pdf/0909.4061.pdf
例子:
>>> from sklearn.decomposition import TruncatedSVD >>> from scipy.sparse import csr_matrix >>> import numpy as np >>> np.random.seed(0) >>> X_dense = np.random.rand(100, 100) >>> X_dense[:, 2 * np.arange(50)] = 0 >>> X = csr_matrix(X_dense) >>> svd = TruncatedSVD(n_components=5, n_iter=7, random_state=42) >>> svd.fit(X) TruncatedSVD(n_components=5, n_iter=7, random_state=42) >>> print(svd.explained_variance_ratio_) [0.0157... 0.0512... 0.0499... 0.0479... 0.0453...] >>> print(svd.explained_variance_ratio_.sum()) 0.2102... >>> print(svd.singular_values_) [35.2410... 4.5981... 4.5420... 4.4486... 4.3288...]
相關用法
- Python sklearn TransformedTargetRegressor用法及代碼示例
- Python sklearn TweedieRegressor用法及代碼示例
- Python sklearn TSNE用法及代碼示例
- Python sklearn TfidfVectorizer用法及代碼示例
- Python sklearn TheilSenRegressor用法及代碼示例
- Python sklearn TfidfTransformer用法及代碼示例
- Python sklearn TimeSeriesSplit用法及代碼示例
- Python sklearn jaccard_score用法及代碼示例
- Python sklearn WhiteKernel用法及代碼示例
- Python sklearn CalibrationDisplay.from_predictions用法及代碼示例
- Python sklearn VotingRegressor用法及代碼示例
- Python sklearn gen_batches用法及代碼示例
- Python sklearn ExpSineSquared用法及代碼示例
- Python sklearn MDS用法及代碼示例
- Python sklearn adjusted_rand_score用法及代碼示例
- Python sklearn MLPClassifier用法及代碼示例
- Python sklearn train_test_split用法及代碼示例
- Python sklearn RandomTreesEmbedding用法及代碼示例
- Python sklearn GradientBoostingRegressor用法及代碼示例
- Python sklearn GridSearchCV用法及代碼示例
- Python sklearn log_loss用法及代碼示例
- Python sklearn r2_score用法及代碼示例
- Python sklearn ndcg_score用法及代碼示例
- Python sklearn ShrunkCovariance用法及代碼示例
- Python sklearn SelfTrainingClassifier用法及代碼示例
注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.decomposition.TruncatedSVD。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。