Google Colab: regresión lineal con PySpark

Google Colab: Creación de un modelo de regresión lineal simple con PySpark

Con fuentes ampliadas del conjunto de datos, el tema de Big Data tiene Recibió una creciente atención en los últimos años. Además de tratar con los datos gigantescos de todo tipo y forma, el tiempo de respuesta objetivo de la parte de análisis para el big data se ha reducido significativamente.

Esta velocidad y eficiencia no solo han ayudado en el análisis inmediato de Big Data sino también en la identificación de nuevas oportunidades .

Esto, a su vez, ha llevado a a movimientos empresariales más inteligentes, operaciones más eficientes, mayores ganancias y clientes más felices.

Apache Spark se creó para analizar Big Data con mayor velocidad. Una de las características importantes que ofrece Apache Spark es la capacidad de ejecutar los cálculos en la memoria.

También se considera que es más eficiente que MapReduce para la aplicación compleja que se ejecuta en el Disco.

Spark está diseñado para ser altamente accesible, ofreciendo API simples en Python, Java, Scala y SQL, y bibliotecas integradas ricas. También se integra estrechamente con otras herramientas de Big Data.

En particular, Spark puede ejecutarse en clusters de Hadoop y acceder a cualquier fuente de datos de Hadoop, incluida Cassandra.

PySpark es la interfaz que da acceso a Spark mediante el lenguaje de programación Python. PySpark es una API desarrollada en Python para la programación de spark y para escribir aplicaciones de spark al estilo de Python, aunque el modelo de ejecución subyacente es el mismo para todos los lenguajes API.

En este tutorial, trataremos principalmente la biblioteca de aprendizaje automático de PySpark Mllib que se puede usar para importar el modelo de regresión lineal u otros modelos de aprendizaje automático.

Sí, pero ¿por qué Google Colab?

Google Colab  se basa en el cuaderno Jupyter, que es una herramienta increíblemente poderosa que aprovecha las funciones de Google Docs.

Dado que se ejecuta en el servidor de Google, no necesitamos instalar nada en nuestro sistema localmente, ya sea un modelo de Spark o de aprendizaje profundo.

Las características más atractivas de Google Colab son el soporte gratuito de GPU y TPU. Dado que la compatibilidad con GPU se ejecuta en el propio servidor de Google, es, de hecho, más rápida que algunas GPU disponibles comercialmente, como la Nvidia 1050Ti. Una parte de la información general del sistema asignada a un usuario se parece a lo siguiente:

Gen RAM Free: 11.6 GB  | Proc size: 666.0 MB
GPU RAM Free: 11439MB | Used: 0MB | Util  0% | Total 11439MB

Suficiente de la pequeña negociaciones. Creemos un modelo de regresión lineal simple con PySpark en Google Colab.

Para abrir el Cuaderno Jupyter de Google Colab, haga clic en este enlace .

Google Colab: Ejecución de Pyspark

Para ejecutar spark en Google Colab, primero Necesitamos instalar todas las dependencias en el entorno Google Colab. Como Apache Spark 2.3.2 con hadoop 2.7, Java 8 y Findspark para ubicar spark en el sistema. La instalación de las herramientas se puede llevar a cabo dentro del cuaderno Jupyter de la Google Colab.

Siga los pasos para instalar las dependencias:

!apt-get install openjdk-8-jdk-headless -qq > /dev/null
!wget -q https://www-us.apache.org/dist/spark/spark-2.4.1/spark-2.4.1-bin-hadoop2.7.tgz
!tar xf spark-2.4.1-bin-hadoop2.7.tgz
!pip install -q findspark

Ahora que hemos instalado Spark y Java en Google Colab, es hora de establecer la ruta del entorno que nos permita ejecutar PySpark en nuestro entorno Google Colab.

Establezca la ubicación de Java y Spark ejecutando el siguiente código:
import os
os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8-openjdk-amd64"
os.environ["SPARK_HOME"] = "/content/spark-2.3.2-bin-hadoop2.7"

Podemos ejecutar una sesión local de spark para probar nuestra instalación:

import findspark
findspark.init()
from pyspark.sql import SparkSession
spark = SparkSession.builder.master("local[*]").getOrCreate()

 

Nuestro Google Colab está listo para ejecutar PySpark. Construyamos un modelo simple de Regresión Lineal.

Google Colab y el Modelo de Regresión Lineal

El modelo de Regresión Lineal es uno de los métodos de aprendizaje automático más antiguos y ampliamente utilizados que asume una relación entre variables dependientes e independientes.

Por ejemplo, un modelador podría querer predecir el pronóstico de la lluvia según la relación de humedad. La regresión lineal consiste en la mejor línea de ajuste a través de los puntos dispersos en el gráfico y la mejor línea de ajuste se conoce como la línea de regresión. Se puede encontrar información detallada sobre la regresión lineal aquí .

Para nuestro propósito de comenzar con Pyspark en Google Colab y para mantener las cosas simples. Utilizaremos el famoso conjunto de datos de Boston Housing. Se puede encontrar una descripción completa de este conjunto de datos en este enlace .

El objetivo de este ejercicio es predecir los precios de la vivienda a partir de las características dadas. Predeciremos los precios del conjunto de datos de Boston Housing considerando a MEDV como la variable objetivo y todas las demás variables como características de entrada.

Podemos descargar el conjunto de datos de este enlace y mantenerlo en un lugar accesible en nuestras unidades locales . El conjunto de datos se puede cargar en el directorio Google Colab usando el siguiente comando de la misma unidad.

from google.colab import files
files.upload ()
Ahora podemos verificar el contenido del directorio del Google Colab !

Deberíamos ver un archivo llamado BostonHousing.csv guardado. Ahora que hemos subido el conjunto de datos con éxito, podemos comenzar a analizar.

Para nuestro modelo de regresión lineal, necesitamos importar Vector Assembler y Regresión lineal de la API de PySpark. Vector Assembler es una herramienta de transformación que reúne todas las características en un vector a partir de múltiples columnas que contienen doble tipo .

Nosotros deberíamos haber usado ( debemos usar ) StringIndexer si alguna de nuestras columnas contiene valores de cadena para convertirla en valores numéricos. Afortunadamente, el conjunto de datos de BostonHousing solo contiene tipo double, por lo que podemos omitir StringIndexer por ahora.

from pyspark.ml.feature import VectorAssembler
 from pyspark.ml.regression import LinearRegression
 = spark.read.csv (& # 039; BostonHousing.csv & # 039 ;, inferSchema = True, header = True)

Tenga en cuenta que usamos InferSchema dentro de read.csv (). InferSchema deduce automáticamente diferentes tipos de datos para cada columna.

Imprimimos el conjunto de datos para ver los tipos de datos de cada columna:
 dataset.printSchema ()

 

Debe imprimir los tipos de datos de la siguiente manera:

google colab data

 

En el siguiente paso, convertiremos todas las características de diferentes columnas en una sola columna y podremos llamar a la nueva columna de vectores como “Atributos” en outputCol.

#Input all the features in one vector column
assembler = VectorAssembler(inputCols=['crim', 'zn', 'indus', 'chas', 'nox', 'rm', 'age', 'dis', 'rad', 'tax', 'ptratio', 'b', 'lstat'], outputCol = 'Attributes')
output = assembler.transform(dataset)
#Input vs Output
finalized_data = output.select("Attributes","medv")
finalized_data.show()

google colab medv

Aquí, ‘Atributos’ son las características de entrada de todas las columnas y ‘medv’ es la columna de destino.

A continuación, debemos dividir la capacitación y datos de pruebas de acuerdo con nuestro conjunto de datos (0.8 y 0.2 en este caso).

#Split training and testing data
train_data,test_data = finalized_data.randomSplit([0.8,0.2])

regressor = LinearRegression(featuresCol = 'Attributes', labelCol = 'medv')

#Learn to fit the model from training set
regressor = regressor.fit(train_data)

#To predict the prices on testing set
pred = regressor.evaluate(test_data)

#Predict the model
pred.predictions.show()

La puntuación predicha en la columna de predicción como salida:

google colab atributos

El puntaje predicho en la columna de predicción como salida. También podemos imprimir el coeficiente y la intersección del modelo de regresión usando el siguiente comando:
#coefficient of the regression model
 coeff = regressor.coefficients
 #X and Y intercept
 intr = regressor.intercept
 print ("The coefficient of the model is:% a"% coeff)
 print ("The intercept of the model is:% f"% intr)

Una vez que hayamos terminado con la operación de regresión lineal básica, podemos ir un poco más lejos y analizar nuestro modelo estadísticamente importando RegressionEvaluator modulo de Pyspark.

from pyspark.ml.evaluation import RegressionEvaluator
eval = RegressionEvaluator(labelCol="medv", predictionCol="prediction", metricName="rmse")
# Root Mean Square Error
rmse = eval.evaluate(pred.predictions)
print("RMSE: %.3f" % rmse)
# Mean Square Error
mse = eval.evaluate(pred.predictions, {eval.metricName: "mse"})
print("MSE: %.3f" % mse)
# Mean Absolute Error
mae = eval.evaluate(pred.predictions, {eval.metricName: "mae"})
print("MAE: %.3f" % mae)
# r2 - coefficient of determination
r2 = eval.evaluate(pred.predictions, {eval.metricName: "r2"})
print("r2: %.3f" %r2)


Eso es todo. Ha creado su primer modelo de aprendizaje automático utilizando Pyspark en Google Colab.

Puede acceder al código completo desde github desde aquí .

Por favor, avíseme si se encuentra con otros problemas, me encantaría ayudarlo si puedo!

 

Dejá un comentario