Muestreo aleatorio simple y muestreo estratificado en PySpark

En este artículo, analizaremos el muestreo aleatorio simple y el muestreo estratificado en PySpark.

Muestreo aleatorio simple:

En el muestreo aleatorio simple, cada elemento no se obtiene en un orden particular. En otras palabras, se obtienen aleatoriamente. Es por eso que los elementos tienen la misma probabilidad de ser seleccionados. En palabras simples, el muestreo aleatorio se define como el proceso para seleccionar un subconjunto al azar de un gran conjunto de datos. El muestreo aleatorio simple en PySpark se puede obtener a través de la función sample(). El muestreo simple es de dos tipos: de reemplazo y sin reemplazo. Estos tipos de muestreo aleatorio se analizan a continuación en detalle, 

Método 1: Muestreo aleatorio con reemplazo

El muestreo aleatorio con reemplazo es un tipo de muestreo aleatorio en el que el elemento elegido al azar anterior se devuelve a la población y ahora se toma al azar un elemento aleatorio.  

Sintaxis:

muestra (Verdadero, fracción, semilla)

Aquí,

  • fracción: Representa la fracción de filas a generar. Puede oscilar entre 0,0 y 1,0 (inclusive)
  • semilla: Representa la semilla requerida para el muestreo (Por defecto es una semilla aleatoria). Se utiliza para regenerar el mismo muestreo aleatorio.

Ejemplo:

Python3

# Python program to demonstrate random
# sampling in pyspark with replacement
 
# Import libraries
import pandas as pd
from pyspark.sql import Row
from pyspark.sql import SparkSession
 
 
# Create a session
spark = SparkSession.builder.getOrCreate()
 
# Create dataframe by passing list
df = spark.createDataFrame([
    Row(Brand="Redmi", Units=1000000, Performance="Outstanding", Ecofriendly="Yes"),
    Row(Brand="Samsung", Units=900000, Performance="Outstanding",  Ecofriendly="Yes"),
    Row(Brand="Nokia", Units=500000, Performance="Excellent",  Ecofriendly="Yes"),
    Row(Brand="Motorola",Units=400000, Performance="Average",  Ecofriendly="Yes"),
    Row(Brand="Apple", Units=2000000,Performance="Outstanding",  Ecofriendly="Yes")
])
 
# Apply sample() function with replacement
df_mobile_brands = df.sample(True, 0.5, 42)
 
# Print to the console
df_mobile_brands.show()

Producción:

Método 2: Muestreo aleatorio sin reemplazo

El muestreo aleatorio sin reemplazo es un tipo de muestreo aleatorio en el que cada grupo tiene solo una oportunidad de ser seleccionado en la muestra.

Sintaxis:

muestra (falso, fracción, semilla)

Aquí,

fracción: Representa la fracción de filas a generar. Puede oscilar entre 0,0 y 1,0 (inclusive)

semilla: Representa la semilla requerida para el muestreo (Por defecto es una semilla aleatoria). Se utiliza para regenerar el mismo muestreo aleatorio.

Ejemplo:

Python3

# Python program to demonstrate random
# sampling in pyspark without replacement
 
# Import libraries
import pandas as pd
from pyspark.sql import Row
from pyspark.sql import SparkSession
 
# create the session
spark = SparkSession.builder.getOrCreate()
 
# Create dataframe by passing list
df = spark.createDataFrame([
    Row(Brand="Redmi", Units=1000000, Performance="Outstanding", Ecofriendly="Yes"),
    Row(Brand="Samsung", Units=900000, Performance="Outstanding",  Ecofriendly="Yes"),
    Row(Brand="Nokia", Units=500000, Performance="Excellent",  Ecofriendly="Yes"),
    Row(Brand="Motorola",Units=400000, Performance="Average",  Ecofriendly="Yes"),
    Row(Brand="Apple", Units=2000000,Performance="Outstanding",  Ecofriendly="Yes")
])
 
# Apply sample() function without replacement
df_mobile_brands = df.sample(False, 0.5, 42)
 
# Print to the console
df_mobile_brands.show()

Producción:

Método 3: Muestreo estratificado en pyspark

En el caso del muestreo Estratificado cada uno de los miembros se agrupa en los grupos que tienen la misma estructura (grupos homogéneos) conocidos como estratos y se elige el representante de cada uno de dichos subgrupos (llamados estratos). El muestreo estratificado en pyspark se puede calcular usando la función sampleBy(). La sintaxis se da a continuación,

Sintaxis:

sampleBy(columna, fracciones, semilla=Ninguno)

Aquí, 

  • columna: la columna que define los estratos
  • fracciones: Representa la fracción de muestreo para cada estrato. Cuando no se da el estrato, asumimos que la fracción es cero.
  • semilla: Representa la semilla requerida para el muestreo (Por defecto es una semilla aleatoria). Se utiliza para regenerar el mismo muestreo aleatorio.

Ejemplo:

En este ejemplo, tenemos tres estratos, 1000000, 400000 y 2000000 y se seleccionan según las fracciones 0,2, 0,4 y 0,2 respectivamente.  

Python3

# Python program to demonstrate stratified sampling in pyspark
 
# Import libraries
import pandas as pd
from pyspark.sql import Row
from pyspark.sql import SparkSession
 
# Create the session
spark = SparkSession.builder.getOrCreate()
 
# Creating dataframe by passing list
df = spark.createDataFrame([
    Row(Brand="Redmi", Units=1000000, Performance="Outstanding", Ecofriendly="Yes"),
    Row(Brand="Samsung", Units=1000000, Performance="Outstanding",  Ecofriendly="Yes"),
    Row(Brand="Nokia", Units=400000, Performance="Excellent",  Ecofriendly="Yes"),
    Row(Brand="Motorola",Units=400000, Performance="Average",  Ecofriendly="Yes"),
    Row(Brand="OPPO",Units=400000, Performance="Average",  Ecofriendly="Yes"),
    Row(Brand="Apple", Units=2000000,Performance="Outstanding",  Ecofriendly="Yes")
])
 
# Applying sampleBy() function
mobile_brands = df.sampleBy("Units", fractions={
  1000000: 0.2, 2000000: 0.4, 400000: 0.2}, seed=0)
 
# Print to the console
mobile_brands.show()

Producción:

Publicación traducida automáticamente

Artículo escrito por bhuwanesh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *