【问题标题】:normalize a matrix along one specific dimension [closed]沿一个特定维度标准化矩阵[关闭]
【发布时间】:2018-10-15 10:18:58
【问题描述】:

我有一个形状为[1000,500] 的矩阵,我想沿第二维对矩阵进行归一化。下面的实现对吗?

def norm(x):
    return (x - np.mean(x)) / (np.std(x) + 1e-7)

for row_id in range(datamatrix.shape[0]):
    datamatrix[row_id,:] = norm(datamatrix[row_id,:])

【问题讨论】:

    标签: python numpy scipy scikit-learn


    【解决方案1】:

    您的实现确实会沿行轴进行规范化(我不确定您所说的第二维是什么意思,因为行通常是矩阵的第一维,而 numpy 从维度 0 开始)。您不需要包含冒号,因为它暗示您需要所有行。

    请记住在您的数据矩阵中使用 float32 dtype,而不是整数 dtype,因为它不进行自动类型转换。

    更有效或更简洁的实现可能是使用sklearn.preprocessing.normalize

    但请注意,您使用的是标准分数标准化,它假设您的数据集是正态分布的。

    【讨论】:

    • 嗨卡斯帕,谢谢。如果数据集不是正态分布的,还有什么其他选择。通常,在构建机器学习模型时,我们通常会在将它们输入模型之前对其进行归一化。
    • @user288609 这取决于您的数据是如何分布的。有时可以将数据转换为正态分布。
    猜你喜欢
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 2017-06-14
    • 2014-05-05
    • 1970-01-01
    相关资源
    最近更新 更多