使用Sklearn的RANSAC算法去除截距。

3
我正在尝试使用sklearn的RANSAC:RANdom SAmple Consensus算法拟合一个没有截距(将截距强制为0)的线性模型。在LinearRegression中,可以轻松设置fit_intercept=False。然而,在RANSAC的可能参数列表中似乎不存在此选项。这个功能没有被实现吗?应该如何操作?除了sklearn的RANSAC之外,还有什么替代方法可以客观地选择内点和外点,并允许将截距设为0?
实现应该像这样,但会引发错误:
from sklearn.linear_model import RANSACRegressor

ransac_regressor = RANSACRegressor(fit_intercept=False)

如果投票的人能解释一下原因就好了。这个网站上有很多关于sklearn的RANSAC的问题,通常都受到良好的回应。 - ouranos
1
我猜测downvoter投票是因为这个问题更多地涉及线性模型的实现而不是编码,因此在stats.stackexchange上提问会更好。这也是我投票关闭这个问题的原因。此外,许多人只想看到几行代码,展示你在哪里遇到了问题。 - JE_Muc
我明白了,谢谢(也感谢您的回答!)。我最初在stats.stackexchange上提出了这个问题,但我意识到这不是关于RANSAC算法或理论本身的问题。这个问题是关于如何正确编写代码以使用Python包的。此外,他们的文档建议我们在这里“寻求scikit-learn使用方面的帮助”。再次感谢! - ouranos
不客气!是的,这是一种需要对统计部分和编码部分都有一定了解的边缘情况之一。但根据我的经验,在像stats.stackexchange这样的特定堆栈交换社区中,您将获得这些情况的最佳答案。不幸的是,SO社区对于那些不完全符合他们标准的问题非常不友好和绝对不灵活,因此在这些边缘情况下,负评非常频繁。 - JE_Muc
1
我在你的问题中添加了一个非常简单的代码片段。这样,至少 SO 中“我们想看到一些代码”的部分会得到满足。 ;) 此外,我还为你的问题点了赞。 - JE_Muc
1个回答

5

RANSAC 是一个基于随机抽样一致性的线性回归器封装器,它可以对其他线性回归器进行实现。因此,您可以简单地将 base_estimator 设置为 fit_intercept=False

from sklearn.linear_model import RANSACRegressor, LinearRegression

ransac_lm = RANSACRegressor(base_estimator=LinearRegression(fit_intercept=False))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接