python - 如何对特征矩阵进行行归一化?广播错误
问题描述
我有一个要行标准化的特征矩阵。
这是我基于最小-最大缩放所做的,我得到了一个错误。谁能帮我解决这个错误。
a = np.random.randint(10, size=(4,5))
s=a.max(axis=1) - a.min(axis=1)
np.amax(a,axis=1)
print(s)
(a - a.min(axis=1))/(a.max(axis=1) - a.min(axis=1))\
>>[7 6 4 5]
4 print(s)
5
----> 6 (a - a.min(axis=1))/(a.max(axis=1) - a.min(axis=1))
ValueError: operands could not be broadcast together with shapes (4,5) (4,)
解决方案
尝试使用转置矩阵:
b = a.T
m = (b - b.min(axis=0)) / (b.max(axis=0) - b.min(axis=0))
m = m.T
>>> a
array([[2, 3, 2, 8, 3], # min=2 -> 0, max=8 -> 1
[3, 3, 9, 2, 1], # min=1 -> 0, max=9 -> 1
[1, 9, 8, 4, 7], # min=1 -> 0, max=9 -> 1
[6, 8, 7, 9, 4]]) # min=4 -> 0, max=9 -> 1
>>> m
array([[0. , 0.16666667, 0. , 1. , 0.16666667],
[0.25 , 0.25 , 1. , 0.125 , 0. ],
[0. , 1. , 0.875 , 0.375 , 0.75 ],
[0.4 , 0.8 , 0.6 , 1. , 0. ]])
推荐阅读
- python - Python 类可下标但不可迭代
- git - emacs 不备份 git repo 中的文件
- recursion - Preorder traversal without recursion
- ansible - 可变模块字段
- json - How to create multiple instance of backendAddressPools, frontendports in Application Gateways through ARM template
- javascript - 制作响应式可折叠导航栏。我很难让 Javascript 在点击时工作
- google-sheets - Is there a way to filter a pivot query to remove the blank column
- react-native - 将 react-native 升级到 0.60、将组件复制到新项目或更改 package.json 版本的最佳方法?
- javascript - 二维数组在 JavaScript 中的意外结果
- python - 如何在 Cython 中有一个内存视图列表?