Saltar navegación

Actividade 2: Preprocesado e transformación dos datos

📌 Obxectivo

Copilot (CC BY-SA)

Xa explorastes os datos do Titanic e identificastes os problemas máis importantes. Agora é hora de preparar os datos para que o modelo de IA poida interpretalos correctamente e facer predicións precisas.

Recordade: Un modelo de IA nunca será mellor que os datos que recibe.

Se os datos están sucios ou mal preparados, o modelo terá dificultades para aprender. Por iso, nesta actividade, limparalos e transformaralos nun formato óptimo para a intelixencia artificial.

Cadernos de programación listos? Comezamos!

🛠️ Paso 1: Conversión de variables categóricas

Moitas columnas conteñen valores en texto como "male", "female" ou nomes de cidades. Os modelos de IA non entenden palabras, só números! Transformaremos estas variables en formato numérico. Executade:

Código Python:Convirtindo columnas categóricas a números

df = pd.get_dummies(df, columns=['Sex', 'Embark'], drop_first=True)  
df.info() #Se queres ver a nova información dos datos
df.head(10)  # Mostra as 10 primeiras filas do DataFrame

Codificación con One-Hot Encoding (Transforma categorías en columnas de False(0) e True(1)): No noso caso crearía as columnas  Sex_female
Sex_male , Embarked_C , Embarked_Q , e  Embarked_S a partir de Sex (2 categorías male/female) e Embarked ( 3 categorías S,Q,C ).

Datos normalizados
Datos normalizados
Creación propia. Datos Normalizados (CC BY-SA)

💡 Preguntas para reflexionar:

  • Antes da codificación, tiñamos 11 columnas, porque eliminamos Cabin.Despós da codificación temos de novo 12...cales son? Que fixo este código?
  • Como variaron os valores da columna Sex?
  • Por que crees que os modelos de IA necesitan números en vez de palabras?
  • Que significa "drop_first=True" no código anterior? Que fai nos datos?

🛠️ Paso 2: Normalización e escalado dos datos

Algúns valores nos datos teñen escalas moi diferentes. A idade pode estar entre 1 e 80, mentres que o prezo do billete pode ser superior a 500. Iso pode afectar negativamente ao modelo. Aplicaremos normalización para que todas as variables teñan valores nun rango similar:

Código Python: Escalado de datos

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
df.head(10) # Mostra as 10 primeiras filas do DataFrame ANTES do escalado
df[['Age', 'Fare']] = scaler.fit_transform(df[['Age', 'Fare']]) # Escalado desas 2 columnas
df.head(10) # Mostra as 10 primeiras filas do DataFrame DESPÓS DO ESCALADO     

♦ StandardScaler escala os datos centrándoos en 0 e dándolles unha desviación estándar de 1, o que fai que os valores parezan irrecoñecibles para humanos. Isto é útil para os modelos de aprendizaxe automática, xa que mellora a súa capacidade para procesar os datos correctamente e evita que algunhas variables teñan máis peso que outras debido ás súas magnitudes.

Se prefires conservar valores máis intuitivos para humanos podes usar :

Código Python: TITULO DO PROGRAMA

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
df[['Age', 'Fare']] = scaler.fit_transform(df[['Age', 'Fare']])
df.head(10) # Mostra as 10 primeiras filas do DataFrame DESPÓS DO ESCALADO

♦ MinMaxScaler (from sklearn.preprocessing import MinMaxScaler) , escala os valores entre 0 e 1, mantendo unha interpretación máis intuitiva para humanos e sen números negativos. Así, "Fare" e "Age" seguirán sendo lexibles, pero escalados entre 0 e 1.

Datos StandardScaler
Creación propia. Datos StandardScaler (CC BY-SA)
Datos MinMax
Creación propia. Datos MinMax (CC BY-SA)

💡 Preguntas para reflexionar:

  • Cal é a diferencia nos datos usando MinMaxScaler ou StandardScaler?
  • Por que pode ser importante escalar os datos antes de adestrar o modelo?
  • Como pode afectar a interpretación do modelo se os datos teñen escalas moi diferentes?

✅ Feito

Agora os vosos datos están listos para ser procesados por un modelo de IA. A información é máis clara para as máquinas, os valores nulos foron tratados, as variables categóricas convertéronse a números, elimináchedes columnas redundantes e os datos están escalados correctamente.

Se desexas descargar o arquivo cos datos procesados (csv - 95303 B), podes usar este código:

Código Python: Descarga o dataset procesado

# Gardar o DataFrame procesado como CSV
df.to_csv("datasetTitanicProcesado.csv", index=False)

# Descargar o arquivo en Colab
from google.colab import files
files.download("datasetTitanicProcesado.csv")    

Autoavaliación

Lista de Cotexo

🛠️ Preprocesado e Transformación de Datos

Esta lista axúdache a organizar e verificar o teu progreso no preprocesado de datos.