【问题标题】:Using sklearn for multiple linear regression使用 sklearn 进行多元线性回归
【发布时间】:2018-08-11 03:48:11
【问题描述】:

我有一个看起来像这样的时间序列:

        date       var1     var2       var3       var4       var5      var6
0 2004-09-30   6.252216  10.502101  4.965370  26.828754  3.321060  2.723686   
1 2004-10-29   6.861840   9.776618  4.719399  27.621344  2.281346  4.449510   
2 2004-11-30   8.171250  10.704045  4.949747  30.259377  2.064655  2.843745   
3 2004-12-31   9.702585  11.371383  5.422177  33.578991 -1.008974  2.768579   
4 2005-01-31  12.064022  10.628460  6.390097  35.135098 -0.385921  3.244204   

我想使用 sklearn 的线性回归函数来计算这个时间序列的斜率、y 截距和误差(r 平方)。请注意,所有这些值都已经通过我自己的函数进行了标准化,我无需使用 sklearn 的 normalize 参数。

这是我迄今为止对一列进行回归的代码:

reg.fit(df.date.values.reshape(-1, 1), df.var1.values.reshape(-1, 1))
alpha = reg.intercept_[0]
beta = reg.coef_[0][0]
error = reg.score(df.date.values.reshape(-1, 1), df.var1.values.reshape(-1, 1))
values = {"alpha":alpha, "beta":beta, "error": error}

我的问题是我不知道如何同时考虑每一列进行回归。最重要的是,R^2 计算不起作用。

除了 R^2,我对某些列的斜率和截距非常小:

{'beta': -3.205305722098675e-17, 'alpha': 43.05076221170246}

我将如何解决这些问题?

【问题讨论】:

    标签: python pandas scikit-learn


    【解决方案1】:

    代替

    df.var1.values.reshape(-1, 1)
    

    路过

    df.drop('date', axis=1)  # .values should be optional here also
    

    在它的位置。

    这将为您提供df,其中包含除date 之外的所有列。

    【讨论】:

    • 执行此操作时出现此错误:ValueError: Input contains NaN, infinity or a value too large for dtype('float64').。我查看了我的输入数据,但它太大了,我根本找不到错误,有没有简单的方法来处理这个问题?
    猜你喜欢
    • 2020-08-06
    • 2019-01-30
    • 2013-07-14
    • 2016-04-19
    • 1970-01-01
    • 2015-06-19
    • 2021-01-12
    • 2020-07-01
    • 1970-01-01
    相关资源
    最近更新 更多