Документы Polyfit говорят нам, что
Несколько наборов данных точек выборки, имеющих одинаковые x-координаты, могут быть установлены одновременно, передавая 2D-массив, содержащий одиннабор данных на столбец.
Позвольте нам понять это.Во-первых, давайте рассмотрим пример.Скажем, у нас есть 3 точки на плоскости, и мы хотим интерполировать их по полиному степени 1. Это означает, что мы хотим провести линию через заданные 3 точки, и эта линия должна иметь минимальное квадратное расстояние до этой точки.Скажем, у нас есть 3 балла: (1, 1), (2, 2), (3, 3)
.Очевидно, можно безошибочно найти линию, проходящую через эти точки, и эта линия равна y = x
.Если мы думаем о линии в терминах y = a * x + b
, то a = 1, b = 0
.
Хорошо.А теперь давайте начнем с того, что приведем этот пример для клочковатого полифита:Теперь давайте сделаем пример с матрицей вместо одного вектора y.Документы сказали нам, что у нас просто несколько строк с одинаковыми координатами X.Давайте проверим это.Мы берем два набора точек: (1, 1), (2, 2), (3, 3)
с подходящей для них линией y = x
и (1, 2), (2, 4), (3, 6)
.Линия подгонки - y = 2x
(проверьте!).
Мы транспонируем вторую матрицу, потому что полифит хочет этого.
X = np.array([1, 2, 3])
y = np.array([[1, 2, 3], [2, 4, 6]]).T
coeff = np.polyfit(X, y, deg=1)
coeff
>>> array([[1.00000000e+00, 2.00000000e+00],
[1.20830315e-15, 2.41660629e-15]])
Мы видим, что у нас есть матрица с первой строкой (1, 2)
и второй строкой (0, 0)
.Таким образом, первый столбец содержит коэффициенты для первой строки, а второй - для второй строки.Давайте проверим:
a, b = coeff[:, 0]
a * 10 + b
>>> 9.999999999999998
a, b = coeff[:, 1]
a * 100 + b
>>> 199.99999999999994
Итак, вы можете пропустить несколько строк с одинаковыми координатами X и получить много совпадений одновременно.Это может быть полезно, например, для преобразования функций для всего набора данных.