我目前正在努力获取通过贝叶斯回归分析得出的模型统计数据的摘要。我首先使用套索和模型选择来过滤最佳变量,然后使用pm.Model
获得适当的回归。
当然,“过滤”了不相关的解释变量后,X矩阵的形状发生了变化。我处理的数据是sklearn.dataset中的load_boston数据集。我将数据编码为自变量,将目标编码为因变量。
使用SelectFromModel
执行了模型选择后,我使用了get.support
方法来获取保留变量的索引。然后,我在所有变量的索引和支持中包含的数字上使用了一个循环,目的是将保留变量的名称存储在我专门创建的空列表中。代码看起来像这样
import pandas as pd
import numpy as np
import pymc3 as pm
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(9)
# Load the boston dataset.
from sklearn.datasets import load_boston
boston = load_boston()
X, y = boston['data'], boston['target']
# Here is the code for the estimator LassoCV
# Here is the code for Model Selection
support(indices=True) #to obtain the list of indices of retained variables
X_transform = sfm.transform(X) #to remove the unnecessary variables
#Here is the line for linear modeling
#I initialize some useful variables
m = y.shape[0]
n = X.shape[1]
c = supp.shape[0]
L = boston['feature_names']
varnames=[]
for i in range (0, n):
for j in range (0, c):
if i == supp[j]:
varnames.append(L[i])
pm.summary(trace, varnames=varnames)
然后,控制台显示“ KeyError:RM”,它是所使用变量的名称之一。我注意到一个问题,每个变量名的对象都归类为str_ object of numpy module
,这意味着除非双击它们,否则我无法读取列表中保留变量的名称。
我该如何解决?我不知道我在做什么错。