def intervalo_conf(resultados, modelo):
media = resultados.mean()
desvio_padrao = resultados.std()
print(f'Intervalo de confiança ({modelo}): [{media - 2*desvio_padrao}, {min(media + 2*desvio_padrao, 1)}]')
from sklearn.model_selection import cross_val_score, KFold
dtc = DecisionTreeClassifier(max_depth = 3)
rfc = RandomForestClassifier(max_depth = 2)
kf = KFold(n_splits = 10, shuffle = True, random_state = 5)
results_dtc = cross_val_score(dtc, X, y, cv = kf)
results_rf = cross_val_score(rfc, X, y, cv = kf)
intervalo_conf(results_dtc, 'Decision Tree')
intervalo_conf(results_rf, 'Random Forest')
from sklearn.model_selection import cross_val_score, StratifiedKFold
dtc = DecisionTreeClassifier(max_depth = 3)
rfc = RandomForestClassifier(max_depth = 2)
skf = StratifiedKFold(n_splits = 10, shuffle = True, random_state = 5)
results_dtc = cross_val_score(dtc, X, y, cv = skf, scoring = 'f1')
results_rf = cross_val_score(rfc, X, y, cv = skf, scoring = 'f1')
intervalo_conf(results_dtc, 'Decision Tree')
intervalo_conf(results_rf, 'Random Forest')
from sklearn.model_selection import cross_val_score, LeaveOneOut
dtc = DecisionTreeClassifier(max_depth = 3)
rfc = RandomForestClassifier(max_depth = 2)
loo = LeaveOneOut()
results_dtc = cross_val_score(dtc, X, y, cv = loo)
results_rf = cross_val_score(rfc, X, y, cv = loo)
print(f'Acurácia média (Decision Tree): {results_dtc.mean()}')
print(f'Acurácia média (Random Forest):{results_rf.mean()}')