gpt4 book ai didi

python - 确定哪个点子集最接近多项式

转载 作者:太空宇宙 更新时间:2023-11-03 15:31:41 25 4
gpt4 key购买 nike

我目前正在尝试根据它们的行为对一堆河流进行分类。许多河流的行为与二次多项式非常相似。

enter image description here

但是,有些河流在某些区域偏离了这种模式。 enter image description here enter image description here

我想通过计算所有点与简单多项式的距离来对其进行分类。所以它基本上看起来像这样:

enter image description here

但是为了能够做到这一点,我必须只为那些“正常行为”的点计算多项式。否则我的多项式将移动到发散行为的方向,我无法正确计算距离。

enter image description here enter image description here

这是一些示例数据。

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)

enter image description here

如您所见,多项式略微向下移动,这是由此处标记为黑色的点引起的:

enter image description here

有没有一种直接的方法可以找到那些不遵循主要趋势的点并排除它们以创建多项式?

最佳答案

这看起来更像是一个 AI 问题,而不是一个简单的拟合问题:你个人如何决定什么不适合 - 特别是在你的第二个发散图中,如果你忽略较大的曲线,第一条较短的向上曲线看起来是多项式的?

您只需要 3 个点来计算 2 次多项式:如何计算 3 个水平间隔良好的点的所有/许多采样的曲线(不一定相信第一个或最后一个点),看看哪个创建的最少异常值 - 比 90% 的其他点更远的点?

然后您可以根据剩余的非离群点计算曲线,并检查它是否符合您简单计算的曲线。

编辑:“间隔良好”的意思是每个水平三分之一的点各有一个点 - 使用三个挤在一起的 ooint 来尝试推断其他点是没有意义的。此外,从您提供的数据的外观来看,您需要一条围绕原点开始向上的曲线,因此无论如何您都可以过滤一些随机生成的曲线。

编辑:离群值建议草率 - 如果您的数据在最后变得更宽,就像喇叭一样,您有许多合理的拟合,所以只有在它有明显刺激的地方,您才能为离群值提供明确的标记。如果您计算点与每条随机曲线的距离的直方图,您可以扫描直方图切线中的肩部和不对称性,使其远离钟形曲线,并在该点切分异常值。

从根本上说,我认为数据可能过于复杂,无法进行计算机辅助分析,除非你突破计算机视觉技术:让计算机尽其所能,然后目视检查带注释的图表,看看你是否同意与它。

它也可能有助于绘制垂直轴的对数,因此您处理的是直线。

关于python - 确定哪个点子集最接近多项式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57622846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com