我有一个np
数组,
[[ 1. , 2.33, 0.125 , 4.36 , 0. , 0.215 ],
[ 1. , 0.168 , 36. , 2.99 , 0.198 , 0.6683 ],
[ 1. , 0.55778, 0. , 21.89 , 0. , 0.895 ],
[ 1. , 1.62864, 0. , 21.89 , 0. , 0.624 ],
[ 1. , 0.1146 , 20. , 6.96 , 0. , 0.464 ],
[ 1. , 0.55778, 0. , 21.89 , 0. , 0.624 ]]
此数组中的每一列都是一列。第一列是intercept
值。我正在尝试使用前向选择策略功能来选择具有低于0.05 p值的特征。
这是我到目前为止所拥有的,
import statsmodels.api as sm
def forward(y, x):
features = len(x[1])
for i in range(0,features):
model = sm.OLS(y,x[:,[i]]).fit()
pval = model.pvalues
if pval < 0.05:
x = np.append(x,x[:,[i]],1) # Here, I want to append it to a new np.array
else:
#go back and check next feature
return x
我无法将最低的p值附加到新数组中。我查找了创建新数组online的过程,但这需要启动维度。现在,我不知道会有多少。
否则,我唯一的选择是将功能保留在x
中。如果必须保留该功能,该怎么办?
答案 0 :(得分:0)
除了错误的表示法之外,您的代码中还有一个大错误,您尝试将x附加到输入值上,因此您将有重复的列。我没有运行此代码,但应该可以正常工作。
def forward(y, x):
features = len(x[1])
x_new=np.empty_like(x)
j=0
for i in range(features):
model = sm.OLS(y,x[:,i]).fit()
pval = model.pvalues
if pval < 0.05:
x_new[:,j] = x[:,i]
j+=1
return x_new[:,:j+1]