Inizia subitoInizia gratis

Suddividere i dati con un effetto di gruppo

Prima di eseguire qualsiasi modello, devi suddividere i dati in insiemi di training e testing. C'è però una complicazione in questo insieme di dati, che ti impedisce di chiamare semplicemente sdf_random_split(). La complicazione è che tutte le tracce di uno stesso artista dovrebbero comparire nello stesso insieme: il tuo modello sembrerà più accurato di quanto non sia se tracce di un artista vengono usate per addestrare il modello e poi compaiono anche nel testing set.

Il trucco per gestire questo aspetto è partizionare solo gli ID degli artisti e poi fare un inner join di quegli ID partizionati con il dataset originale. Nota che artist_id è più affidabile di artist_name per la partizione, perché alcuni artisti usano variazioni del proprio nome tra le tracce. Per esempio, Duke Ellington talvolta ha "Duke Ellington" come nome artista, ma altre volte "Duke Ellington & His Orchestra", o una delle diverse varianti di scrittura.

Questo esercizio fa parte del corso

Introduzione a Spark con sparklyr in R

Visualizza corso

Istruzioni dell'esercizio

È stata creata per te una connessione Spark come spark_conn. È stata predefinita come track_data_tbl una tibble collegata ai metadati delle tracce e ai dati di timbro combinati e filtrati archiviati in Spark.

  • Partiziona gli ID degli artisti in insiemi di training e testing, assegnando il risultato a training_testing_artist_ids.
    • Seleziona la colonna artist_id di track_data_tbl.
    • Ottieni le righe univoche.
    • Partiziona in 70% training e 30% testing.
  • Esegui un inner join dell'insieme di training con track_data_tbl per artist_id, assegnando il risultato a track_data_to_model_tbl.
  • Esegui un inner join dell'insieme di testing con track_data_tbl per artist_id, assegnando il risultato a track_data_to_predict_tbl.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

# track_data_tbl has been pre-defined
track_data_tbl

training_testing_artist_ids <- track_data_tbl %>%
  # Select the artist ID
  ___ %>%
  # Get distinct rows
  ___ %>%
  # Partition into training/testing sets
  ___

track_data_to_model_tbl <- track_data_tbl %>%
  # Inner join to training partition
  ___

track_data_to_predict_tbl <- track_data_tbl %>%
  # Inner join to testing partition
  ___
Modifica ed esegui il codice