import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats
from scipy.stats import chi2_contingency
import statsmodels.api as sm
from statsmodels.formula.api import ols
%matplotlib inline
sns.set_style('white')
train=pd.read_csv('data/train.csv')
test=pd.read_csv('data/test.csv')
for i in [train, test]:
i['date'] = pd.to_datetime(i['date'], format = "%Y/%m/%d")
# Gestion des valeurs manquantes catégorielles
i['cheveux'] = i['cheveux'].fillna(i['cheveux'].mode()[0])
i['sexe'] = i['sexe'].fillna(i['sexe'].mode()[0])
i['diplome'] = i['diplome'].fillna(i['diplome'].mode()[0])
i['specialite'] = i['specialite'].fillna(i['specialite'].mode()[0])
i['dispo'] = i['dispo'].fillna(i['dispo'].mode()[0])
# Gestion des valeurs manquantes numériques
i['age'] = i['age'].fillna(i['age'].mean())
i['exp'] = i['exp'].fillna(i['exp'].mean())
i['salaire'] = i['salaire'].fillna(i['salaire'].mean())
i['note'] = i['note'].fillna(i['note'].mean())
# Gestion des outliers
i['exp'] = np.where(i['exp'] < 0, i['age'] - 20, i['exp'])
i['age'] = np.where(i['age'] < 16, i['exp'] + 20, i['age'])
i['AGE_BINNED'] = pd.cut(i['age'], bins = np.linspace(16, 74, num = 11))
i['EXP_BINNED'] = pd.cut(i['exp'], bins = np.linspace(0, 23, num = 7))
Questions ML1 :
1. Décrivez le jeu de données
2. Y a-t-il une dépendance statistiquement significative entre :
pd.crosstab(train.specialite, train.sexe)
g, p, dof, expctd = chi2_contingency(pd.crosstab(train.specialite, train.sexe))
g, p
sns.boxplot(x="cheveux", y="salaire", data=train)
fit = ols('salaire ~ cheveux', data = train).fit()
fit.summary()
sm.stats.anova_lm(fit, typ=1)
sns.lmplot(x="exp", y="note", data=train )
ols("note ~ exp", train).fit().summary()