Предельная экспоненциальная регрессия в Python - PullRequest
0 голосов
/ 18 января 2019

Мне удалось создать экспоненциальную регрессию на основе некоторых данных из эксперимента. Тем не менее, я бы хотел, чтобы регрессия прекратилась, когда значения y начинают расти (около x = 42000 секунд). Смотрите прикрепленное изображение сюжета.

Это код на данный момент:

import matplotlib.pyplot as plt;
import numpy as np;
import pandas as pd
import scipy.optimize as opt;

# This is the function we are trying to fit to the data.
def func(x, a, b, c):
     return a * b**x

dataC = pd.read_csv("yeastdata1cropped.txt")
data = pd.read_csv("yeastdata1.txt")

xdata = np.array(data.iloc[:,1])
ydata = np.array(data.iloc[:,0])

xdatac = np.array(dataC.iloc[:,1])
ydatac = np.array(dataC.iloc[:,0])

# Plot the actual data
plt.plot(xdata, ydata, ".", label="Data");

# The actual curve fitting happens here
optimizedParameters, pcov = opt.curve_fit(func, xdatac, ydatac);

# Use the optimized parameters to plot the best fit
plt.plot(xdata, func(xdata, *optimizedParameters), label="fit");

# Show the graph
plt.legend();
plt.show();

enter image description here

1 Ответ

0 голосов
/ 18 января 2019

Вам просто нужно передать соответствующие / заинтересованные значения для подбора следующим образом. Вы можете использовать индексирование NumPy для передачи только тех значений x, которые ниже 42000. Использование [xdatac<42000] вернет индексы / позиции, в которых выполняется это условие True. Остальной код остается прежним.

optimizedParameters, pcov = opt.curve_fit(func, xdatac[xdatac<42000],
                                          ydatac[xdatac<42000]);

Таким образом, подгонка будет выполняться только до 42000, и вы все равно можете построить график подгонки позже, передав полные данные x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...