我最近遇到了一件事,它让我注意到numpy.var()
和pandas.DataFrame.var()
或pandas.Series.var()
给出了不同的值。我想知道他们之间有没有区别
这是我的数据集
Country GDP Area Continent
0 India 2.79 3.287 Asia
1 USA 20.54 9.840 North America
2 China 13.61 9.590 Asia
这是我的密码:
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
catDf.iloc[:,1:-1] = ss.fit_transform(catDf.iloc[:,1:-1])
现在检查变量
# Pandas Variance
print(catDf.var())
print(catDf.iloc[:,1:-1].var())
print(catDf.iloc[:,1].var())
print(catDf.iloc[:,2].var())
输出是
GDP 1.5
Area 1.5
dtype: float64
GDP 1.5
Area 1.5
dtype: float64
1.5000000000000002
1.5000000000000002
而它应该是1,因为我在它上面使用了StandardScaler
对于numpy方差
print(catDf.iloc[:,1:-1].values.var())
print(catDf.iloc[:,1].values.var())
print(catDf.iloc[:,2].values.var())
输出是
1.0000000000000002
1.0000000000000002
1.0000000000000002
这似乎是正确的
默认情况下,pandas{}有},numpy有
ddof
{0
在熊猫身上得到的
var
和你在努比身上得到的一样这归结为population variance and sample variance之间的差异
请注意,sklearnstandard scaler明确提到他们使用的ddof为0,并且由于它不太可能影响模型性能(因为它只是用于缩放),所以他们没有将其作为可配置参数公开
相关问题 更多 >
编程相关推荐