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 ).
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.
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.
# 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")
🛠️ Paso 1: Conversión de variables categóricas
Que é One-Hot Encoding?
Transformación de datos categóricos
One-Hot Encoding convirte datos de texto en números para que os modelos de aprendizaxe automática os poidan interpretar.
Cada categoría convértese nunha nova columna con valores 0 (False) ou 1 (True).
🔸 Antes da codificación
PassengerId
Sex
Embark
1
Male
S(Southampton)
2
Female
C(Cherbourg)
3
Female
S(Southampton)
4
Female
S(Southampton)
🔸 Despois da codificación One-Hot ( con drop_first=False)
PassengerId
Sex_female
Sex_male
Embark_C
Embark_Q
Embark_S
1
False
True
False
False
True
2
True
False
True
False
False
3
True
False
False
False
True
4
True
False
False
False
True
🔸 Despois da codificación One-Hot ( con drop_first=True)
PassengerId
Sex_male
Embark_Q
Embark_S
1
True
False
True
2
False
False
False
3
False
False
True
4
False
False
True
Como podedes comprobar, One-Hot crea novas columnas:
Sex_male será True se é un home e False se é unha muller.
Embark-LETRA será True se embarcou nesa cidade, e False se non embarcou nela.
Aparecen 3 columnas unha para cada cidade (3 categorías)
drop_first=True elimina unha das categorías de cidade, simplifica os datos, xa que se non embarcou en C ou en Q, embarcou por defecto en S.
Resposta ás preguntas de reflexión
Antes da codificación, tiñamos 11 columnas, porque eliminamos Cabin. Despois da codificación temos de novo 12... Cales son? Antes da codificación, tiñamos 11 columnas porque eliminamos Cabin, que tiña moitos valores nulos. Despois da codificación One-Hot, convirteu as categorías de Sex e Embark en columnas binarias, aumentando o número total de columnas a 13, con drop_first=True, elimínase a columna de Embark_Q, quedando en 12 de novo.
Que fixo este código? Transformou as 2 columnas categóricas (Sex e Embark) en columnas de valores bool (True ou False), permitindo que os modelos de IA as interpreten correctamente. Usou drop_first=True para eliminar unha categoría redundante e evitar problemas de colinearidade.
Como variaron os valores da columna Sex? Sex contiña os valores male e female. Despois da codificación:
Creouse a columna Sex_male con valores False(0) (female) e True(1) (male).
Eliminouse a categoría female porque drop_first=True deixou só Sex_male eliminando Sex_female.
Por que os modelos de IA necesitan números en vez de palabras? Os modelos de IA procesan datos numéricos, non texto. As palabras non teñen un significado matemático que os algoritmos poidan calcular. A codificación One-Hot converte texto en valores 0s e 1s, facilitando a interpretación.
Que significa "drop_first=True" no código anterior? Que fai nos datos? drop_first=True elimina a primeira categoría dunha columna codificada, reducindo o número de columnas xeradas. Isto evita redundancia e problemas de colinearidade nos modelos de aprendizaxe automática.
🛠️ Paso 2: Normalización e escalado de datos
📊 Datos transformados co StandardScaler
PassengerId
Age
Fare
Sex_male
Embarked_Q
Embarked_S
1
-0.592494
-0.502445
True
False
True
2
0.638776
0.786845
False
False
False
3
-0.284677
-0.488854
False
False
True
4
0.407912
0.420730
False
False
True
5
0.407912
-0.486337
True
False
True
Cal é a diferenza nos datos usando MinMaxScaler ou StandardScaler?
MinMaxScaler escala os valores entre 0 e 1, mantendo a escala orixinal pero normalizada.
StandardScaler centra os datos en 0 e dalles unha desviación estándar de 1, o que pode parecer menos intuitivo.
Por que pode ser importante escalar os datos antes de adestrar o modelo? Os algoritmos de aprendizaxe automática funcionan mellor cando os datos teñen escalas uniformes. Evita que valores con magnitudes grandes teñan máis influencia no modelo.
Como pode afectar a interpretación do modelo se os datos teñen escalas moi diferentes? Se as escalas son moi distintas, o modelo pode dar máis peso a columnas con valores altos, ignorando outras igual de importantes pero con valores típicos baixos. Algoritmos como regresión ou redes neuronais poden ter problemas para axustarse correctamente.
A colinearidade ocorre cando dúas ou máis variables están tan relacionadas que unha pode predicirse a partir da outra.
Exemplo : Se temos as columnas "Altura en metros" e "Altura en centímetros", están colineais porque a segunda é só unha versión multiplicada por 100 da primeira. Isto pode causar problemas nun modelo de IA, xa que a información é repetitiva e innecesaria. Solución? Mantemos só unha das columnas para evitar redundancia!
Isto é o que facemos coas cidades de embarque, se hai 3, dando os datos de 2 xa sabemos o dato da terceira. O mesmo con Sex_male e Sex_female, se sabemos o valor dunha, xa está determinado o valor da outra. Eliminamos columnas redundantes.