1

我将以下白色像素作为输入数据并使用 sklearn.linear_model.RANSACRegressor 拟合 2 次(二次)多项式以避免异常值。这种情况下的结果显示为红色并且是完全正确的:

在此处输入图像描述

但是,我知道在我的应用程序中,二次曲线的最小值/最大值总是在该图像的右侧(但我不知道在哪个高度),并且曲率不会那么强。换句话说:我已经知道我最适合的应该是蓝线,而其他点是腐败的异常值。

有没有办法通过(例如)提供一个损失函数来控制或限制 RANSACRegressor 的结果,该函数惩罚非常强的曲率,但在使用较低曲率时仍试图找到最佳拟合?

提前感谢任何提示或链接:-)

4

1 回答 1

0

好的,我找到了一种简单(但最有可能:昂贵)的方法:

def is_model_valid(estimator, X, y):
    return abs(estimator.coef_[2]) < 0.001

并将此函数用作RANSACRegressor的输入参数,以禁止具有高曲率的模型。

或者只允许最小值/最大值位于图片的右侧

(假设图片为700像素):

def is_model_valid2(estimator, X, y):
    return ((-1.0 * estimator.coef_[1]) / (2.0*estimator.coef_[2])) > 600
于 2017-02-02T08:11:03.617 回答