python - 拟合对数曲线 - 或将其更改为适合
问题描述
并想要拟合这样的曲线: 如果我拟合 log(x),我会得到一个很好的线性关系(有点), 但我真的希望它是第二条曲线,这意味着我必须以某种方式将其改回来,但保存拟合曲线。
可能很容易,但我迷路了。
解决方案
这更多是关于对数函数线性化的问题,而不是关于拟合自身的问题。如果您的数据遵循简单的对数关系,例如:
然后您可以对 y 与 log(x) 进行线性回归,其中斜率将等于 A,截距等于 A log(k)。然后,您可以使用这些参数来确定 A(只是斜率)和 k(e**(截距/斜率))并获得结果。
我将按如下方式实现:
import scipy.stats as stats
import numpy as np
import matplotlib.pyplot as plt
slope, intercept, r_value, p_value, std_err = stats.linregress(np.log(x), y)
plt.figure()
plt.plot(x,y,'o')
plt.plot(x,slope*np.log(x*np.e**(intercept/slope)))
推荐阅读
- django - 无法使用 docker 数据库在 VS Code 中调试 django 应用程序:'无法将主机名“db”转换为地址:名称或服务未知'
- c - 为什么 if 语句不打印“做得好”,为什么循环会重复 questions()
- python - QMainWindow unexpectedly closes when I print a pandas DataFrame?
- python - JSON 数据中最常见(最多)的项目
- javascript - 将 python TensorFlow Layers 模型加载到 JavaScript 中
- jquery - 用 jQuery 替换 @page (CSS)
- python - 将 statsmodel.api 格式转换为 Scikit Learn 格式
- python - 如何修复“TypeError:需要一个整数”
- elisp - 如何调试?emacs lisp 程序行为未达到预期但执行与命令相同?
- nvm-windows - “nvm use 10.14.0”导致“ng server”错误