scikit中的LinearRegression可以学习

时间:2017-07-19 19:20:57

标签: python scikit-learn

我对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])

这是什么在这里做的?

它是否运行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?不确定......)

1 个答案:

答案 0 :(得分:4)

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

运行代码后

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个数组,每个数组有三个参数。

然后我们运行

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])

给出了与上面第一个数组相同的系数

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

给出了与上面得到的第二个数组相同的系数,等等。

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