我是数据科学的新手,我注意到一些存储库声明了MNIST 数据集中的mean
值和.deviation
0.1307
0.3081
我无法想象这两个数字是怎么来的。根据我的理解,MNIST 数据集有 60,000 张图片,每张图片都有 (28 * 28 = 784) 个特征。如何转换此特征向量以获得均值和偏差?
特别是,这应该按标签分类,对吧?例如,数字 0 应该有它的mean
and deviation
。对于数字 1 也应该有它的mean
and deviation
。
我是数据科学的新手,我注意到一些存储库声明了MNIST 数据集中的mean
值和.deviation
0.1307
0.3081
我无法想象这两个数字是怎么来的。根据我的理解,MNIST 数据集有 60,000 张图片,每张图片都有 (28 * 28 = 784) 个特征。如何转换此特征向量以获得均值和偏差?
特别是,这应该按标签分类,对吧?例如,数字 0 应该有它的mean
and deviation
。对于数字 1 也应该有它的mean
and deviation
。
mean
:它是数据集中所有像素值的平均值(60000 × 28 × 28)。这个平均值是在整个数据集上计算的。deviation
:是所有像素值的标准差。数据集被视为总体而不是样本。这些值有什么用?
在这种情况下,平均值和标准差通常用于标准化图像中的数据。标准化数据的平均值接近 0,标准差接近 1。您可以在此处阅读更多信息。
为什么要标准化数据?
标准化以具有单位方差的方式转换您的数据。根据维基百科,
在统计学中,标准分是有符号的标准差数,通过该标准差,观察值或数据点的值高于正在观察或测量的平均值
存储库只是说明在所有特征和所有示例中,平均值为0.1307
,标准差为0.3081
。如果您将 mnist 训练集加载到numpy
名为 的数组中,您可以自己获取这些值mnist
,只需评估方法mnist.mean()
和mnist.std()
。
希望能帮助到你!
self.train_x_set = self.train_x_set / 255.
mean = 0
std = 0
for x in self.train_x_set:
mean += np.mean(x[0, :, :])
mean /= len(self.train_x_set)
self.train_x_set -= mean
for x in self.train_x_set:
std += np.mean(np.square(x[0, :, :]).flatten())
std = np.sqrt(std / len(self.train_x_set))