J'ai pandas dataframe avec des prédicteurs catégoriques (c'est-à-dire des variables) comme 0 et 1, et quelques variables numériques. Quand j'adapte cela à un stasmodel comme:
est = sm.OLS(y, X).fit()
Il jette:
Pandas data cast to numpy dtype of object. Check input data with np.asarray(data).
J'ai converti tous les dtypes du DataFrame en utilisant df.convert_objects(convert_numeric=True)
Après cela, tous les dtypes de variables de trame de données apparaissent sous la forme int32 ou int64. Mais à la fin, il montre toujours dtype: object
, Comme ceci:
4516 int32
4523 int32
4525 int32
4531 int32
4533 int32
4542 int32
4562 int32
sex int64
race int64
dispstd int64
age_days int64
dtype: object
Ici 4516, 4523 sont des étiquettes variables.
Une idée? J'ai besoin de construire un modèle de multi-régression sur plus de centaines de variables. Pour cela, j'ai concaténé 3 pandas DataFrames pour arriver au DataFrame final à utiliser dans la construction de modèles.
Si X est votre trame de données, essayez d'utiliser le .astype
méthode à convertir en float lors de l'exécution du modèle:
est = sm.OLS(y, X.astype(float)).fit()
si les deux y(dependent) et X sont tirés d'une trame de données alors tapez cast both: -
est = sm.OLS(y.astype(float), X.astype(float)).fit()