【问题标题】:Perform n linear regressions, simultaneously同时执行 n 个线性回归
【发布时间】:2014-04-06 17:12:34
【问题描述】:

我有 y - 一个 100 行 x 5 列的 Pandas DataFrame

我有 x - 一个 100 行 x 5 列的 Pandas DataFrame

对于 i=0,...,4 我想将 y[:,i] 与 x[:,i] 进行回归。

我知道如何使用循环。

但是有没有办法对线性回归进行矢量化,这样我就没有循环了?

【问题讨论】:

  • 您可以使用例如并行运行它一个进程池,但是否值得设置进程和来回通信数据的开销是值得商榷的

标签: python pandas linear-regression


【解决方案1】:

据我所知,没有办法将所有这些都放在优化的 Fortran 库 LAPACK 中,因为每个回归都是它自己独立的优化问题。

请注意,4 个项目的循环相对于回归本身不需要任何时间,您需要完全计算,因为每个回归都是一个孤立的线性代数问题......所以我认为没有太多时间保存在这里...

【讨论】:

    【解决方案2】:

    如果您设法在单个 Dataframe 中获取数据,则应该可以使用“应用”。 我目前无法对其进行测试,但我想到了这样的事情: 使用 MultiIndex 创建单个 DF:

    i row x y 
    0 0 1.1 2.2 
    ... 
    0 99 3.14 2.3 
    1 0 2.2 3.3 
    ... 
    1 99 4.5 3.5 
    2 0 ... ...
    

    然后您可以按“i”列分组并将任意函数应用于子组。

    def linear_fit(sub_df):
        do_linear_fit(sub_df['x'], sub_df['y'])
    
    df.groupby('i').apply(linear_fit)
    

    希望对你有帮助,否则我可以提供更多帮助...

    但请记住@Retozi 已​​经提到的内容。这不会比循环快得多(它不是并行运行或“同时”运行),但它当然更容易阅读,而且 pythonic/pandas 这样做的方式...

    【讨论】:

      猜你喜欢
      • 2014-07-06
      • 2020-04-09
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      • 2018-07-31
      • 1970-01-01
      • 2016-10-11
      相关资源
      最近更新 更多