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
importar numpy como np
importar matplotlib.pyplot como plt
importar pandas como pd
conjunto de datos = pd.read_csv ('50_Startups.csv')
X = dataset.iloc [:,: - 1] .values
y = dataset.iloc [:, 4] .values
imprimir (conjunto de datos)
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)
X = X [:, 1:]
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)
de sklearn.linear_model import LinearRegression
regresor = LinearRegression ()
regressor.fit (X_train, y_train)
y_pred = regressor.predict (X_test)
importar statsmodels.api como sm
X = np.append (arr = np.ones ((50,1)). Astype (int), values = X, axis = 1)
X_opt = X [:, [0,1,2,3,4,5]]
regressor_OLS = sm.OLS (y, X_opt) .fit ()
regressor_OLS.summary ()
`` pitón
importar numpy como np
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 ''
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)]
¡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
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