詹惠儿

2020-09-17   阅读量: 1202

机器学习

‘Z-Score标准化’学习总结

扫码加入数据分析学习群

问:

‘Z-Score标准化’学习总结


答:

使用此方法处理数据,我们最后得到的数据集中的平均值将为0,标准差为1。我们可以通过在numpy中组合不同的函数来实现这一点,例如:

z =(x.values-np.mean(x.values))/ np.std(x.values)

其中 x 是一个带有数值索引的数据框。如果我们想将值保留在数据框中,则只需要删除它前面的.values

标准化之前的方差

catDf.var(ddof = 0)

在这里,我们将参数ddof设置为0,注意在pandas.DataFrame.var()中ddof默认为1,而在numpy.ndarray.var()中ddof默认为0。参数Ddof 表示Delta的自由度,在方差的计算公式中使用的除数是N-ddof,其中 N 表示样本数。在符合正态分布的变量中设置ddof = 0 可以提供方差的最大似然估计。

您可以在此处阅读有关ddof = 0的 更多信息 。

标准化之后的方差

另外一种比较常用的方法是,调用sklearn.preprocessing 中的StandardScaler 。让我们来看一下代码,对比一下两者的区别。

from sklearn.preprocessing import StandardScaler

ss = StandardScaler()

catDf.iloc[:,[0,2,3,4]] = ss.fit_transform(catDf.iloc[:,[0,2,3,4]])

print(catDf)

这一步,我们对所有数值列(索引值为0,2,3,4的列)调用 StandardScaler 方法,得到标准化后每列的值。

现在我们通过以下代码再来查看下数据集的方差

catDf.var(ddof = 0)

我们可以看到所有数值列的方差全都缩放到1。而在实际的数据集中,可能是将方差从数千缩放到1。



35.9124 1 0 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子