我有一个存储不同变量的数据框。我正在使用OLS线性回归,并使用所有变量来预测“价格”列
import pandas as pd
import statsmodels.api as sm
data = {'accommodates':[2, 2, 3, 2, 2, 6, 8, 4, 3, 2],
'bedrooms':[1, 2, 1, 1, 3, 4, 2, 2, 2, 3],
'instant_bookable':[1, 0, 1, 1, 1, 1, 0, 0, 0, 1],
'availability_365':[123, 3, 33, 14, 15, 16, 3, 41, 61, 74],
'minimum_nights':[3, 12, 1, 4, 6, 7, 2, 3, 6, 10],
'beds':[2, 2, 3, 4, 1, 5, 6, 2, 3, 2],
'price':[59, 234, 15, 162, 56, 42, 28, 52, 22, 31]}
df = pd.DataFrame(data, columns = ['accommodates', 'bedrooms', 'instant_bookable', 'availability_365',
'minimum_nights', 'beds', 'price'])
我有一个for循环,它计算每个变量的调整R平方值:
fit_d = {}
for columns in [x for x in df.columns if x != 'price']:
Y = df['price']
X = df[columns]
X = sm.add_constant(X)
model = sm.OLS(Y,X, missing = 'drop').fit()
fit_d[columns] = model.rsquared
fit_d
如何修改我的代码以找到给出最大调整后R平方值的变量组合?理想情况下,函数将找到具有最大adj的变量。首先是R平方值,然后使用第一个变量与剩余变量迭代,得到给出最高值的2个变量,然后是3个变量,以此类推,直到该值不能进一步增加。我希望输出是这样的
Best variables: {'accommodates, 'availability', 'bedrooms'}
这里有一种“蛮力方式”来做所有可能的不同长度的
combinations
(从itertools
)来找到R值更高的变量。这个想法是做两个循环,一个用于尝试变量的数量,另一个用于所有变量数量的组合相关问题 更多 >
编程相关推荐