2017-02-01 67 views
1

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

enter image description here

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

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

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

回答

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 
相关问题