我使用包preprocessing sklearn对数据进行规范化,如下所示:
import pandas as pd
import urllib3
from sklearn import preprocessing
decathlon = pd.read_csv("https://raw.githubusercontent.com/leanhdung1994/Deep-Learning/main/decathlon.txt", sep='\t')
decathlon.describe()
nor_df = decathlon.copy()
nor_df.iloc[:, 0:10] = preprocessing.scale(decathlon.iloc[:, 0:10])
nor_df.describe()结果是

平均值是-1.516402e-16,它几乎为0。相反,方差是1.012423e+00,也就是1.012423。对我来说,1.012423不被认为接近1。
请你详细说明一下这个现象好吗?
发布于 2020-10-28 00:56:14
在本例中,sklearn和pandas计算std的方式不同。
sklearn.preprocessing.scale
我们对标准差使用了一个有偏估计量,等价于
numpy.std(x, ddof=0)。注意,ddof的选择不太可能影响模型性能。
pandas.Dataframe.describe使用pandas.core.series.Series.std,其中:
默认情况下,
被N-1规范化.这可以使用ddof参数进行更改。
..。
差分: int,默认1达美自由度。计算中使用的除数是number,其中N表示元素的数目。
应该注意的是,在2020-10-28中,pandas.Dataframe.describe没有ddof参数,因此ddof=1的缺省值总是用于Series。
https://stackoverflow.com/questions/64559412
复制相似问题