Визуализация моих выводов popt дает прямую линию, я хочу визуализировать вывод popt, чтобы убедиться, что он правильный. Я новичок - PullRequest
0 голосов
/ 13 апреля 2020

Мои переменные popt выводят прямую вертикальную линию (см. Ссылку на визуализация ). Я хочу найти правильную экспоненциальную линию наилучшего соответствия моих данных

Сначала я выполнил экспоненту в excel, которая дала желаемую визуализацию , но дала неточную формулу 712e ^ 0,0001 * x .

Я хочу визуализировать значения popt аналогично требуемой визуализации в excel, чтобы убедиться, что мои значения popt имеют смысл визуально.

import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import numpy as np
import pandas as pd


plot = plt.scatter(df.No_of_patients, df.No_of_booked_app)
plt.xlabel("No_of_patients")
plt.ylabel("No_of_booked_app")
plt.xlim(-500, 16000)
plt.ylim(-1000, 7000)
x1 = [1, 2, 3, 4, 5 ,6 ,7 ,8, 9, 10]
y1 = [2, 4, ,8 , 12, 20, 35, 40, 55, 70, 90]
df = pd.DataFrame(zip(x1, y1), columns = ['x1', 'y1'] )



def func(x, a, b, p0=None):
   return a*np.exp(b*x)

x = df.x1
y = df.y1


popt, popcov = curve_fit(func,  x,  y, p0=[1,0], maxfev = 5000)



best_fit = plt.plot(func(x,*popt), 'y')

current_output

Это мой желаемый вывод:

требуемый_ выход

1 Ответ

1 голос
/ 13 апреля 2020

Вы забыли передать переменную x команде plot. Так что просто используйте следующее, где вы передаете x и используйте o в качестве символа рынка

best_fit = plt.plot(x, func(x,*popt), 'yo')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...