web-dev-qa-db-fra.com

FutureWarning: Méthode .ptp

Je veux savoir quelle ligne ou méthode a provoqué le futur avertissement!

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: La méthode .ptp est obsolète et sera supprimée dans une future version. Utilisez plutôt numpy.ptp. retour ptp (axe = axe, out = out, ** kwargs)

8
Van Cheng

weekly[predictors] Renverra une représentation en série du weekly[[predictors]] DataFrame. Puisque l'avertissement indique d'utiliser numpy.ptp, Alors en ajoutant l'attribut values à weekly[predictors], L'avertissement disparaîtra, c'est-à-dire.

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

ou vous pouvez utiliser la méthode to_numpy():

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

Il convertira la série weekly[predictors] En un tableau NumPy.

6

La ligne qui génère cet avertissement est la suivante:

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

Malheureusement, j'ai le même problème.

2
pellerossa pelles

La ligne qui provoque l'avertissement est:

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

Il s'agit d'un utilitaire de statsmodels qui ajoute une colonne appelée const à la trame de données avec tous les 1.

Puisqu'il ne fonctionne plus (utilise une fonction obsolète), vous pouvez utiliser une méthode différente. Je préfère la méthode assign intégrée aux pandas:

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

Ou même, appelez-le Intercept parce que c'est à cela que sert cette constante, et pour être cohérent avec la formule api dans les modèles statistiques.

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

0
Alex P

Si vous souhaitez conserver une trame de données au lieu de renvoyer un tableau numpy:

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

En outre, votre y est déjà un tableau numpy, mais si y se trouve également être une série pandas, vous devrez peut-être appeler y.reset_index () car une fois que vous transformez X en tableau numpy, vous perdez quels que soient les indices que vous aviez.

0
tmldwn