Numpy: dsTypeError: ufunc 'isfinite' no es compatible con los tipos de entrada, y las entradas no se pueden convertir de forma segura a ningún tipo compatible de acuerdo con la regla de conversión '' segura ''

Creado en 27 dic. 2019  ·  6Comentarios  ·  Fuente: numpy/numpy

Estoy ejecutando un programa en Python e intento generar resultados estadísticos a partir de una matriz.
La línea de código:
regressor_OLS = sm.OLS (y, X_opt) .fit ()
se le da un error elaborado.

Este es el codigo

Regresión lineal múltiple

Importación de bibliotecas

importar numpy como np
importar matplotlib.pyplot como plt
importar pandas como pd

importar el conjunto de datos

conjunto de datos = pd.read_csv ('50_Startups.csv')

Obteniendo las variables independientes

X = dataset.iloc [:,: - 1] .values
y = dataset.iloc [:, 4] .values
imprimir (conjunto de datos)

Codificación de datos categóricos

Codificación de la variable independiente

desde sklearn.preprocessing import OneHotEncoder
de sklearn.compose importar ColumnTransformer
ct = ColumnTransformer ([("País", OneHotEncoder (), [3])], resto = 'paso a través')
X = ct.fit_transform (X)

Evitar la trampa variable ficticia

X = X [:, 1:]

Dividir el conjunto de datos en el conjunto de entrenamiento y el conjunto de prueba

de sklearn.model_selection importar train_test_split
X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0.2, random_state = 0)

Adaptación del modelo de regresión lineal múltiple al conjunto de entrenamiento

de sklearn.linear_model import LinearRegression
regresor = LinearRegression ()
regressor.fit (X_train, y_train)

Predecir los resultados del conjunto de prueba

y_pred = regressor.predict (X_test)

Construyendo el modelo óptimo usando eliminación hacia atrás

importar statsmodels.api como sm

Agregar columnas de 1

X = np.append (arr = np.ones ((50,1)). Astype (int), values ​​= X, axis = 1)
X_opt = X [:, [0,1,2,3,4,5]]

Modelo de regresión lineal múltiple --- OLS

regressor_OLS = sm.OLS (y, X_opt) .fit ()
regressor_OLS.summary ()

Ejemplo de código de reproducción:

`` pitón
importar numpy como np

Mensaje de error:

ufunc 'isfinite' no es compatible con los tipos de entrada, y las entradas no se pueden convertir de forma segura a ningún tipo compatible de acuerdo con la regla de conversión '' segura ''

Archivo "C: UsersmoranaDocumentsAIUDEMYMachine Learning A-ZParte 2 - RegresiónSección 5 - Regresión lineal múltiplemultiple linear regression.py", línea 46, en
regressor_OLS = sm.OLS (y, X_opt) .fit ()

Archivo "C: UsersmoranaAppDataLocalContinuumanaconda3libsite-packagesstatsmodelsregressionlinear_model.py", línea 838, en __init__
hasconst = hasconst, ** kwargs)

Archivo "C: UsersmoranaAppDataLocalContinuumanaconda3libsite-packagesstatsmodelsregressionlinear_model.py", línea 684, en __init__
pesos = pesos, hasconst = hasconst, ** kwargs)

Archivo "C: UsersmoranaAppDataLocalContinuumanaconda3libsite-packagesstatsmodelsregressionlinear_model.py", línea 196, en __init__
super (RegressionModel, self) .__ init __ (endog, exog, ** kwargs)

Archivo "C: UsersmoranaAppDataLocalContinuumanaconda3libsite-packagesstatsmodelsbasemodel.py", línea 216, en __init__
super (Modelo de probabilidad, uno mismo) .__ init __ (endog, exog, ** kwargs)

Archivo "C: UsersmoranaAppDataLocalContinuumanaconda3libsite-packagesstatsmodelsbasemodel.py", línea 68, en __init__
** kwargs)

Archivo "C: UsersmoranaAppDataLocalContinuumanaconda3libsite-packagesstatsmodelsbasemodel.py", línea 91, en _handle_data
data = handle_data (endog, exog, missing, hasconst, ** kwargs)

Archivo "C: UsersmoranaAppDataLocalContinuumanaconda3libsite-packagesstatsmodelsbasedata.py", línea 635, en handle_data
** kwargs)

Archivo "C: UsersmoranaAppDataLocalContinuumanaconda3libsite-packagesstatsmodelsbasedata.py", línea 80, en __init__
self._handle_constant (hasconst)

Archivo "C: UsersmoranaAppDataLocalContinuumanaconda3libsite-packagesstatsmodelsbasedata.py", línea 125, en _handle_constant
si no es np.isfinite (ptp _). all ():

TypeError: ufunc 'isfinite' no es compatible con los tipos de entrada, y las entradas no se pueden convertir de forma segura a ningún tipo compatible de acuerdo con la regla de conversión '' segura ''

Información de la versión de Numpy / Python:

Spyder 4.0.0
1.17.4 3.7.3 (predeterminado, 24 de abril de 2019, 15:29:51) [MSC v.1915 64 bit (AMD64)]

Comentario más útil

¡Oye!
Su matriz X_opt tiene un tipo de objeto y esto puede estar causando un error. Intente cambiarlo para que flote. Por ejemplo, puede usar esto:
X = np.append (arr = np.ones ((50,1)). Astype (int), values ​​= X, axis = 1)
X_opt = X [:, [0,1,2,3,4,5]]
X_opt = np.array (X_opt, dtype = float)

Diviértete: D

Todos 6 comentarios

¡Oye!
Su matriz X_opt tiene un tipo de objeto y esto puede estar causando un error. Intente cambiarlo para que flote. Por ejemplo, puede usar esto:
X = np.append (arr = np.ones ((50,1)). Astype (int), values ​​= X, axis = 1)
X_opt = X [:, [0,1,2,3,4,5]]
X_opt = np.array (X_opt, dtype = float)

Diviértete: D

Gracias @ filip-stolinski por su solución

@ filip-stolinski Muchas gracias por su solución. Definitivamente funciona

Clausura. Vuelva a abrir o abra una nueva edición si es necesario.

Gracias @ filip-stolinski

Gracias

¿Fue útil esta página
0 / 5 - 0 calificaciones