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)
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.
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.
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)
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.