我正在对一些要分析的数据运行sklearn的PCAfit_transform()
函数,我很难弄清楚我到底需要如何将缩放后的数据转换回在我运行的上下文中有意义的数字。更具体地说,当我跑步时:
import pandas as pd
import numpy as np
from sklearn.preprocessing import scale
X_scaled = scale(otr_df)
X_scaled2 = otr_df.sub(otr_df.mean())
X_scaled2 = X_scaled2.div(otr_df.std())
# Should print all zeroes
print (X_scaled - X_scaled2)/X_scaled
"""
The above prints the following:
Date Index1 Index2 Index3 Index4
2016-05-11 0.000706 0.000706 0.000706 0.000706 ...
2016-05-10 0.000706 0.000706 0.000706 0.000706 ...
2016-05-09 0.000706 0.000706 0.000706 0.000706 ...
2016-05-06 0.000706 0.000706 0.000706 0.000706 ...
. . . .
. . . .
. . . .
"""
当打印上面代码的底线时,我得到的是每列的常量值0.000706,而不是零(如我所期望的那样)。虽然很小,但如果我乘以几千以回到原来的比例(在某些情况下,我是这样的),这看起来并不是微不足道的。我的猜测是,它与除以(N-1)而不是N或沿着这些线的某个东西有关。然而,在花了太多时间阅读sklearn和pandas的文档之后,我想我会问这里是否有人有任何想法。你知道吗
sklearn在标准偏差计算中使用零自由度:
相关问题 更多 >
编程相关推荐