Amostra de Dados
PassengerId,Sobreviveu,Classe,Nome,Sexo,Idade,Irmaos,Parentes,Bilhete,Tarifa,Cabine,Embarque
1,0,3,"Braund, Sr. Owen Harris",masculino,22,1,0,A/5 21171,7.25,,S
2,1,1,"Cumings, Sra. John Bradley",feminino,38,1,0,PC 17599,71.2833,C85,C
3,1,3,"Heikkinen, Srta. Laina",feminino,26,0,0,STON/O2.3101282,7.925,,S
4,1,1,"Futrelle, Sra. Jacques Heath",feminino,35,1,0,113803,53.1,C123,S
Análise de Características
Classe: Passageiros de classes superiores podem ter prioridade
Sexo: Mulheres possuem maior probabilidade de sobrevivência
Idade: Adultoss jovens podem ter vantagem
Parentes: Quentidade de familiares a bordo
Estatísticas com Pandas
import pandas
dados = pandas.read_csv("titanic.csv")
print(dados.describe())
Pré-processamento
Preenchimento de Valores Ausentes
dados["Idade"] = dados["Idade"].fillna(dados["Idade"].median())
Codificação de Categorias
dados.loc[dados["Sexo"] == "masculino", "Sexo"] = 0
dados.loc[dados["Sexo"] == "feminino", "Sexo"] = 1
Regressão Linear
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import KFold
variaveis = ["Classe","Sexo","Idade","Irmaos","Parentes","Tarifa","Embarque"]
modelo = LinearRegression()
kf = KFold(n_splits=3)
for treino, teste in kf.split(dados):
X_treino = dados[variaveis].iloc[treino]
y_treino = dados["Sobreviveu"].iloc[treino]
modelo.fit(X_treino, y_treino)
Floresta Aleatória
from sklearn.ensemble import RandomForestClassifier
modelo_rf = RandomForestClassifier(
n_estimators=50,
min_samples_split=4,
min_samples_leaf=2,
random_state=1
)
Engenharia de Características
dados["TamanhoFamilia"] = dados["Irmaos"] + dados["Parentes"]
dados["ComprimentoNome"] = dados["Nome"].apply(len)
Importância de Características
from sklearn.feature_selection import SelectKBest
seletor = SelectKBest(k=5)
seletor.fit(dados[variaveis], dados["Sobreviveu"])
Modelo Ensemble
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.linear_model import LogisticRegression
algoritmos = [
[GradientBoostingClassifier(), variaveis],
[LogisticRegression(), variaveis]
]
previsoes = []
for modelo, vars in algoritmos:
modelo.fit(dados[vars], dados["Sobreviveu"])
proba = modelo.predict_proba(dados_teste[vars])[:,1]
previsoes.append(proba)
previsao_final = (previsoes[0] + previsoes[1]) / 2