如何在python中找到对数非线性模型的参数?

问题描述

所以我需要提出模型参数,以便能够使用模型进行预测(系数等)。对不起,如果我的问题听起来很菜,但我正在学习:) 使用的整体模型应该是这样的:y=p1*np.log(x)+p2。所以问题是 p1 & p2 是否由 popt[0] & popt1 表示? log(x) - 只是日期数(数据集从 2010-08-16 运行到 2021-04-14)? y -price 应该根据 p1 & p2 和 x 进行预测。

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

df = pd.read_csv('C:/Data_crypto/Log regression_bands/BCHAIN-MKPRU.csv')
df = df[ df['Value'] > 0]
df = df.iloc[::-1]
df['Date'] = pd.to_datetime(df['Date'])
df

enter image description here

def func(x,p1,p2):
    return p1*np.log(x)+p2
ydata = np.log(df['Value'])
xdata = np.array([x + 1 for x in range(len(df))])
popt,pcov = curve_fit(func,xdata,ydata)
print(popt)

print(pcov)

popt[0]

popt[1]

xdata

## y axis will be loged and x axis wont be

plt.semilogy(df["Date"],df['Value'])
plt.show()

## plot fitted data and expinatiate data

fittedydata = func(xdata,popt[0],popt[1])


popt[0]

plt.semilogy(df['Date'],df['Value'])
plt.plot(df['Date'],np.exp(fittedydata))
plt.ylim(bottom = 1)

plt.show()

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)