Как я могу найти значение с минимальным MSE с пустым массивом?

Вы можете использовать для этого класс android.text.StaticLayout. Это то, что TextView использует внутренне.

2
задан Shamoon 3 March 2019 в 14:13
поделиться

2 ответа

Вы можете использовать np.argmin, чтобы получить наименьший индекс значения rmse, который можно рассчитать, используя np.linalg.norm

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 может иметь несколько строк. Оператор хочет избежать цикла for, но я не могу найти способ избежать цикла for. Вот способ компиляции списка, но может быть лучший способ

[np.argmin(np.linalg.norm(a-i, axis=1)) for i in b] 
#Outputs [2, 1]
0
ответ дан mamun 3 March 2019 в 14:13
поделиться

Давайте предположим, что ваши входные данные - это словарь. Затем вы можете использовать NumPy для векторизованного решения. Сначала вы преобразуете свои входные списки в массив NumPy и используете аргумент axis=1, чтобы получить RMSE.

# 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]
0
ответ дан Sheldore 3 March 2019 в 14:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: