簡體   English   中英

為什么Sklearn PCA需要的樣本多於新功能(n_components)?

[英]Why Sklearn PCA needs more samples than new features(n_components)?

當使用像這樣的Sklearn PCA算法時

x_orig = np.random.choice([0,1],(4,25),replace = True)
pca = PCA(n_components=15)
pca.fit_transform(x_orig).shape

我得到輸出

(4, 4)

我期望(希望)它是:

(4,15)

我明白為什么會發生這種情況。 在sklearn( 這里 )的文檔中,它說(假設他們的'=='是賦值運算符):

n_components == min(n_samples, n_features)

但他們為什么要這樣做呢? 另外,如何直接將形狀[1,25]的輸入轉換為[1,10](不疊加虛擬數組)?

每個主成分是數據在數據協方差矩陣的特征向量上的投影。 如果樣本n比特征少,則協方差矩陣只有n個非零特征值。 因此,只有n個有意義的特征向量/組件。

原則上,可能有比樣品更多的組件,但多余的組件將是無用的噪音。

Scikit-learn會引發錯誤而不是默默地做任何事情 這可以防止用戶在腳下射擊。 樣本少於特征可能表明數據存在問題,或者對所涉及的方法存在誤解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM