pass
来源:2-5 实战分类模型之数据归一化
战战的坚果
2020-04-08
这里需要注意两点:
第一点:fit_transform的输入必须是二维矩阵[n_examples, features],
第二点:fit_transform会在每个feature上单独计算均值和方差然后做归一化,我们在这里需要的是全局的均值和方差,所以最后一维是1.
老师,上面的讲解我不太懂,首先fit_transform的输入必须是二维矩阵[n_examples, features], n_examples代表样本总数,features代表特征数,那么n_examples是None?, features是2828?,features这个概念我不清楚。
在这里计算全局的均值和方差,所以让n_examples = None28*28?令features=1吗?
老师说fit_transform会在每个feature上单独计算均值和方差然后做归一化,如果在每个feature上单独计算均值和方差的话,又该怎么设置呢?
写回答
1回答
-
正十七
2020-04-15
同学你好,可以看下面这个例子:
>>> from sklearn.preprocessing import StandardScaler >>> data = [[0, 0], [0, 0], [1, 1], [1, 1]] >>> scaler = StandardScaler() >>> print(scaler.fit(data)) StandardScaler() >>> print(scaler.mean_) [0.5 0.5] >>> print(scaler.transform(data)) [[-1. -1.] [-1. -1.] [ 1. 1.] [ 1. 1.]] >>> print(scaler.transform([[2, 2]])) [[3. 3.]
输入为4x2的矩阵,得到的均值有两个,4是样本数目,2是feature数目,所以这个操作是为每个特征求一个均值和方差,去做归一化。
再看看我们的需求,我们的需求是给给定所有的图片,每张图片有28*28个像素点,然后我们需要计算所有图片的所有像素点上的均值和方差,注意,只要一个均值和方差。所以我们把最后以为设成1。
同理,如果你想给图片的每个位置分别计算均值和方差,那么输入就应该是[None, 28 * 28]。
10