【问题标题】:Sklearn RANSAC without intercept没有拦截的 Sklearn RANSAC
【发布时间】:2020-10-23 22:20:50
【问题描述】:

我正在尝试使用 sklearn 的 RANSAC: RANdom SAmple Consensus 算法拟合没有截距的线性模型(强制截距为 0)。在LinearRegression 中可以轻松设置fit_intercept=False。但是,RANSAC 的list of possible parameters 中似乎不存在此选项。这个功能没有实现吗?应该怎么做? sklearn 的 RANSAC 有哪些替代方法可以客观地选择内点和异常点,允许将截距设置为 0?

实现应该如下所示,但它会引发错误:

from sklearn.linear_model import RANSACRegressor

ransac_regressor = RANSACRegressor(fit_intercept=False)

【问题讨论】:

  • 如果投反对票的人能解释原因就好了。这个网站上有很多关于 sklearn 的 RANSAC 的问题,通常很受欢迎。
  • 我猜投票者投了反对票,因为这个问题更多的是关于线性模型的实现而不是关于编码,因此 stats.stackexchange 会是一个更好的提问地方。这也是我投票结束这个问题的原因。此外,许多人只是希望看到几行代码显示您在哪里偶然发现了问题。
  • 我明白了,谢谢(也为答案!)。我最初在 stats.stackexchange 上问过这个问题,但我意识到这与 RANSAC 算法或理论本身无关。我们关于如何正确进行编码以使用 python 包的问题。此外,their documentation 建议我们来这里“解决 scikit-learn 使用问题”。再次感谢!
  • 不客气!是的,这是其中一种边缘情况,您需要对统计部分编码部分有所了解。但根据我的经验,您将在特定的 stackexchange 社区(如 stats.stackexchange)上获得这些案例的最佳答案。不幸的是,SO 社区对不符合他们的标准完全的问题非常不欢迎和绝对不灵活,因此在这些边缘情况下投票非常频繁。
  • 我在您的问题中添加了一个非常简单的代码 sn-p。像这样,至少 SO 的“我们希望看到一些代码”部分会得到满足。 ;) 此外,我赞成你的问题。

标签: python scikit-learn linear-regression


【解决方案1】:

RANSAC 是其他线性回归器的包装器,可以使用随机抽样共识来实现它们,因此您可以简单地将base_estimator 设置为fit_intercept=False

from sklearn.linear_model import RANSACRegressor, LinearRegression

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

【讨论】:

    猜你喜欢
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 2016-10-05
    • 2020-10-07
    • 1970-01-01
    相关资源
    最近更新 更多