我对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?不确定......)
答案 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
创建三个不同的线性回归