Resolução do desafio Titanic: Machine Learning from Disaster proposto pela Kaglle. O desafio é baseado no famoso naufŕagio do gigantesco navio Titanic que afundou no meio do Atlântico em 15/04/1912, matando 1502 dos 2224 passageiros. O desafio fornece um dataset para treinamento ("train.csv") com 891 dados de passageiros, incluindo a informação se sobreviveram ou não, e um outro dataset para teste ("test.csv") com o objetivo de prever o destino de 418 passageiros, cujo a resposta se sobreviveram ou não é incerta.
Ao analisar os datasets é verifcado que o primeiro desafio é completar os dados ausentes, como fica claro
na imagem abaixo sobre os dados de treinamento.
Para preencher os dados da coluna Age, é analisado o gráfico de idades conforme as classes de passageiros.
Portanto, os dados serão preenchidas de acordo com a seguinte lógica:
def setAge(cols):
Age = cols[0]
Pclass = cols[1]
if pd.isnull(Age):
if Pclass == 1:
return 37
elif Pclass == 2:
return 29
else:
return 24
else:
return Age
Como a quantidade de dados ausentes na coluna Cabin é grande, a coluna será apenas eliminada.
Outra informação analisada é referente ao sexo dos passageiros.
A informação da coluna Sex pode ser "female" e "male", a coluna em questão será substituída pela coluna Male com informações binárias (0 e 1). Dessa forma se o passageiro tem a coluna Male = 0 sabemos automaticamente que é do sexo feminino.
A coluna Embarked também é modificada. A coluna pode ter três informações ("Q", "S", "C"), é seguida a mesma lógica da coluna Sex, é criado duas colunas "Q" e "S", com informações binárias.
Algumas colunas são desconsideradas para o treinamento do modelo, como por exemplo o nome dos passageiros. O dados considerados para o treinamento são:
target = data_train['Survived'].values
features = data_train[["Pclass", "Age", "SibSp", "Parch", "Fare", "Male", "Q", "S"]].values
E para o teste:
features_test = data_test[["Pclass", "Age", "SibSp", "Parch", "Fare", "Male", "Q", "S"]].values
Os algoritmos considerados para o desafio e suas respectativas acurácias são:
Modelos | Acurácia |
---|---|
SVM | 89.09 |
KNN | 80.31 |
Reg. Logística | 80.20 |
O modelo que teve melhor desempenho foi SVM com ~89% de acertos e é o modelo usado para as predições. Um arquivo results.csv é gerado com o ID dos passageiros e a resposta da sobrevivência.