python - 在 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)
我只是想让它更短
解决方案
您可以遍历列并将结果存储在字典中,即:
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])
推荐阅读
- javascript - 来自兄弟组件的子组件的 google-maps-react onClick onMarkerClick
- c - 双端队列,按引用调用(创建标头)
- c++ - 如何将此代码从 C 转换为 C++?
- python-2.7 - Glob 模块返回错误值
- python - 数据集查询、数据库还是在文件中搜索?
- java - 如何使 JavaFX 应用程序针对不同的屏幕分辨率自动调整大小
- java - java - 如何以最有效且不同步的方式在java中使用多个线程?
- matlab - 制作矩阵每一列但没有零元素的直方图
- javascript - 如何获取表格中的输入值?
- python - 卡住在python中将二进制转换为整数