web-dev-qa-db-fra.com

La construction d'un modèle de régression multiple génère une erreur: `Les données de Pandas sont converties en un type d'objet numpy. Vérifiez les données d'entrée avec np.asarray (data). »

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.

15
Sanoj

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()
19
Daniel Gibson

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()
10
kratant adhaulia