У меня есть Pandas DataFrame, где мне нужно вычислить большое количество коэффициентов регрессии. Каждый расчет будет только двухмерным. Независимая переменная будет ['Base']
, которая одинакова для всех случаев. Ряд зависимых переменных организован вдоль столбцов в моем DataFrame.
Это легко сделать sh с for
l oop, но в моем реальном DataFrame у меня есть тысячи столбцов для запуска регрессия, так что требуется навсегда. Есть ли векторизованный способ выполнения sh этого?
Ниже приводится MRE:
import pandas as pd
import numpy as np
from sklearn import linear_model
import time
df_data = {
'Base':np.random.randint(1, 100, 1000),
'Adder':np.random.randint(-3, 3, 1000)}
df = pd.DataFrame(data=df_data)
result_df = pd.DataFrame()
df['Thing1'] = df['Base'] * 3 + df['Adder']
df['Thing2'] = df['Base'] * 6 + df['Adder']
df['Thing3'] = df['Base'] * 12 + df['Adder']
df['Thing4'] = df['Base'] * 4 + df['Adder']
df['Thing5'] = df['Base'] * 2.67 + df['Adder']
things = ['Thing1', 'Thing2', 'Thing3', 'Thing4', 'Thing5']
for t in things:
reg = linear_model.LinearRegression()
X, y = df['Base'].values.reshape(-1,1), df[t].values.reshape(-1,1)
reg.fit(X, y)
b = reg.coef_[0][0]
result_df.loc[t, 'Beta'] = b
print(result_df.to_string())