Линейная регрессия с использованием scipy.ODR не выполняется (не полный ранг в решении)

поэтому пыталась линейная регрессия с scipy.odr. Тем не менее, он потерпел неудачу. scipy.odr работал для меня раньше, и я не вижу ошибок в моем коде. Единственная причина, по которой я могу думать, – это то, что наклон может быть слишком маленьким, но я не вижу, как это может беспокоить scipy. Спасибо за помощь.

Код:

#!/usr/bin/env python3 -i # -*- coding: iso-8859-1 -*- import matplotlib.pyplot as plt import numpy as np from scipy.odr import * fig = plt.figure() ax1 = fig.add_subplot(111) x = np.linspace(0,1E15,10) y = 1E-15*x-2 ax1.set_xlim(-0.05E15,1.1E15) ax1.set_ylim(-2.1, -0.7) ax1.plot(x, y, 'o') # Fit using odr def f(B, x): return B[0]*x + B[1] linear = Model(f) mydata = RealData(x, y) myodr = ODR(mydata, linear, beta0=[1., 2.]) myoutput = myodr.run() myoutput.pprint() a, b = myoutput.beta sa, sb = myoutput.sd_beta xp = np.linspace(ax1.get_xlim()[0], ax1.get_xlim()[1], 1000) yp = a*xp+b ax1.plot(xp,yp) plt.show() 

Это результат вывода терминала:

 Beta: [ -4.84615388e-15 2.00000000e+00] Beta Std Error: [ 8.14077323e-16 0.00000000e+00] Beta Covariance: [[ 1.46153845e-31 0.00000000e+00] [ 0.00000000e+00 0.00000000e+00]] Residual Variance: 4.534412955465587 Inverse Condition #: 1.0 Reason(s) for Halting: Problem is not full rank at solution Parameter convergence 

И это результат:

Регрессия ерунды

edit: Мой код для odr-регрессии происходит из http://docs.scipy.org/doc/scipy/reference/odr.html

One Solution collect form web for “Линейная регрессия с использованием scipy.ODR не выполняется (не полный ранг в решении)”

 import numpy as np import matplotlib.pyplot as plt fig = plt.figure() ax1 = fig.add_subplot(111) x = np.linspace(0,1E15,10) y = 1E-15*x-2 ax1.set_xlim(-0.05E15,1.1E15) ax1.set_ylim(-2.1, -0.7) ax1.plot(x, y, 'o') # Fit using odr def f(B, x): return B[0]*x + B[1] sx = np.std(x) sy = np.std(y) linear = Model(f) mydata = RealData(x=x,y=y, sx=sx, sy=sy) myodr = ODR(mydata, linear, beta0=[1.00000000e-15, 2.]) myoutput = myodr.run() myoutput.pprint() a, b = myoutput.beta sa, sb = myoutput.sd_beta xp = np.linspace(min(x), max(x), 1000) yp = a*xp+b ax1.plot(xp,yp) plt.show() 

введите описание изображения здесь

  • Быстрый алгоритм b-сплайна с numpy / scipy
  • Numpy: Разница между точками (a, b) и (a * b) .sum ()
  • многомерное t-распределение студентов с python
  • Как получить значение из переменной тензора anano, поддерживаемой общей переменной?
  • матрица расстояний кривых в python
  • Построение дендрограммы в ошибке Scipy для большого набора данных
  • Не удалось распаковать изображение в OpenCV
  • Как использовать функцию минимизации в scipy с ограничениями
  • Метод поиска строго большего, чем нулевого, решения для Scipy Linear Programing от Python
  • Как получить основу сплайна, используемую scipy.interpolate.splev
  • scipy большая разреженная матрица
  • Python - лучший язык программирования в мире.