7 configuraciones para proyectos de ciencia de datos: garantizar dependencias, mantener la salida estable

Al iniciar un proyecto de ciencia de datos, generalmente necesitamos configurarlo para garantizar las dependencias requeridas, mantener la salida estable y preparar funciones comunes.

Un ejemplo de configuración de proyecto (de Handson-ML2)

Este artículo presentará algunas de las configuraciones de proyecto más útiles en JuypterNotebook.

1. Asegúrese de que la versión de Python

Compruebe la versión del intérprete de Python en JupyterNotebook:

sistema de importación

sys.version'3.7.6 (predeterminado, 8 de enero de 2020, 13:42:34) \n[Clang 4.0.1 (tags/RELEASE_401/final)]'

Para asegurarse de que el proyecto se ejecuta con la versión mínima requerida del intérprete de Python, agregue el siguiente código a la configuración del proyecto:

# Se requiere Python ≥3.7

sistema de importación

afirmar sys.version_info >= (3, 7)

Python debe tener la versión 3.7 o superior; de lo contrario, se generará un AssertionError.

2. Asegúrese de que la versión del paquete

Verifique las versiones de paquetes instalados, como TensorFlow.

importar tensorflow como tf

tf.__versión__'2.0.0'

Asegúrate de que el proyecto esté ejecutado por TensorFlow2.0 y superior; de lo contrario, se generará un AssertionError.

# Se requiere TensorFlow ≥2.0

importar tensorflow como tf

afirmar tf.__version__ >= "2.0"

3. Evita dibujar imágenes borrosas

Los gráficos predeterminados en JuypterNotebook se ven borrosos. Por ejemplo, un mapa de calor simple para encontrar valores faltantes. (https://towardsdatascience.com/using-pandas-pipe-function-to-improve-code-readability-96d66abfaf8)

importar seaborn como sns

importar matplotlib.pyplot como plt

%matplotlib inline# Formato de figura predeterminado png

sns.heatmap(df.isnull(),

yticklabels=Falso,

cbar=Falso,

cmap='viridis')

Las imágenes predeterminadas se ven borrosas

Como se puede ver en la figura anterior, el texto está borroso, los valores que faltan en la columna Cabina están demasiado llenos y los valores que faltan en la columna Embarcado no se pueden reconocer.

Para resolver este problema, use %config InlineBackend.figure_format='retina' o %configInlineBackend.figure_format = 'svg' después de %matplotlib inline, a saber:

% matplotlib en línea

%config InlineBackend.figure_format = 'retina' # o 'svg'sns.heatmap(df.isnull(),

yticklabels=Falso,

cbar=Falso,

cmap='viridis')

El formato de imagen está configurado en retina o svg

En comparación con la imagen anterior, la imagen de arriba es más clara y los valores que faltan en la columna Embarcados también se pueden identificar con éxito.

4. Mantenga la salida estable en diferentes ejecuciones

Los números aleatorios se usan en muchos lugares en proyectos de ciencia de datos. Por ejemplo:

train_test_split() de Scikit-Learn

np.random.rand() para inicializar pesos

Si la semilla aleatoria no se reinicia, aparecerá un número diferente para cada llamada:

>>> np.aleatorio.rand(4)

matriz ([0.83209492, 0.10917076, 0.15798519, 0.99356723])

>>> np.aleatorio.rand(4)

matriz ([0.46183001, 0.7523687, 0.96599624, 0.32349079])

np.random.seed(0) hace que los números aleatorios sean predecibles:

>>> np.random.seed(0)

>>> np.aleatorio.rand(4)

matriz ([0,5488135, 0,71518937, 0,60276338, 0,54488318])

>>> np.random.seed(0)

>>> np.aleatorio.rand(4)

matriz ([0,5488135, 0,71518937, 0,60276338, 0,54488318])

Si reinicia la semilla aleatoria (cada vez), terminará con el mismo conjunto de datos cada vez. Por lo tanto, el proyecto puede mantener la salida estable de una ejecución a otra.

5. Salida de unidades múltiples

De forma predeterminada, JupyterNotebook no puede generar varios resultados en la misma celda. Para generar múltiples resultados, el shell se puede reconfigurar usando IPython.

de IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactividad = "todos"

6. Guarde la imagen en un archivo

Matplotlib puede guardar cifras con el método savefig(), pero se generará un error si la ruta dada no existe.

plt.savefig('./figures/my_plot.png')FileNotFoundError: [Errno 2] Nosuch archivo o directorio: './figures/my_plot.png'

La mejor práctica es colocar todas las imágenes en un solo lugar, como la carpeta de figuras del espacio de trabajo. Puede crear manualmente una carpeta de figuras utilizando la GUI del sistema operativo (interfaz del sistema operativo) o ejecutando el comando lógico en Jupyter Notebook, pero es mejor crear una pequeña función para hacer esto.

Esto es especialmente útil cuando se requieren algunas configuraciones de gráficos personalizadas o subcarpetas adicionales para agrupar gráficos. Aquí está la función para guardar una imagen en un archivo:

importarnos

% matplotlib en línea

import matplotlib.pyplot as plt# Dónde guardar las figuras

PROYECTO_ROOT_DIR = "."

SUB_FOLDER = "sub_carpeta" #una subcarpeta

IMAGES_PATH = os.path.join(PROJECT_ROOT_DIR, "images", SUB_FOLDER)defsave_fig(name, images_path=IMAGES_PATH, tight_layout=True,extension="png", resolution=300):

si no es os.path.isdir(images_path):

os.makedirs(images_path)

ruta = os.ruta.unirse(ruta_imágenes, nombre+ "." + extensión)

print("Guardando cifra:",nombre)

si diseño_apretado:

plt.tight_layout()

plt.savefig(ruta, formato=extensión,dpi=resolución)

Ahora llame a save_fig('figure_name'), se creará un directorio de imágenes/subcarpetas en el espacio de trabajo y la imagen se guardará en el directorio con el nombre "figure_name.png". Además, se proporcionan los tres ajustes más utilizados:

· tight_layout puede ajustar automáticamente el relleno del submapa

La extensión puede guardar imágenes en varios formatos.

· resolución puede establecer la resolución de la imagen

7. Descarga los datos (y extráelos)

Trabajar con datos web es un lugar común para los científicos de datos. Es posible usar un navegador para descargar los datos y ejecutar el comando para descomprimir el archivo, pero sería mejor crear una pequeña función para hacerlo. Esto es especialmente importante cuando los datos deben cambiar periódicamente.

Escriba un pequeño script para que se ejecute cuando se obtengan los datos más recientes (también puede configurar un trabajo programado que se ejecute automáticamente de forma regular). Automatizar el proceso de raspado también es útil si el conjunto de datos debe instalarse en varias máquinas.

Aquí está la función para descargar y descomprimir los datos:

importarnos

importar archivo tar

importar archivo zip

importar urllib

# Dónde guardar los datos

PROYECTO_ROOT_DIR = "."

SUB_FOLDER = "nombre_del_grupo"

LOCAL_PATH = os.path.join(PROJECT_ROOT_DIR, "datasets", SUB_FOLDER)defdownload(file_url, local_path = LOCAL_PATH):

si no es os.path.isdir(local_path):

os.makedirs(ruta_local)

# Descargar archivo

imprimir(">>>descargando")

nombre de archivo = os.path.basename(archivo_url)

file_local_path =os.path.join(local_path, nombre de archivo)

urllib.request.urlretrieve(file_url,file_local_path)

# descomprimir/descomprimir archivo

if filename.endswith("tgz") o filename.endswith("tar.gz"):

print(">>>archivo de descompresión:", nombre de archivo)

tar =tarfile.open(file_local_path, "r:gz")

tar.extractall(ruta = ruta_local)

tar.cerrar()

elifffilename.termina con("tar"):

print(">>> archivo de desempaquetado:", nombre de archivo)

tar =tarfile.open(file_local_path, "r:")

tar.extractall(ruta = ruta_local)

tar.cerrar()

elifffilename.endwith("zip"):

print(">>>archivo de descompresión:", nombre de archivo)

zip_file = zipfile.ZipFile(file_local_path)

zip_file.extractall(ruta =ruta_local)

archivo_zip.close()

imprimir("Terminado")

Ahora, llamar a download("http://a_valid_url/housing.tgz") creará un directorio datasets/group_name en el espacio de trabajo, descargará housing.tgz y extraerá housing.csv de este directorio. Esta pequeña función también se puede usar para CSV y archivos de texto.

Supongo que te gusta

Origin blog.csdn.net/qq_40016005/article/details/127020487
Recomendado
Clasificación