FutureWarning:方法.ptp

时间:2019-05-26 05:29:11

标签: python numpy statsmodels

我想知道是哪条线或方法引起了未来警告!

predictors = weekly.columns[1:7] # the lags and volume
X = sm.add_constant(weekly[predictors]) # sm: statsmodels
y = np.array([1 if el=='Up' else 0 for el in weekly.Direction.values])
logit = sm.Logit(y,X)
results=logit.fit()
print(results.summary())
  

C:\ Anaconda3 \ lib \ site-packages \ numpy \ core \ fromnumeric.py:2389:FutureWarning:不建议使用.ptp方法,并将在以后的版本中将其删除。请改用numpy.ptp。     返回ptp(axis = axis,out = out,** kwargs)   

4 个答案:

答案 0 :(得分:0)

产生此警告的行是这样的:

X = sm.add_constant(weekly[predictors]) # sm: statsmodels

不幸的是,我遇到了同样的问题。

答案 1 :(得分:0)

weekly[predictors]将返回weekly[[predictors]] DataFrame的Series表示。由于警告提示您使用numpy.ptp,因此通过将属性values添加到weekly[predictors]将使警告消失,即

X = sm.add_constant(weekly[predictors].values)

或者您可以使用方法to_numpy()

X = sm.add_constant(weekly[predictors].to_numpy())

它将把weekly[predictors]系列转换为NumPy数组。

答案 2 :(得分:0)

如果要保留数据框而不是返回numpy数组:

X = pd.DataFrame(sm.add_constant(weekly[predictors].values, has_constant='add'), columns = ['const'] + weekly[predictors].columns.tolist()) 

此外,您的y已经是一个numpy数组,但是如果y也恰好是一个熊猫系列,则可能需要调用y.reset_index(),因为一旦将X转换为numpy数组,您将失去所有的索引。 / p>

答案 3 :(得分:0)

引起警告的行是:

X = sm.add_constant(weekly[predictors]) # sm: statsmodels

这是来自statsmodels的实用程序,该实用程序将包含所有const的列1添加到数据框中。

由于它不再起作用(使用不推荐使用的功能),因此可以使用其他方法。我更喜欢熊猫的内置assign方法:

X = weekly[predictors].assign(const=1)

或者甚至将其称为Intercept,因为这就是该常量的作用,并且与statsmodels中的formula api保持一致。

X = weekly[predictors].assign(Intercept=1)