Sua primeira submissão ao concurso de Kaggle

Prever quem sobreviveu ao desastre do Titanic – The Easy Way

Dhrumil Patel Blocked Unblock Seguir Seguindo 4 de janeiro

A Kaggle , de propriedade da Google Inc., é uma comunidade on-line de praticantes de ciência de dados e aprendizado de máquina. Em outras palavras, a sua casa para a Data Science, onde você pode encontrar conjuntos de dados e competir em competições. Contudo; Eu me esforcei para completar minha primeira submissão de competições por causa de, eu diria, recursos impróprios . Eu passei por kernels (leia como ' artigos' ) para esta competição, mas todos eles não foram projetados para iniciantes. Quero dizer, como um iniciante, eu não quero ver visualizações que não posso executar ou interpretar, eu só preciso entender o que está acontecendo em palavras simples.

Mas eu finalmente consegui. E se você está aqui porque você também está lutando para começar com Kaggle, então meu amigo, este artigo vai fazer o seu dia. Nenhuma linha de código ou visualização desnecessária, apenas um caminho direto para o seu primeiro envio.

As paredes de tijolos estão lá por um motivo. Não está lá para nos manter fora; mas para nos dar uma chance de mostrar o quanto queremos algo. As paredes de tijolos estão lá para impedir as pessoas que não o querem o bastante. Eles estão lá para impedir as outras pessoas.

– Randy Pausch

Passo 0 – Primeiras Coisas Primeiro

Para acompanhar este tutorial do Kaggle , você precisa fazer duas coisas. Principalmente, dirija-se a este link e obtenha uma conta Kaggle. Depois disso, junte-se à competição Kaggle Titanic acessando este link. Feito? Ótimo. Estamos todos prontos. Vamos fazer algum trabalho real agora.

Etapa 1 – Entenda seus dados

Depois de se inscrever para a competição, você pode encontrar os dados na página inicial da competição. Para carregar e executar uma manipulação muito básica de dados, estou usando o Pandas , uma biblioteca de manipulação de dados em python. Se você não está ciente disso, sugiro que você vá a este guia de 10 minutos para se familiarizar com ele.

No Aprendizado de Máquina, os dados são divididos principalmente em duas partes – Treinamento e Teste (a terceira divisão é a validação , mas você não precisa se preocupar com isso agora). Os dados de treinamento são para treinar nosso algoritmo e Testar dados é verificar o desempenho do nosso algoritmo. A razão de divisão entre o trem e os dados de teste é geralmente em torno de 70–30. Por isso, temos um total de 891 entradas para treinamento e 417 entradas para testes. Carregar os dados por escrito fornecerá 12 colunas, conforme mostrado abaixo. Vamos chamar isso de recursos. Nada de novo, apenas um nome chique. Encorajo-o a percorrer os dados pelo menos uma vez antes de avançar.

 PassengerId: int: id 
Sobrevivido: int: Sobrevivência (0 = Não; 1 = Sim)
Classe: int: Classe de Passageiros
Nome: objeto: nome
Sexo: objeto: sexo
Idade: flutuar: Idade
SibSp: int: Número de irmãos / cônjuges a bordo
Parch: int: Número de pais / filhos a bordo
Bilhete: objeto: Número do Bilhete
Tarifa: float: tarifa do passageiro
Cabana: objeto: Cabine
Embarcado: objeto: Porto de Embarque
(C = Cherbourg; Q = Queenstown; S = Southampton)

Além disso, uma compreensão do tipo de dados de cada recurso é importante. Agora que nós carregamos nossos dados e entendemos o que parece, avançaremos para a engenharia de recursos. Em outras palavras, medir o impacto de cada característica em nossa produção, ou seja, se um passageiro sobreviveu ou não.

Etapa 2 – Engenharia de recursos

Conforme discutimos, a engenharia de recursos está medindo o impacto de cada recurso na saída. Mas o mais importante é que não se trata apenas de usar recursos existentes, mas de criar novos que podem melhorar significativamente a produção. Andrew Ng disse: “A criação de recursos é difícil, consome tempo e requer conhecimento especializado. O aprendizado de máquina aplicado é basicamente engenharia de recursos. Vamos passar por cada recurso que estamos usando para que você possa entender como usar os recursos existentes e como criar novos recursos.

2.1 – Classe de Passageiros

É óbvio que a classe de passageiro é diretamente proporcional à taxa de sobrevivência. Se a importância de uma pessoa for maior do que a de outras pessoas, elas sairão do desastre primeiro. E nossos dados contam a mesma história. 63% das pessoas sobreviveram da Classe 1. Portanto, esse recurso é definitivamente impactante. Dados na coluna Pclass estão completos, portanto, não há necessidade de manipular.

2.2 – Sexo

O sexo é novamente importante e diretamente proporcional à taxa de sobrevivência. As mulheres e as crianças foram salvas primeiro durante esta tragédia. Podemos ver que 74% de todas as mulheres foram salvas e apenas 18% de todos os homens foram salvos. Mais uma vez, isso afetará nosso resultado.

Saída do recurso 2

2.3 – Tamanho da Família

As próximas duas colunas são SibSp e Parch, que não estão diretamente relacionadas a se uma pessoa sobreviveu ou não. Foi aí que surgiu a idéia de criar um novo recurso. Para cada linha / passageiro, determinaremos o tamanho de sua família adicionando o SibSp + Parch + 1 (ele / ela mesmo). O tamanho da família difere de um mínimo de 1 a um máximo de 11, onde o tamanho da família de 4 tem a maior taxa de sobrevivência de 72%.

Parece ter um bom efeito em nossa previsão, mas vamos além e categorizamos as pessoas para verificar se estão sozinhas nesta nave ou não. E depois de analisar também, parece ter um impacto considerável em nossa produção.

2.4 – Embarcou

De que lugar um passageiro embarcado tem algo a ver com a sobrevivência (nem sempre). Então, vamos dar uma olhada. Nesta coluna, há muitos NAs. Para lidar com isso, vamos substituir NAs por 'S' porque é o valor mais ocorrido.

Saída do recurso 4

2.5 – Tarifa

Também faltam dados nesta coluna. Não podemos lidar com todos os recursos da mesma maneira. Para corrigir o problema aqui, vamos obter o valor mediano de toda a coluna. Quando você corta com qcut , os compartimentos serão escolhidos para que você tenha o mesmo número de registros em cada caixa (partes iguais). Olhando através da saída, é considerável.

Saída do recurso 5

2,6 – Idade

Idade tem alguns valores ausentes. Vamos preenchê-lo com números aleatórios entre (idade média menos desvio padrão médio ) e (idade média mais desvio padrão médio). Depois disso, vamos agrupá-lo no conjunto de 5. Ele tem um bom impacto também.

Saída do recurso 6

2.7 – Nome

Este é um pouco complicado. A partir do nome, temos que recuperar o título associado a esse nome, ou seja, Senhor ou Capitão. Para fazer isso, temos que usar a biblioteca de expressão regular do Python ( expressão regular como fazer ). Primeiro, obtemos o título do nome e o armazenamos em uma nova lista chamada título . Depois disso, vamos limpar a lista, restringindo-a a títulos comuns.

É isso aí. Nós limpamos nossos recursos e eles estão prontos para uso. Contudo; Há mais um passo antes de alimentar nossos dados ao algoritmo ML. A coisa sobre os algoritmos ML é que eles só aceitam valores numéricos e não seqüências de caracteres. Portanto, temos que mapear nossos dados para valores numéricos e converter as colunas para o tipo de dados inteiro.

Etapa 3 – Mapeando Dados

Dados de mapeamento são fáceis. Examinando o código, você terá a ideia de como funciona. Uma vez feito, agora temos que selecionar quais recursos usar. A seleção de recursos é tão importante quanto a criação de recursos. Vamos descartar colunas desnecessárias para que isso não afete nosso resultado final.

Dados finais que iremos alimentar para o algoritmo ML

É isso. Você completou a parte difícil. Olhe seus dados, parece tão bonito. Agora, só temos que prever o nosso resultado, que é algo fácil. Ou pelo menos vou facilitar para você entender.

Jack, venha amigo, estamos quase lá

Etapa 4 – Previsão

Conforme discutimos, exigimos treinamento e teste de dados. Sim, Dhrumil, nós temos, e agora? Ok perfeito. Agora precisamos treinar nosso modelo. Para fazer isso, precisamos fornecer dados em duas partes – X e Y.

 X: X_train: contém todos os recursos 
Y: Y_train: Contém a saída real (Sobrevivida)

Para elaborar mais, precisamos dizer ao nosso modelo que estamos procurando por essa saída. Então, vai treinar dessa maneira. Por exemplo, seu amigo está fazendo compras e você quer óculos, você envia uma foto de óculos para o seu amigo dizendo que você quer o mesmo. Isso é treinamento. Você está treinando ele / ela, então ele pode trazer óculos semelhantes, explicando características (Aviador, Wayfarers) e fornecendo a saída exata (imagem dos óculos de proteção).

Temos dados separados, agora chamamos nosso classificador, ajustamos dados (treinamento) com a ajuda do método .fit da biblioteca scikit-learn e prevemos a saída nos dados de teste, com o método .predict .

Nota – Como este tutorial é para iniciantes, não estou incluindo outros classificadores, mas o processo permanece o mesmo. Classificador de chamadas, dados de ajuste, previsão Apenas no caso de você querer explorar mais. Existem vários outros classificadores , mas usei o Decision Tree porque, de acordo com o meu conhecimento, funciona melhor com este conjunto de dados. Para saber mais sobre as árvores de decisão, consulte este artigo .

Sim, Tony, isso é ótimo pela primeira vez

Passo 5 – Sua Primeira Submissão

E finalmente, enviando nossa saída. Nosso arquivo .csv saída deve ter apenas duas colunas – ID do passageiro e Sobrevivido – conforme mencionado na página da competição. Criando isso e enviando por título para a página de competição, minha submissão foi pontuada 0,79425, que está no Top 25% no momento da escrita deste artigo.

A posição que eu tenho na tabela de classificação, onde você se senta?

Encorajo-vos a explorar diferentes funcionalidades para melhorar a precisão do seu modelo e a sua classificação nesta competição também. Eu adoraria ouvir de você que você chegou ao Top 5% ou melhor, Top 1%. Você encontrará o código inteiro no meu repositório GitHub .

Notas finais

Espero que este artigo tenha respondido à sua pergunta principal “Como começar com o Kaggle?” Conhecimento adequado, bons recursos e disposição para aprender coisas novas é tudo o que você precisa para seguir em frente. Você não precisa ser mestre desde o começo. Tudo vem com persistência. Se você está lendo isso, você tem toda a energia para cumprir seus objetivos, apenas não pare, não importa o quê. Se você tiver dúvidas sobre este artigo, entre em contato comigo por email ou Twitter ou até mesmo pelo Linkedin . E mesmo que você não tenha dúvidas, ainda adoraria ver você na minha caixa de entrada com seus valiosos comentários ou sugestões, se houver.

Aprendizagem Feliz.