Listă obraznică alimentată de învățare automată: o poveste festivă Jumping Rivers

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

Introducere

Ho ho ho! 🎅 Sezonul sărbătorilor este aici, iar la Jumping Rivers împodobim sălile cu date, nu doar beteală. În timp ce elfii sunt ocupați să-și verifice listele de două ori, ne-am gândit: de ce să nu aducem puțin magie de învățare automată la Crăciun? La urma urmei, ce este mai festiv decât combinarea modelării predictive cu bastoane de bomboane, prăjituri și o stropire de răutate la birou?

Acest blog este permisul tău de acces total la o călătorie bazată pe cod în care aflăm cine a fost obraznic, cine este drăguț și cine se află doar răutăcios între ele.

Vă vom ghida prin procesul pas cu pas: culegând datele echipei, inventând cele mai festive caracteristici, antrenați modelul nostru ML și dezvăluind rezultatele într-o întorsătură de sărbători. Așa că luați o cană de cacao, puneți-vă șosetele preferate de Crăciun și haideți să ne aruncăm în aventura Jumping Rivers ML-Powered Naughty List!

Notă: Toate datele, etichetele și rezultatele din această postare sunt în întregime fictive și generate aleatoriu pentru distracție festivă.

Pasul 1: Colectarea datelor și introducerea echipei

Primul nostru pas a fost colectarea setului nostru de date. Am folosit echipa Jumping Rivers ca participanți, atribuind caracteristici jucăușe, cu tematică de vacanță, pentru a reflecta potențialele lor trăsături „obraznice”. Iată o prezentare generală concisă, festivă, într-un format de masă alăturat:

Fiecărui participant i se atribuie patru trăsături jucăușe care reprezintă răul de sărbătoare:

  • Am mâncat prea multe prăjituri 🍪
  • Am uitat să trimiți felicitări de Crăciun 💌
  • A cântat off-key în timpul colindelor 🎶
  • Dezastre de ambalaj cadou 🎁

Fiecare nume de pe această listă este acum în cursa pentru titlul festiv suprem: Naughty, Nice, or Mildly Mischievous. Se zvonește că Spiridul Stagiar al Moș Crăciun a revendicat deja primul loc pentru răul cu prăjiturile, în timp ce Rudolph păstrează tablourile de bord foarte curate, iar Frosty the Snow Analyst menține un scor de iarnă perfect echilibrat.

Pasul 2: Ingineria caracteristicilor

În scopul ML, numele au fost codificate numeric. Acest lucru nu este semnificativ într-un context ML din lumea reală, dar servește ca o demonstrație a preprocesării. Caracteristicile pentru modelare includ:

  • Nume (codificat)
  • Am mâncat prea multe prăjituri
  • Am uitat să trimit felicitări de Crăciun
  • A cântat off-key
  • Dezastre de ambalare pentru cadouri

Pasul 3: Training model

Am ales un clasificator Random Forest în R pentru simplitatea și interpretabilitatea sa. Modelul a fost antrenat pe setul de date pentru a prezice eticheta „obraznic” pe baza celor patru caracteristici comportamentale și a numelui codificat. Deși setul de date este mic și jucăuș, acest lucru demonstrează un flux de lucru ML adecvat: colectarea datelor, preprocesare, antrenament de model, predicție.

library(tidyverse)
library(randomForest)
library(ggplot2)

Primul lucru pe care trebuie să-l facem este să setăm un vector care să conțină membrii echipei împreună cu niște lucrători temporari de Crăciun, Spiridul Stagiar al Moșului, Rudolph Renul de Date și Analistul Frosty Zăpada.

# Team members
team = c(
 "Esther Gillespie",
 "Colin Gillespie",
 "Sebastian Mellor",
 "Martin Smith",
 "Richard Brown",
 "Shane Halloran",
 "Mitchell Oliver",
 "Keith Newman",
 "Russ Hyde",
 "Gigi Kenneth",
 "Pedro Silva",
 "Carolyn Wilson",
 "Myles Mitchell",
 "Theo Roe",
 "Tim Brock",
 "Osheen MacOscar",
 "Emily Wales",
 "Amieroh Abrahams",
 "Deborah Washington",
 "Susan Smith",
 "Santa's Intern Elf",
 "Rudolph the Data Reindeer",
 "Frosty the Snow Analyst"
)

Acum avem membrii echipei pe care îi vom avea la întâmplare generați niște valori pentru caracteristicile modelului.

# Randomly generate playful 'naughty traits'
set.seed(51)
df = tibble(
 name = team,
 ate_too_many_cookies = sample(0:1, length(team), replace = TRUE),
 forgot_to_send_cards = sample(0:1, length(team), replace = TRUE),
 sang_off_key = sample(0:1, length(team), replace = TRUE),
 wrapping_disaster = sample(0:1, length(team), replace = TRUE),
 naughty = sample(0:1, length(team), replace = TRUE)
)


# Encode names as numeric
df$name_encoded = as.numeric(factor(df$name))

Următorul pe listă este să configurați un vector de caracteristici pe care dorim să le folosim și apoi să antrenăm modelul. Apoi putem folosi modelul pentru a prezice scorul nostru fictiv de obraznic pentru fiecare membru al echipei! Putem vedea că Theo este în fruntea listei, urmat îndeaproape de Osheen.

features = c(
 "name_encoded",
 "ate_too_many_cookies",
 "forgot_to_send_cards",
 "sang_off_key",
 "wrapping_disaster"
)


# Train Random Forest
rf_model = randomForest(x = df(, features),
 y = as.factor(df$naughty),
 ntree = 100)


# Predict naughtiness
df$predicted_naughty = predict(rf_model, df(, features))
df$naughtiness_score = predict(rf_model, df(, features),
 type = "prob")(, 2)


# Create the Naughty List
naughty_list = df %>%
 arrange(desc(naughtiness_score)) %>%
 select(name, naughtiness_score, predicted_naughty)

print(naughty_list)

## # A tibble: 23 × 3
## name naughtiness_score predicted_naughty
##   
## 1 Theo Roe 0.76 1
## 2 Osheen MacOscar 0.74 1
## 3 Myles Mitchell 0.72 1
## 4 Esther Gillespie 0.68 1
## 5 Deborah Washington 0.66 1
## 6 Tim Brock 0.59 1
## 7 Amieroh Abrahams 0.55 1
## 8 Santa's Intern Elf 0.48 0
## 9 Carolyn Wilson 0.38 0
## 10 Susan Smith 0.2 0
## # ℹ 13 more rows

Ultimul lucru de făcut este să vizualizați rezultatele noastre cu {ggplot2}:

# Fun bar plot
ggplot(naughty_list,
 aes(x = reorder(name, naughtiness_score),
 y = naughtiness_score,
 fill = as.factor(predicted_naughty))) +
 geom_col() +
 coord_flip() +
 scale_fill_manual(values = c("0" = "forestgreen",
 "1" = "darkred"),
 labels = c("Nice", "Naughty")) +
 labs(title = "🎅 Jumping Rivers ML-powered Naughty List 🎄",
 x = "Team Member",
 y = "Naughtiness Score",
 fill = "Status",
 alt = "Jumping Rivers Naughty List") +
 theme_minimal(base_family = "outfit")

Diagrama coloane Ggplot2 care arată lista obraznică a râurilor săritoareDiagrama coloane Ggplot2 care arată lista obraznică a râurilor săritoare

Pasul 4: Analiză și note

După generarea predicțiilor, putem interpreta Naughty List. Cele mai mari scoruri de obraznic indică care participanții sunt cei mai răutăcioși conform modelului nostru jucăuș.

Observațiile din această analiză includ:

  • Pasionați de cookie-uri: participanții cu mai multe infracțiuni ale cookie-urilor au obținut scoruri mai mari.
  • Haos de ambalare a cadourilor: cei ale căror cadouri arătau ca artă abstractă au contribuit la scoruri mai mari.
  • Necazuri muzicale: colindătorii nepotriviți au fost evidențiați ca obraznici.
  • Cărți uitate: mici defecțiuni în corespondența festivă i-au împins pe unii în clasamentul obraznic.

Mențiuni speciale:

  • Theo se află în fruntea listei obraznicilor, fără a fi surprinzător.
  • Spiridul Stagiar al lui Moș Crăciun a avut rezultate bune, rămânând în mare parte drăguț.
  • Shane a avut cel mai bun scor și sunt sigur că Moș Crăciun va fi foarte drăguț cu el anul acesta!

Această analiză oferă atât o demonstrație tehnică a fluxului de lucru ML, cât și o poveste distractivă care implică cititorii în timpul sezonului festiv.

Pasul 5: Concluzie

Acest proiect demonstrează modul în care învățarea automată poate fi utilizată în moduri creative în afara cazurilor tradiționale de utilizare în afaceri. Combinând funcțiile cu un flux de lucru ML adecvat, am creat o poveste uşoară, festivă, potrivită pentru un blog, consolidând în același timp bunele practici în colectarea datelor, preprocesare, modelare și vizualizare.

În cele din urmă, Jumping Rivers ML-Powered Naughty List este o sărbătoare a științei datelor, a culturii de echipă și a distracției de vacanță. Indiferent dacă ești obraznic sau drăguț, sperăm că acest lucru inspiră aplicații creative ale ML în contexte festive.

Pentru actualizări și revizuiri ale acestui articol, consultați postarea inițială

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.