Итак, я искал информацию о параметре весов в функции polyfit (numpy.polynomial.polynomial.polyfit) в Python и кажется, что он имеет какое-то отношение к ошибке, связанной с отдельными точками. (Как включить ошибки измерения в numpy.polyfit)
Однако то, что я пытаюсь сделать, не имеет ничего общего с ошибкой, но весами. У меня есть изображение в виде массива numpy, который указывает количество заряда, депонированного в детекторе. Я конвертирую это изображение в график рассеяния, а затем делаю приступ. Но я хочу, чтобы это пригодилось, чтобы придать больше очков тем, у кого больше денег, и меньше, чем те, у которых меньше заряда. Это то, что для параметра весов?
Вот пример изображения: Здесь мой код:
def get_best_fit(image_array, fixedX, fixedY):
weights = np.array(image_array)
x = np.where(weights>0)[1]
y = np.where(weights>0)[0]
size = len(image_array) * len(image_array[0])
y = np.zeros((len(image_array), len(image_array[0])))
for i in range(len(np.where(weights>0)[0])):
y[np.where(weights>0)[0][i]][np.where(weights>0)[1][i]] = np.where(weights>0)[0][i]
y = y.reshape(size)
x = np.array(range(len(image_array)) * len(image_array[0]))
weights = weights.reshape((size))
b, m = polyfit(x, y, 1, w=weights)
angle = math.atan(m) * 180/math.pi
return b, m, angle
Позвольте мне объяснить вам код:
Первая строка назначает заряженную, депонированную в переменной, называемой весом. Следующие две линии получают точки, в которых осажденный заряд составляет> 0, поэтому некоторые заряды осаждаются для захвата координат для графика рассеяния. Затем я получаю размер всего изображения для последующего преобразования в одномерный массив для построения графика. Затем я просматриваю изображение и пытаюсь получить координаты точек, где наложен некоторый заряд (помните, что сумма заряда хранится в переменных weights
). Затем я изменяю координаты y, чтобы получить одномерный массив, и получить координаты x для всех соответствующих координат y из изображения, а затем изменить форму весов, чтобы быть только одномерным.
Edit: если есть способ сделать это с np.linalg.lstsq
функции np.linalg.lstsq
, это было бы идеально, так как я также пытаюсь получить соответствие, чтобы пройти через вершину сюжета. Я мог бы просто переместить сюжет так, чтобы вершина была в нуле, а затем использовала np.linalg.lstsq
, но это не позволило бы мне использовать веса.