sklearn中提供了較為豐富的pca模型來解決資料的降維問題,其包括:
(1)pca:最原始的pca演算法;
(2)truncatedsvd:原始資料不做中心化處理的pca演算法,可用於文字資料(tf-idf處理後)的隱藏語義分析(lsa);
(3)sparsepca:新增l1正則化處理後的pca演算法,用最小角回歸演算法求解,可在一定程度上解決資料雜訊的問題,進一步降低分解後的資料維度;
(4)minibatchsparsepca:新增l1正則化處理後pca演算法,基於小批量資料的pca演算法。
(5)incrementalpca:增量學習的pca演算法,通過partial_fit解決資料量過大情況下記憶體限制的問題。
(6)kernelpca:樣本協方差矩陣中的元素均為樣本內積,因此可利用核技巧,將其它應用到非線性空間上。
本文僅詳細介紹最原始的pca演算法。
1. 模型的主要引數
模型引數
parameter含義
備註n_components
主成分數
用於空值分解後的目標維度,其可選值包括:1.整數,指定具體的值;2. 百分比,分解後的維度包含的資訊量(方差)必須大於原始資訊量*百分比;3. 'mle'採用極大似然估計法,預估目標維度;4.none, 預設為資料特徵數目和資料行數中最小的那個值,注意當solver為'arpack',還需在上述值基礎上減1;
whiten
白化布林值,預設false。白化即通過將各特徵維度的資料進行歸一化處理,使其各方差值相當。白化會使得各特徵資料的方差資訊丟失,但可能會提高下游任務的準確率。
svd_solver
求解器求解器型別包括:1.'auto',在資料量大於500*500同時分解後的目標維度少於原資料最低維度的80%時,採用'randomized'求解器,其它時候採用'full'求解器;2. 'full',完全的svd分解;3. 'arpack',採用arpack庫,此時的目標維度必須少於原資料最低維度;4.'randomized',採用隨機svd演算法,可大大加快pca的速度。預設值為'auto',一般取預設值即可。
tol誤差
求解器為arpack時的引數,表示奇異值的誤差閾值,預設值為0
iterated_power
迭代次數
求解器為randomized時的引數,表示數值演算法的迭代次數,可設為正整數,預設值為'auto'
random_state
隨機種子
在求解器為arpack或randomized時,均具有一定的隨機性。
2. 模型的主要方法
模型方法
parameter含義
備註fit
模型訓練
基於預設的求解器和主成分數等引數,進行資料的pca分解
transform
資料轉換
將資料轉換到主成分線性空間
fit_transform
訓練和轉換
fit和transform函式的綜合
inverse_transform
逆轉換將資料將pca後的主成分線性空間逆轉換到原始空間。注意:因為轉換後資訊會丟失,所以無法完全還原,但pca後的資訊保留越好,其還原效果越佳。
score_samples
各樣本效果評分
返回各樣本的對數似然函式評分
score
樣本總效果評分
返回各樣本的對數似然函式評分的平均值
3. 模型的主要屬性
模型方法
parameter含義
備註components_
主成分向量
pca分解後,得到的各主成分向量,即為的目標線性空間的基
explained_variance_
可解釋方差
各主成分向量的資訊量,數值上等於資料x協方差矩陣n_components個最大的特徵值(與components_向量一一對應)
explained_variance_ratio_
可解釋方差比重
上述n_components個最大的特徵值的和與所有特徵值綜合的比值,代表著所選主向量佔全部向量的資訊值大小
singular_values_
奇異值n_components個主向量的2-範數值
noise_variance_
雜訊方差
各非主成分向量的平均資訊量,即非n_components個最大的特徵值的平均值
4. 模型的調參
pca模型的調參主要就是求解器svd_solver
和主成分個數n_components
,其選擇主要依託於下游任務的效果。
sklearn中的PCA使用方法
最近在做資料分析的實驗,在準備進行pca資料降維的時候產生了疑問,既然訓練集和測試集不能放在一起降維,那如何讓測試集的維度降到和訓練集一樣,看到sklearn提供的方法裡有乙個tranform實現了這個功能,豁然開朗。不知道sklearn裡的lda和其他降維方法有沒有類似的功能,歡迎大佬指點。若以後...
sklearn機器學習 PCA
pca使用的資訊量衡量指標,就是樣本方差,又稱可解釋性方差,方差越大,特徵所帶的資訊量越多 原理推導 class sklearn decomposition.pca n components none,copy true whiten false svd solver auto tol 0.0,it...
sklearn中的線性模型
在skearn中,可以使用sklearn.linear model來建立線性模型 然後用fit函式去訓練 然後用predict去 還可以用score函式去 同時計算 的準確度 import numpy as np import matplotlib.pyplot as plt from sklear...