應用KernelPCA
我的數據,並將其傳遞到分類(SVC
)我收到以下錯誤後:KernelPCA產生NaN的
ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
和此警告在執行KernelPCA
:
RuntimeWarning: invalid value encountered in sqrt X_transformed = self.alphas_ * np.sqrt(self.lambdas_)
看看轉換後的數據,我發現了幾個nan
值。
這沒有什麼區別,我用這kernel
。我試過cosine
,rbf
和linear
。
但有趣:
我的原始數據只包含0和1之間的值(無
inf
或nan
),它的規模與MinMaxScaler
應用標準
PCA
工作,我被認爲與KernelPCA
相同linear
kernel
。
一些更多的事實:
- 我的數據是高維(> 8000層的功能),而且大多稀疏。
- 我使用的scikit學習的最新版本,18.2
任何想法如何克服這一點,可能是什麼原因?
在kernelPCA適配或轉換過程中是否收到任何警告?也許[這是相關的](https://github.com/scikit-learn/scikit-learn/pull/8531)。 –
@VivekKumar:你說得對,有個警告:''RuntimeWarning:在sqrt中遇到無效值 X_transformed = self.alphas_ * np.sqrt(self.lambdas_)'' – ScientiaEtVeritas
你應該試着找出一個更小的子集的數據,發生此警告並將其與代碼一起發佈到此處。另外,請嘗試更新您的scikit-learn版本,使其與之前評論中提供鏈接的主分支相同,以查看錯誤是否仍存在。 –