Линейная регрессия с использованием 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() 

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

  • Стратегия изоляции 3D-данных
  • Установка SciPy / Python на Ubuntu
  • Scikit-learn train_test_split с индексами
  • Что-нибудь вроде SciPy в Ruby?
  • Получение квантилей SciPy для соответствия функции Stata xtile
  • Найти разность фаз между двумя (ангармоническими) волнами
  • Биннинг данных: нерегулярные многоугольники для регулярной сетки
  • Обрезка дендрограммы на уровнях в Scipy Hierarchical Clustering
  •  
    Interesting Posts for Van-Lav

    Как написать utf8 для стандартного вывода таким образом, который работает с python2 и python3

    UnicodeDecodeError: кодек «utf-8» не может декодировать байт

    Ошибка аргумента SWIG при использовании «using std :: vector» в python

    mongoengine.fields.ImproperlyConfigured: библиотека PIL не найдена

    Переходы Django и неразрушаемая строка

    Как использовать групповое преобразование через несколько столбцов

    как правильно установить модули в Pycharm?

    как динамически создавать экземпляр класса в python?

    Эффективное разбиение на страницы и запрос базы данных в django

    Как отсортировать список объектов даты?

    Matplot: Как построить истинные / ложные или активные / деактивированные данные?

    Построение нескольких строк с помощью блока данных pandas

    TemplateDoesNotExist, когда базовый шаблон находится в корневой папке

    Максимальный вес / минимальная стоимость Двусторонний код соответствия в Python

    Применить функцию к каждой ячейке в DataFrame многопоточно в пандах

    Python - лучший язык программирования в мире.