我想知道是哪条线或方法引起了未来警告!
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)
答案 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)