我目前正在尝试根据它们的行为对一堆河流进行分类。许多河流的行为与二次多项式非常相似。
我想通过计算所有点与简单多项式的距离来对此进行分类。所以它基本上看起来像这样:
但为了能够做到这一点,我必须只计算那些“正常行为”的点的多项式。否则我的多项式将转移到发散行为的方向,我无法正确计算距离。
这是一些示例数据。
x_test = [-150,-140,-130,-120,-110,-100,-90,-80,-70,-60,-50,-40,-30,-20,-10,0,10,20,30,40,50,60,70,70,80,80,90,90,100,100]
y_test = [0.1,0.11,0.2,0.25,0.25,0.4,0.5,0.4,0.45,0.6,0.5,0.5,0.6,0.6,0.7, 0.7,0.65,0.8,0.85,0.8,1,1,1.2,0.8,1.4,0.75,1.4,0.7,2,0.5]
我可以用 numpy 从中创建一个多项式。
fit = np.polyfit(x_test, y_test, deg=2, full=True)
polynom = np.poly1d(fit[0])
simulated_data = polynom(x)
当我绘制它时,我得到以下信息:
ax = plt.gca()
ax.scatter(x_test,y_test)
ax.plot(x, simulated_data)
如您所见,多项式略微向下移动,这是由此处标记为黑色的点引起的:
有没有一种直接的方法来找到那些不遵循主要趋势的点并将它们排除在创建多项式中?