math domain error while using PCA

前端 未结 2 1530
情歌与酒
情歌与酒 2021-01-22 12:15

I am using python\'s scikit-learn package to implement PCA .I am getting math

domain error :
C:\\Users\\Akshenndra\\Anaconda2\\lib\\site-packages\\sklearn\\deco         


        
2条回答
  •  广开言路
    2021-01-22 13:00

    I don't know whether i am right or not, but I truly find a way to solve it.

    I just print some error information(The value of spectrum_[i] and spectrum_[j]), and I find :

    sometimes, they are same!!!

    (Maybe they are not same but they are too close, I guess)

    so , here

    pa += log((spectrum[i] - spectrum[j]) *
                      (1. / spectrum_[j] - 1. / spectrum_[i])) + log(n_samples)
    

    it will report error when calculate log(0).

    My way to solve it is to add a very small number 1e-99 to 0, so it become log(0 + 1e-99)

    so you can just change it to:

                pa += log((spectrum[i] - spectrum[j]) *
                      (1. / spectrum_[j] - 1. / spectrum_[i]) + 1e-99) + log(n_samples)
    

提交回复
热议问题