如何解决Python拟合线性平台曲线
我的曲线最初 Y 随 X 线性增加,然后在 C 点达到平台。 换句话说,曲线可以定义为:
if X < C:
Y = k * X + b
else:
Y = k * C + b
训练数据是 X ~ Y 值的列表。我需要通过机器学习方法(或类似方法)确定 k、b 和 C,因为数据是嘈杂的,并且反射点 C 会随时间变化。我想要比通过观察当前样本数据获得 C 更强大的东西。 我如何使用 sklearn 或 scipy 来做到这一点?
解决方法
WLOG 你可以说第二个等式是
Y = C
看起来你有一个线性回归来拟合这条线,然后是一个检测点来找到常数。
您知道在 X
的高值中,就像在 X > C
中一样,您已经处于常量。因此,只需检查 X
的值回退多远即可获得相同的常数。
然后进行线性回归以找到 X 值为 X <= C
的线
您的模型是非线性的 我认为解决这个问题最聪明的方法是执行以下步骤:
- 求 Y 的最大值,它等于 k*C+b
M=max(Y)
- 从数据集中删除这个最大值
df1 = df[df.Y != M]
然后你有简单的数据集来拟合你的 X 到 Y,你可以使用 sklearn 来
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。