sklearn scikit learn python scikit-learn coredump

sklearn - scikit learn en python



¿Por qué scikit-learn causa el núcleo volcado? (3)

Intento ejecutar un ajuste lineal simple en scikit-learn:

from sklearn import linear_model clf = linear_model.LinearRegression() clf.fit ([[0, 0], [1, 1], [2, 2]], [0, 1, 2])

Como resultado, obtengo:

Illegal instruction (core dumped)

¿Alguien sabe cuál es la razón de este problema y cómo se puede resolver el problema?

PD: uso la versión 0.16.1 de scikit-learn. Pero tuve este problema también con una versión anterior. Lo hago bajo Ubuntu.

ADICIONAL

Hoy probé otro estimador ( KernelRidge ) y recibí el mismo mensaje de error. Creo que hace varios meses intenté resolver un sistema de ecuaciones lineales usando scipy y tuve el mismo error. Debo añadir que los ejemplos que probé siempre fueron pequeños (por lo tanto, el tamaño del problema no debería ser el motivo del error). En otra computadora (en el trabajo) también tengo Ubunutu y uso scikit-learn y no tengo su problema. Entonces, parece que tengo algún problema con la computadora portátil de mi casa.


Debe desinstalarlo, eliminar manualmente la carpeta porque la desinstalación no se limpia correctamente. En mi caso, desinstalé scikit-learn-0.17.1 e instalé scikit-learn-0.18.1

pip uninstall scikit-learn rm -rf ~/venv/lib/python2.7/site-packages/sklearn/ pip uninstall scikit-learn


Salir en una extremidad aquí, pero ¿su computadora portátil tiene una CPU de AMD?

¡AMD ha eliminado el soporte para 3DNow! instrucciones de sus procesadores más recientes ( fuente ), que una red de Ubuntu y Debian bugtrackers muestra que muchas personas están siendo afectadas (por ejemplo , 1 , 2 , 3 , 4 , 5 ).

Scikit-learn se basa en Numpy, que a su vez utiliza bibliotecas como OpenBLAS o Atlas para realizar cálculos de la manera más eficiente posible en el hardware específico de su computadora.

Sin embargo, las versiones predeterminadas compiladas para Debian y Ubuntu apuntan a CPUs antiguas, sobre la base de que los procesadores futuros podrían ejecutar código para procesadores antiguos, pero esto no es generalmente cierto al revés.

Sin embargo, en este caso, se han eliminado las instrucciones de las CPU más recientes de AMD, por lo que recibe un error de Illegal instruction , a pesar de tener un código python válido, ya que las bibliotecas subyacentes están tratando de utilizar las instrucciones anteriores que ya no están presentes.

Si esto es lo que está sucediendo, entonces la solución es construir nuble y OpenBLAS para el procesador real en su computadora portátil, en lugar del genérico enviado por Debian. Aunque este ejemplo es para Ubuntu, las instrucciones proporcionadas por https://hunseblog.wordpress.com/2014/09/15/installing-numpy-and-openblas/ deberían funcionar perfectamente para Debian.


Esta es la lista de todas las dependencias del paquete "python-scikits-learn":

  • python-scikits.statsmodels
  • python-skimage
  • python-skimage-doc
  • python-skimage-lib
  • python-sklearn
  • python-sklearn-doc
  • python-sklearn-lib

Si se cumplen todas las dependencias y aún así su programa no funciona, debe desinstalar esos binarios e instalarlos desde la fuente, una instalación manual detectará la configuración correcta para su sistema.

También puede intentar reinstalar el paquete:

sudo apt-get autoremove python-scikits-learn sudo apt-get install python-scikits-learn

Atentamente