为什么在聚类之前跨行而不是列缩放以标准化(预处理)数据
Why scale across rows not columns for standardizing (preprocessing) of Data before clustering
对于以下关于数据预处理聚类的问题,我很困惑,在互联网上找不到令人信服的答案。
根据Python documentation,当我们使用 sckit 学习库中的内置命令进行预处理时,数据被表示为 N x D
矩阵,其中行是样本,列是特征,我们使跨行的平均值为零,同时跨行的标准偏差是统一的,如下所示:
X_scaled.mean(axis=0)
array([ 0., 0., 0.])
X_scaled.std(axis=0)
array([ 1., 1., 1.])
我的问题是,我们不应该让列(特征而不是样本)的平均值为零,标准差也一样吗,因为我们正在尝试标准化特征而不是样本。网站和其他资源总是跨行标准化,但他们从不解释原因?
我希望您希望对样本中给定特征的值进行归一化。如果您跨特征对给定样本的数据进行归一化,那么您已经丢弃了很多信息。那将用于比较特征(这很少有意义),而不是用于比较特征的样本。
我不知道 numpy 或 sklearn,所以对此持保留态度,但是在规范化时,您想规范化(使用相同的参数)给定特征的所有数据,以获取该特征的所有值特征在 (-1 ... +1) 范围内,均值为零(或类似值)。您将为每个特征单独执行此操作,因此它们最终都会在该范围内,每个特征的平均值为零。
考虑一个示例,如果您对给定样本的所有特征进行归一化。
height weight age
person1 180 65 50
person2 140 45 50
如果我们跨特征对 person1 的值进行归一化,然后对 person2 执行相同的操作,那么 person2 的年龄似乎与 person1 不同!
如果我们对给定列的样本进行归一化,则关系仍然成立。他们的年龄会匹配; person1 会更高,person2 会更轻。但是所有特征的所有值都将符合后续分析所需的分布规则。
有一个地方可以标准化你的样本。一个例子是当你的特征很重要时。在这种情况下,将每个样本归一化为 l1-norm 单位有效地将每个特征更改为该样本总计数的百分比。
Sklearn 的 Normalizer
用于样本归一化,可以归一化为 l1 或 l2 范数。
http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.Normalizer.html
对于以下关于数据预处理聚类的问题,我很困惑,在互联网上找不到令人信服的答案。
根据Python documentation,当我们使用 sckit 学习库中的内置命令进行预处理时,数据被表示为 N x D
矩阵,其中行是样本,列是特征,我们使跨行的平均值为零,同时跨行的标准偏差是统一的,如下所示:
X_scaled.mean(axis=0)
array([ 0., 0., 0.])
X_scaled.std(axis=0)
array([ 1., 1., 1.])
我的问题是,我们不应该让列(特征而不是样本)的平均值为零,标准差也一样吗,因为我们正在尝试标准化特征而不是样本。网站和其他资源总是跨行标准化,但他们从不解释原因?
我希望您希望对样本中给定特征的值进行归一化。如果您跨特征对给定样本的数据进行归一化,那么您已经丢弃了很多信息。那将用于比较特征(这很少有意义),而不是用于比较特征的样本。
我不知道 numpy 或 sklearn,所以对此持保留态度,但是在规范化时,您想规范化(使用相同的参数)给定特征的所有数据,以获取该特征的所有值特征在 (-1 ... +1) 范围内,均值为零(或类似值)。您将为每个特征单独执行此操作,因此它们最终都会在该范围内,每个特征的平均值为零。
考虑一个示例,如果您对给定样本的所有特征进行归一化。
height weight age
person1 180 65 50
person2 140 45 50
如果我们跨特征对 person1 的值进行归一化,然后对 person2 执行相同的操作,那么 person2 的年龄似乎与 person1 不同!
如果我们对给定列的样本进行归一化,则关系仍然成立。他们的年龄会匹配; person1 会更高,person2 会更轻。但是所有特征的所有值都将符合后续分析所需的分布规则。
有一个地方可以标准化你的样本。一个例子是当你的特征很重要时。在这种情况下,将每个样本归一化为 l1-norm 单位有效地将每个特征更改为该样本总计数的百分比。
Sklearn 的 Normalizer
用于样本归一化,可以归一化为 l1 或 l2 范数。
http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.Normalizer.html