首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中Klipfolio的曲线拟合算法

python中Klipfolio的曲线拟合算法
EN

Stack Overflow用户
提问于 2019-05-30 18:01:15
回答 1查看 73关注 0票数 1

我正在寻找一种方法来应用这种算法进行曲线拟合,这条线不超过它的值,它是更合适的

下面是带有样本值的python代码,如果您复制/粘贴它并运行,您将看到右侧的线位于点的上方

代码语言:javascript
复制
from scipy import interpolate
from numpy import linspace

y = [5, 0, 4, 4]
x = linspace(0, len(y)-1, num=len(y), endpoint=True)
f2 = interp1d(x, y, kind='cubic')
xnew = linspace(0, len(y)-1, num=100, endpoint=True)

plt.plot(xnew, f2(xnew), '--');
plt.scatter(x=[i for i in range(len(x))],y=y, color='red');
EN

回答 1

Stack Overflow用户

发布于 2019-05-30 21:51:51

这是一个基于你的代码比较线性,二次和三次插值的例子。只有线性插值不在右侧数据点的上方。除了线性插值,我所知道的唯一的通用方法是裁剪--我个人认为这是一种糟糕的做法。

代码语言:javascript
复制
from scipy import interpolate
from numpy import linspace
import matplotlib
import matplotlib.pyplot as plt

y = [5, 0, 4, 4]
x = linspace(0, len(y)-1, num=len(y), endpoint=True)
f1 = interpolate.interp1d(x, y, kind='linear')
f2 = interpolate.interp1d(x, y, kind='quadratic')
f3 = interpolate.interp1d(x, y, kind='cubic')
xnew = linspace(0, len(y)-1, num=100, endpoint=True)

plt.title('Interpolation comparison')
plt.plot(xnew, f1(xnew), linestyle='solid', color='red', label='linear');
plt.plot(xnew, f2(xnew), linestyle='dashed', color='green', label='quadratic');
plt.plot(xnew, f3(xnew), linestyle='dashdot', color='blue', label='cubic');
plt.scatter(x=[i for i in range(len(x))],y=y, color='black');
plt.legend() # turn on the legend
plt.show()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56375946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档