首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用带有numpy数组的最小MSE找到值?

如何使用带有numpy数组的最小MSE找到值?
EN

Stack Overflow用户
提问于 2019-03-02 22:49:36
回答 3查看 2.2K关注 0票数 2

我可能的价值观是:

代码语言:javascript
复制
0: [0 0 0 0]
1: [1 0 0 0]
2: [1 1 0 0]
3: [1 1 1 0]
4: [1 1 1 1]

我有一些价值观:

代码语言:javascript
复制
[[0.9539342  0.84090066 0.46451256 0.09715253],
 [0.9923432  0.01231235 0.19491441 0.09715253]
 ....

我想找出哪些可能的值,这是最接近我的新值。理想情况下,我希望避免执行for循环,并想知道是否有某种向量化的方法来搜索最小均方误差?

我希望它返回一个类似于:[2, 1 ....的数组

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-03 03:29:43

可以使用np.argmin获取rmse值的最低索引,该索引可以使用np.linalg.norm计算。

代码语言:javascript
复制
import numpy as np
a = np.array([[0, 0, 0, 0], [1, 0, 0, 0], [1, 1, 0, 0],[1, 1, 1, 0], [1, 1, 1, 1]])
b = np.array([0.9539342, 0.84090066, 0.46451256, 0.09715253])
np.argmin(np.linalg.norm(a-b, axis=1))
#outputs 2 which corresponds to the value [1, 1, 0, 0]

正如编辑中提到的,b可以有多个行。op希望避免for循环,但我似乎无法找到避免for循环的方法。这是一个列表比较的方法,但是可能有一个更好的方法

代码语言:javascript
复制
[np.argmin(np.linalg.norm(a-i, axis=1)) for i in b] 
#Outputs [2, 1]
票数 1
EN

Stack Overflow用户

发布于 2019-03-02 23:54:43

让我们假设您的输入数据是字典。然后,可以将NumPy用于向量化的解决方案。首先将输入列表转换为NumPy数组,并使用axis=1参数获取RMSE。

代码语言:javascript
复制
# Input data
dicts = {0: [0, 0, 0, 0], 1: [1, 0, 0, 0], 2: [1, 1, 0, 0], 3: [1, 1, 1, 0],4: [1, 1, 1, 1]}
new_value = np.array([0.9539342, 0.84090066, 0.46451256, 0.09715253])

# Convert values to array
values = np.array(list(dicts.values()))

# Compute the RMSE and get the index for the least RMSE 
rmse = np.mean((values-new_value)**2, axis=1)**0.5
index = np.argmin(rmse)    

print ("The closest value is %s" %(values[index]))
# The closest value is [1 1 0 0]
票数 1
EN

Stack Overflow用户

发布于 2019-03-03 03:24:46

纯粹的粗野:

代码语言:javascript
复制
val1 = np.array ([
   [0, 0, 0, 0],
   [1, 0, 0, 0],
   [1, 1, 0, 0],
   [1, 1, 1, 0],
   [1, 1, 1, 1]
  ])

print val1
val2 = np.array ([0.9539342, 0.84090066, 0.46451256, 0.09715253], float)
val3 = np.round(val2, 0)
print val3

print np.where((val1 == val3).all(axis=1)) # show a match on row 2 (array([2]),)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54963814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档