web-dev-qa-db-ja.com

FutureWarning:メソッド.ptp

将来の警告の原因となった行または方法を知りたい!

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:Method .ptpは非推奨であり、将来のバージョンでは削除される予定です。代わりにnumpy.ptpを使用してください。 ptp(axis = axis、out = out、** kwargs)を返します

8
Van Cheng

_weekly[predictors]_は、_weekly[[predictors]]_ DataFrameのシリーズ表現を返します。警告は_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配列に変換します。

この警告を生成する行は次のとおりです。

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

残念ながら私は同じ問題を抱えています。

2

警告の原因となる行は次のとおりです。

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

これは、constという列をすべて1とともにデータフレームに追加するstatsmodelsのユーティリティです。

これはもう機能しない(非推奨の関数を使用する)ため、別の方法を使用できます。私はパンダの組み込みassignメソッドを好みます:

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

または、それをInterceptと呼びます。これは、その定数の目的であり、statsmodelsの formula api と一致するためです。

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

0
Alex P

Numpy配列を返す代わりにデータフレームを保持したい場合:

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

また、yは既にnumpy配列ですが、yもpandasシリーズの場合、y.reset_index()を呼び出す必要があります。これは、Xをnumpy配列にすると、失われるためです。あなたが持っていたどんな指標でも。

0
tmldwn