首页 > 解决方案 > 在 DataFrame 的列之间运行 OLS 回归

问题描述

我想定义一个在数据框的每一列与最后一列之间运行 OLS 模型的函数。例如,我有一个包含 13 列的数据框,所以我必须运行 OLS 回归 12 次,而且写得太多了。

import pandas as pd
from sklearn import linear_model


DF = pd.read_excel('data.xlsx')
print(DF)

# Regression Model
for columns in DF:
    reg = linear_model.LinearRegression()
    reg.fit(DF[['INCOME']], DF.x)

reg1 = linear_model.LinearRegression()
reg1.fit(DF[['INCOME']], DF.FOOD)

reg2 = linear_model.LinearRegression()
reg2.fit(DF[['INCOME']], DF.SMOKING)

.
.
.
reg11 = linear_model.LinearRegression()
reg11.fit(DF[['INCOME']], DF.HOTEL)

reg12 = linear_model.LinearRegression()
reg12.fit(DF[['INCOME']], DF.OTHERS)

#Beta Coefficeints

B1 = reg1.coef_
B2 = reg2.coef_
   .
B10 = reg10.coef_
B11 = reg11.coef_
B12 = reg12.coef_

print(B1)
print(B2)
 .`
print(B10)
print(B11)
print(B12)

我只是想让它更短

标签: pythonpandas

解决方案


您可以遍历列并将结果存储在字典中,即:

from sklearn import linear_model

dict = {}

for i in df.columns:
    reg = linear_model.LinearRegression()
    reg.fit(df[['INCOME']], df[i])
    dict[i] = reg.coef_
    print(dict[i])

推荐阅读