二维矩阵中各列的最小-最大归一化
Min-max normalization of individual columns in a 2D matrix
我有一个包含 4 columns/attributes 和 150 行的数据集。我想使用最小-最大归一化来归一化这些数据。到目前为止,我的代码是:
minData=min(min(data1))
maxData=max(max(data1))
minmaxeddata=((data1-minData)./(maxData))
这里,minData
和maxData
returns全局最小值和最大值。因此,此代码实际上对 2D 矩阵中的所有值应用最小-最大归一化,以便全局最小值为 0,全局最大值为 1。
但是,我想对每个 列 分别执行相同的操作。具体来说,二维矩阵的每一列都应该独立于其他列进行最小-最大归一化。
我尝试仅使用 min(data1)
和 max(data1)
,但收到错误提示 矩阵维度必须一致 。
但是,通过使用全局最小值和最大值,我得到了 [0-1]
范围内的值,并使用这个标准化数据集进行了实验。我想知道我的结果有没有问题?是不是我的理解也有问题?任何指导将不胜感激。
如果我没理解错的话,您希望规范化 data1
的每一列。此外,由于每一列都是一个 independent 数据集,并且很可能具有不同的动态范围,因此可能不建议进行全局最小-最大操作。我建议您按照最初的想法单独规范化每一列。
根据您的错误,您不能用 min(data1)
减去 data1
,因为 min(data1)
会产生一个行向量,而 data1
是一个矩阵。您正在用一个向量减去一个矩阵,这就是您收到该错误的原因。
如果您想实现您的要求,请使用 bsxfun
广播矢量并根据您拥有的行数重复它 data1
。因此:
mindata = min(data1);
maxdata = max(data1);
minmaxdata = bsxfun(@rdivide, bsxfun(@minus, data1, mindata), maxdata - mindata);
例子
>> data1 = [5 9 9 9 3 3; 3 10 2 1 10 1; 2 4 4 6 5 5]
data1 =
5 9 9 9 3 3
3 10 2 1 10 1
2 4 4 6 5 5
当我运行上述规范化代码时,我得到:
minmaxdata =
1.0000 0.8333 1.0000 1.0000 0 0.5000
0.3333 1.0000 0 0 1.0000 0
0 0 0.2857 0.6250 0.2857 1.0000
我有一个包含 4 columns/attributes 和 150 行的数据集。我想使用最小-最大归一化来归一化这些数据。到目前为止,我的代码是:
minData=min(min(data1))
maxData=max(max(data1))
minmaxeddata=((data1-minData)./(maxData))
这里,minData
和maxData
returns全局最小值和最大值。因此,此代码实际上对 2D 矩阵中的所有值应用最小-最大归一化,以便全局最小值为 0,全局最大值为 1。
但是,我想对每个 列 分别执行相同的操作。具体来说,二维矩阵的每一列都应该独立于其他列进行最小-最大归一化。
我尝试仅使用 min(data1)
和 max(data1)
,但收到错误提示 矩阵维度必须一致 。
但是,通过使用全局最小值和最大值,我得到了 [0-1]
范围内的值,并使用这个标准化数据集进行了实验。我想知道我的结果有没有问题?是不是我的理解也有问题?任何指导将不胜感激。
如果我没理解错的话,您希望规范化 data1
的每一列。此外,由于每一列都是一个 independent 数据集,并且很可能具有不同的动态范围,因此可能不建议进行全局最小-最大操作。我建议您按照最初的想法单独规范化每一列。
根据您的错误,您不能用 min(data1)
减去 data1
,因为 min(data1)
会产生一个行向量,而 data1
是一个矩阵。您正在用一个向量减去一个矩阵,这就是您收到该错误的原因。
如果您想实现您的要求,请使用 bsxfun
广播矢量并根据您拥有的行数重复它 data1
。因此:
mindata = min(data1);
maxdata = max(data1);
minmaxdata = bsxfun(@rdivide, bsxfun(@minus, data1, mindata), maxdata - mindata);
例子
>> data1 = [5 9 9 9 3 3; 3 10 2 1 10 1; 2 4 4 6 5 5]
data1 =
5 9 9 9 3 3
3 10 2 1 10 1
2 4 4 6 5 5
当我运行上述规范化代码时,我得到:
minmaxdata =
1.0000 0.8333 1.0000 1.0000 0 0.5000
0.3333 1.0000 0 0 1.0000 0
0 0 0.2857 0.6250 0.2857 1.0000