【问题标题】:LinearRegression in scikit learnscikit learn中的线性回归
【发布时间】:2017-12-25 05:48:45
【问题描述】:

我对 scikit learn 中的 LinearRegression 模型有疑问

(http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html)

如果我们运行以下代码:

from sklearn import linear_model
import pandas as pd
import numpy as np

dates   = pd.date_range('20000101', periods=100)
df      = pd.DataFrame(index=dates)
df['A'] = np.cumsum(np.random.randn(100))  
df['B'] = np.cumsum(np.random.randn(100))
df['C'] = np.cumsum(np.random.randn(100))
df['D'] = np.cumsum(np.random.randn(100))  
df['E'] = np.cumsum(np.random.randn(100))
df['F'] = np.cumsum(np.random.randn(100))

y       = ['A','B','C']
x       = ['D','E','F']


ols     = linear_model.LinearRegression(fit_intercept = True, 
                                        normalize     = True, 
                                        copy_X        = True, 
                                        n_jobs        = 1)

ols.fit(df[x],df[y])

这个ols在这里做什么?

它是否运行 3 种不同的 OLS 回归?意义,

1) df['A'] 和 df[['D','E','F']] 的 OLS

2) df['B'] 和 df[['D','E','F']] 的 OLS 和

3) df['C'] 和 df[['D','E','F']] 的 OLS

或者它是否运行df[['A','B','C']] 和df[['D','E','F']] 的单个OLS(我认为这称为SUR?不确定...)

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

    我做了一些测试来理解这个案例。

    运行代码后,

    ols.coef_
    array([[-0.5273036 ,  0.56382854,  0.24751725], # train for 'A'
           [-0.10430077,  0.10671576,  0.18554053],  # train for 'B'
           [ 0.01481826,  0.03811442,  0.75333578]]) # train for 'C'
    

    我们可以看到coef包含3个数组,每个数组有3个参数。

    然后我们运行

    a = linear_model.LinearRegression(fit_intercept = True, 
                                            normalize     = True, 
                                            copy_X        = True, 
                                            n_jobs        = 1)
    a.fit(df[x],df['A'])
    a.coef_
    array([-0.5273036 ,  0.56382854,  0.24751725])
    

    这给了我们与我们上面得到的第一个数组相同的 coef

    a.fit(df[x],df['B'])
    a.coef_
    array([-0.10430077,  0.10671576,  0.18554053])
    

    这给了我们与上面得到的第二个数组相同的 coef,依此类推。

    因此,当您调用ols.fit(df[x],df[y]) 时,它会为您的三个目标输出y 创建三个不同的线性回归

    【讨论】:

    • 谢谢。你知道 scikit learn 是否有类似“单一”OLS 的东西吗?我相信 statsmodels 被称为“看似无关的回归”,但在 scikit-learn 中找不到
    • 对不起,我从来没有用过这个模型,sklearn 没有这个。也许你可以试试包含 SUR 的scikits.statsmodels
    猜你喜欢
    • 2019-05-14
    • 2018-07-31
    • 2016-05-10
    • 2017-03-26
    • 2021-04-01
    • 2016-10-23
    • 2015-02-14
    • 2016-07-24
    • 2020-11-01
    相关资源
    最近更新 更多