线性病态问题使用sklearn.linear_model.Ridge描述训练数据的最佳方法?

2024-05-23 17:39:42 发布

您现在位置:Python中文网/ 问答频道 /正文

问题陈述:我正在处理一个线性方程组,它对应于一个不适定的反问题。我可以在Python中手工应用Tikhonov正则化或岭回归,并获得足够精确的测试数据解决方案。我想尝试使用sklearn.linear_model.Ridge解决这个问题,因为我想在包(https://scikit-learn.org/stable/modules/linear_model.html)的线性模型部分尝试其他机器学习方法。我想知道在这种情况下使用sklearn是否使用了错误的工具

我所做的:我阅读了sklearn.linear_model.Ridge的文档。因为我知道正问题对应的线性变换,所以我在脉冲响应上运行它以创建训练数据,然后将其提供给sklearn.linear_model.Ridge以生成模型。与我自己在Python中应用岭回归方程不同,sklearn.linear_model.ridge中的模型只适用于脉冲响应。另一方面,我自己使用方程应用岭回归,生成一个模型,可以应用于脉冲响应的任何线性组合

有没有一种方法可以应用sklearn的线性方法,而不需要生成代表问题整个参数空间的大型测试数据集,或者这是使用(甚至是线性)机器学习算法的必要条件

当sklearn方法应用于跨越正向问题的测试用例时,sklearn.model.Ridge是否应返回与求解岭回归方程相同的结果

非常感谢任何能帮助我理解的人


Tags: 方法模型机器model线性sklearn手工linear
1条回答
网友
1楼 · 发布于 2024-05-23 17:39:42

通过反复试验找到了答案。回答我自己的问题,以防有人像我一样思考,需要澄清

  1. 是的,如果您使用跨越问题空间的训练数据,这与使用方程式在python中运行岭回归相同。sklearn按照文档中的说明进行操作

  2. 您需要使用fit_intercept=True来获得sklearn.linear_model.Ridge来拟合问题的Y截距,否则将假定为零

如果您使用默认值fit_intercept=False,并且您的问题的Y-截距不为零,那么您当然会得到一个糟糕的解决方案

这可能会让我这样的新手觉得您没有提供足够的培训数据,这是不正确的

相关问题 更多 >