mac descargar python anaconda spyder

descargar - spyder python 2.7 mac



Spyder Python "las matrices de objetos actualmente no son compatibles" (16)

Tengo un problema en Anaconda Spyder (Python).

La matriz de tipo de objeto no se puede ver en Windows 10 en el explorador de variables . Si hago clic en X o Y , veo un error:

arrays de objetos actualmente no son compatibles.

Tengo Win 10 Home 64bit (i7-4710HQ) y Python 3.5.2 | Anaconda 4.2.0 (64 bits) [MSC v.1900 64 bits (AMD64)]

Screenshot


Solución: Bajar la versión de spyder a 3.2.0.

Puedes hacer esto yendo a anaconda-navigator.

Si está siguiendo el Curso Udemy sobre Aprendizaje Automático, probablemente el instructor esté usando una versión anterior de spyder y está funcionando para él. En las versiones más nuevas como 3.2.8, no funciona, pero se puede incorporar en las versiones futuras en el futuro.


( Desarrollador Spyder aquí ) El soporte para matrices de objetos se agregará en Spyder 4 , que se lanzará en 2019.


Añadir

X = pd.DataFrame (X)

para convertir el objeto X en un marco de datos que puede verificarse también en el spyder sin el error.

¡Trabajó para mi!


Con la versión actualizada de spyder, ya no puede ver matrices mixtas utilizando el explorador de variables. Puede imprimir la matriz en su lugar en la consola para inspeccionarla.


Esto funcionó para mí:

import pandas as pd labels = pd.read_csv(''labels/labels.csv'') # object arrays are currently not supported exception breeds = labels.breed.unique() # Supported Version # working fine breeds = pd.DataFrame(labels.breed.unique())


Esto se debe a que la matriz tiene más de un tipo de datos, por lo que no puede mostrar un objeto con más de un tipo de datos porque no puede seleccionar un solo tipo. Pero si tiene un solo tipo de datos, el tipo es ''float64'', por lo que se puede ver.


Esto se debe a que los datos no están codificados. Todos los datos categóricos deben estar "codificados". Después de ver los datos en el explorador de variables de su sypder ( Screenshot ), queda claro que X contiene datos sobre algún país (como [Francia, 44.0, 72000]), por lo que el nombre del país debe estar codificado y, de manera similar, y contiene "Sí" o "No", por lo que también debe estar codificado

Agregue el siguiente código después de la línea 21, podrá ver la matriz de objetos

# Encoding categorical data from sklearn.preprocessing import LabelEncoder, OneHotEncoder '''''' To prevent the machine learning equations from thinking (if there are more than one country) that one country is greater than another, use the concept of dummy variables '''''' labelencoder_X = LabelEncoder() X[:, 0] = labelencoder_X.fit_transform(X[:, 0]) onehotencoder = OneHotEncoder(categorical_features = [0]) X = onehotencoder.fit_transform(X).toarray() '''''' Since y is dependent variable, the machine learning model will know that its a category, so we are going to use only the LableEncoder() '''''' labelencoder_y = LabelEncoder() y = labelencoder_y.fit_transform(y)


Hay dos cosas que puede hacer para omitir el visor de variables en Spyder. Tu también puedes

A) use "imprimir (X)" para revelar el contenido de X, o

B) Utilice la consola IPython de forma simple simplemente escribiendo X y presionando regresar. Eso también le permite revelar rápidamente si las funciones ML discutidas están haciendo su trabajo.


He analizado el código hasta el point que podría estar fallando.

Parece que el editor de arrays de Spyder no admite mostrar arrays de tipos mixtos (arrays de objetos).

Aquí puedes ver los formatos soportados .

Algo fue confuso para mí la primera vez que lo usé: recibes el mismo editor cuando haces clic en un Conjunto de datos que cuando haces clic en una variable de matriz.

En el caso de una variable de tipo array , recibirá un widget ArrayEditor . Creo que esa llamada se hace here .

Pero en el caso de una variable de tipo DataFrame , recibe un DataFrameEditor . Creo que esa llamada se hace here

El problema es que ambos widgets se ven más o menos iguales, por lo que uno tiende a pensar que recibe el mismo resultado en ambos casos, pero el DataFrameEditor permite tipos mixtos y el ArrayEditor no.

Puede intentar inspeccionar las variables de la matriz en la consola de IPython hasta que finalmente se publique el soporte en Spyder para los Widgets adecuados.


Siempre que el tipo de sus variables no sea el mismo y en el explorador de variables lo vea como un objeto, significa que la variable debe convertirse al mismo tipo en su caso. Puedes arreglarlo usando fit_transform ():

Aquí se relaciona parte del código en ese tutorial:

from sklearn.preprocessing import LabelEncoder , OneHotEncoder labelencoder_X_1 = LabelEncoder() X[:, 1] = labelencoder_X_1.fit_transform(X[:, 1]) labelencoder_X_2 = LabelEncoder() X[:, 2] = labelencoder_X_1.fit_transform(X[:, 2]) onehotencoder = OneHotEncoder(categorical_features = [1]) X = onehotencoder.fit_transform(X).toarray()


Spyder aún no lo admite, pero puede usar la Consola IPyhon para imprimir esos valores escribiendo directamente el nombre de la variable.


Tuve un problema similar, porque insistí en usar el formato exacto para la variable y como para x , es decir, x[: , 0] = labelencoder_x.fit_transform(x[:,0]) , y utilicé y[:] = labelencoder_y.fit_transform(y[:]) *(taking into account the syntax for the fit transform for y)*

Lo anterior hizo el dtype para y_test y y_train "objeto" que no se puede ver en Spyder en el explorador de variables.

Cuando usé la línea exacta utilizada por el instructor: y = labelencoder_y.fit_transform(y) . El dtype cambió a int64 que se puede ver en la variable explorer.


Un buen ejemplo está aquí.

import numpy as np import pandas as pd import matplotlib.pyplot as plt dataset = pd.read_csv(''Salary_Data.csv'') in your case right name of your file X=dataset.iloc[:,:-1].values this will convert dataframe to object df = pd.DataFrame(X)

Puede ver los datos en el marco de datos, lo que convierte arrray a dataframe.

Y la variable explorador acepta el marco de datos. El código anterior es correcto y comprobado.


Usa el siguiente código:

dataset = pd.read_csv(''Data.csv'') X = pd.DataFrame(dataset.iloc[:, :-1].values)


Utilicé lo mismo sin dataFrame y .values .
Funciono para mi

x = dataset.iloc[:, :-1] y = dataset.iloc[:,3]


Yo tuve el mismo problema. El problema era la línea

oneHotEncoder.fit_transform(X).toarray()

Lo que no vuelve a asignar los datos a la matriz X. En su lugar, la siguiente línea debería solucionar el problema:

X=oneHotEncoder.fit_transform(X).toarray()