python - 如何在python中找到对数(非线性)模型的参数?
问题描述
所以我需要提出模型参数,以便能够使用模型进行预测(系数等)。对不起,如果我的问题听起来很无聊,但我正在学习 :) 使用的整体模型应该是这样的:y=p1*np.log(x)+p2。所以问题是 p1 & p2 是否由 popt[0] & popt 1表示?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
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()
解决方案
推荐阅读
- python - 我无法在 azure webapp 上加载完整的泡菜列表
- javascript - 如何实现离线网站的全文搜索
- symfony - 如何在 API 平台中对“GET 项目”请求的 SQL 请求之前验证 UUID 参数?
- android - 非法调用超级从类 net.fortuna.ical4j.model.ContentBuilder 中取消 groovy.lang.GroovyObjectSupport.setMetaClass(groovy.lang.MetaClass)
- flutter - 如何获取声音通知列表?
- ember-cli - 尝试安装 Ember CLI 会导致错误
- mysql - 如何通过在 MYSQL 上使用 SQL 来隐藏某些列的值?
- if-statement - 为什么 Importrange() 数据在函数中不起作用?
- java - 即使使用 Scala Jackson 出现错误,我如何遍历 JSON 对象
- reactjs - React Native 测试 Jest 风格