python逐步回归代码
时间: 2023-12-02 22:00:46 浏览: 156
逐步回归是一种逐步选择变量的方法,通过逐步添加和删除变量来构建多元线性回归模型。Python中有不少库可以实现逐步回归,下面是一段使用Statsmodels库实现逐步回归的代码示例:
```python
import pandas as pd
import numpy as np
import statsmodels.api as sm
# 构建样本数据
x1 = np.array([1, 2, 3, 4, 5])
x2 = np.array([6, 7, 8, 9, 10])
y = np.array([11, 12, 13, 14, 15])
# 将样本数据转换为数据框
data = pd.DataFrame({'X1': x1, 'X2': x2, 'Y': y})
# 定义逐步回归函数
def stepwise_regression(X, y):
selected_features = [] # 存储选中的特征
remaining_features = set(X.columns) # 剩余的特征
while remaining_features:
best_score = 0 # 最好的得分初始为0
best_feature = None # 最好的特征初始为None
# 逐个考虑剩余特征,找出对应的最佳特征
for feature in remaining_features:
# 添加特征后拟合回归模型
model = sm.OLS(y, sm.add_constant(X[selected_features+[feature]])).fit()
score = model.rsquared_adj # 选择模型中调整后R平方最大的特征
if score > best_score:
best_score = score
best_feature = feature
# 添加最佳特征到已选特征列表中,并从剩余特征中移除
selected_features.append(best_feature)
remaining_features.remove(best_feature)
return selected_features
# 调用逐步回归函数进行特征选择
selected_features = stepwise_regression(data[['X1', 'X2']], data['Y'])
print('选择的特征:', selected_features)
```
代码中首先构建了一个简单的样本数据,包含了两个自变量(X1、X2)和一个因变量(Y),然后使用stepwise_regression函数进行特征选择。函数中通过循环遍历剩余特征,并逐步添加特征,通过回归模型的调整后R平方来评估模型的拟合效果,选择调整后R平方最大的特征作为最佳特征,并将其添加到已选特征列表中。最终输出选择的特征。
阅读全文