O MLSTATKIT é uma biblioteca Python abrangente projetada para integrar perfeitamente métodos estatísticos estabelecidos em projetos de aprendizado de máquina. It encompasses a variety of tools, including Delong's test for comparing areas under two correlated Receiver Operating Characteristic (ROC) curves, Bootstrapping for calculating confidence intervals, AUC2OR for converting the Area Under the Receiver Operating Characteristic Curve (AUC) into several related statistics such as Cohen's d, Pearson's rpb, odds-ratio, and natural log odds-ratio, and Permutation_test for assessing the A significância estatística da diferença entre as métricas de dois modelos, arrastando aleatoriamente os dados e recalculando as métricas para criar uma distribuição de diferenças. Com seu design modular, o MLStatkit oferece aos pesquisadores e cientistas de dados um kit de ferramentas flexível e poderoso para aumentar suas análises e avaliações de modelos, atendendo a um amplo espectro de necessidades de testes estatísticos no domínio do aprendizado de máquina.
Instale o mlstatkit diretamente do Pypi usando o PIP:
pip install MLstatkit A função Delong_test permite uma avaliação estatística das diferenças entre as áreas sob duas curvas de características operacionais do receptor correlacionadas (ROC) derivadas de modelos distintos . Isso facilita uma compreensão mais profunda do desempenho comparativo do modelo.
Verdadeiro : Matriz de forma (n_samples,)
Rótulos binários verdadeiros no intervalo {0, 1}.
prob_a : matriz de forma (n_samples,)
Probabilidades previstas pelo primeiro modelo.
prob_b : matriz de forma (n_samples,)
Probabilidades previstas pelo segundo modelo.
Z_SCORE : FLOAT
A pontuação Z da comparação dos AUCs de dois modelos.
P_VALUE : FLOAT
O valor de P da comparação dos AUCs de dois modelos.
from MLstatkit . stats import Delong_test
# Example data
true = np . array ([ 0 , 1 , 0 , 1 ])
prob_A = np . array ([ 0.1 , 0.4 , 0.35 , 0.8 ])
prob_B = np . array ([ 0.2 , 0.3 , 0.4 , 0.7 ])
# Perform DeLong's test
z_score , p_value = Delong_test ( true , prob_A , prob_B )
print ( f"Z-Score: { z_score } , P-Value: { p_value } " ) Isso demonstra o uso de Delong_test para comparar estatisticamente os AUCs de dois modelos com base em suas probabilidades e rótulos verdadeiros. O escore z retornado e o valor p ajudam a entender se a diferença no desempenho do modelo é estatisticamente significativa.
A função Bootstrapping calcula intervalos de confiança para métricas de desempenho especificadas usando o bootstrapping, fornecendo uma medida da confiabilidade da estimativa. Ele suporta cálculo para AUROC (área sob a curva ROC), AUPRC (área sob a curva de precisão de precisão) e métricas de pontuação F1.
from MLstatkit . stats import Bootstrapping
# Example data
y_true = np . array ([ 0 , 1 , 0 , 0 , 1 , 1 , 0 , 1 , 0 ])
y_prob = np . array ([ 0.1 , 0.4 , 0.35 , 0.8 , 0.2 , 0.3 , 0.4 , 0.7 , 0.05 ])
# Calculate confidence intervals for AUROC
original_score , confidence_lower , confidence_upper = Bootstrapping ( y_true , y_prob , 'roc_auc' )
print ( f"AUROC: { original_score :.3f } , Confidence interval: [ { confidence_lower :.3f } - { confidence_upper :.3f } ]" )
# Calculate confidence intervals for AUPRC
original_score , confidence_lower , confidence_upper = Bootstrapping ( y_true , y_prob , 'pr_auc' )
print ( f"AUPRC: { original_score :.3f } , Confidence interval: [ { confidence_lower :.3f } - { confidence_upper :.3f } ]" )
# Calculate confidence intervals for F1 score with a custom threshold
original_score , confidence_lower , confidence_upper = Bootstrapping ( y_true , y_prob , 'f1' , threshold = 0.5 )
print ( f"F1 Score: { original_score :.3f } , Confidence interval: [ { confidence_lower :.3f } - { confidence_upper :.3f } ]" )
# Calculate confidence intervals for AUROC, AUPRC, F1 score
for score in [ 'roc_auc' , 'pr_auc' , 'f1' ]:
original_score , conf_lower , conf_upper = Bootstrapping ( y_true , y_prob , score , threshold = 0.5 )
print ( f" { score . upper () } original score: { original_score :.3f } , confidence interval: [ { conf_lower :.3f } - { conf_upper :.3f } ]" ) A função Permutation_test avalia a significância estatística da diferença entre as métricas de dois modelos, embaralhando aleatoriamente os dados e recalculando as métricas para criar uma distribuição de diferenças. Este método não assume uma distribuição específica dos dados, tornando -o uma opção robusta para comparar o desempenho do modelo.
from MLstatkit . stats import Permutation_test
y_true = np . array ([ 0 , 1 , 0 , 0 , 1 , 1 , 0 , 1 , 0 ])
prob_model_A = np . array ([ 0.1 , 0.4 , 0.35 , 0.8 , 0.2 , 0.3 , 0.4 , 0.7 , 0.05 ])
prob_model_B = np . array ([ 0.2 , 0.3 , 0.25 , 0.85 , 0.15 , 0.35 , 0.45 , 0.65 , 0.01 ])
# Conduct a permutation test to compare F1 scores
metric_a , metric_b , p_value , benchmark , samples_mean , samples_std = Permutation_test (
y_true , prob_model_A , prob_model_B , 'f1'
)
print ( f"F1 Score Model A: { metric_a :.5f } , Model B: { metric_b :.5f } " )
print ( f"Observed Difference: { benchmark :.5f } , p-value: { p_value :.5f } " )
print ( f"Permuted Differences Mean: { samples_mean :.5f } , Std: { samples_std :.5f } " ) A função AUC2OR converte uma área sob o valor da curva (AUC) em uma razão de chances (ou) e opcionalmente retorna valores intermediários como t, z, d e ln_or. Essa conversão é útil para entender a relação entre a AUC, uma métrica comum na classificação binária e, que é frequentemente usada em análises estatísticas.
from MLstatkit . stats import AUC2OR
AUC = 0.7 # Example AUC value
# Convert AUC to OR and retrieve all intermediate values
t , z , d , ln_OR , OR = AUC2OR ( AUC , return_all = True )
print ( f"t: { t :.5f } , z: { z :.5f } , d: { d :.5f } , ln_OR: { ln_OR :.5f } , OR: { OR :.5f } " )
# Convert AUC to OR without intermediate values
OR = AUC2OR ( AUC )
print ( f"OR: { OR :.5f } " ) A implementação do Delong_test no MLSTATKIT é baseada na seguinte publicação:
O método Bootstrapping para calcular intervalos de confiança não faz referência diretamente a uma única publicação, mas é uma técnica estatística amplamente aceita para estimar a distribuição de uma métrica reamostrando a substituição. Para uma visão geral abrangente dos métodos de inicialização, consulte:
O Permutation_tests são utilizados para avaliar a significância da diferença nas métricas de desempenho entre dois modelos, realocando aleatoriamente observações para grupos e calculando a métrica. Essa abordagem não faz suposições de distribuição específicas, tornando -a versátil para vários tipos de dados. Para uma discussão fundamental sobre testes de permutação, consulte:
Essas referências estabeleceram as bases para os testes e metodologias estatísticos implementados no MLSTATKIT, fornecendo aos usuários uma profunda compreensão de sua base científica e aplicabilidade.
A função AUR2OR converte a área sob a curva característica de operação do receptor (AUC) em várias estatísticas relacionadas, incluindo D de Cohen, RPB de Pearson, Ratio de odds e Odds-Ratio naturais. Essa conversão é particularmente útil na interpretação do desempenho dos modelos de classificação. Para uma explicação detalhada das fórmulas matemáticas usadas nesta conversão, consulte:
Essas referências fornecem a base matemática para a função AUR2OR, garantindo que os usuários possam interpretar com precisão a significância estatística e as implicações práticas de suas métricas de desempenho de modelo.
Congratulamo -nos com contribuições para o MLSTATKIT! Consulte nossas diretrizes de contribuição para obter mais detalhes.
O MLSTATKIT é distribuído sob a licença do MIT. Para obter mais informações, consulte o arquivo de licença no repositório do GitHub.
0.1.7 Update README.md0.1.6 Debug.0.1.5 Update README.md , adicione a função AUC2OR .0.1.4 Update README.md , Adicione a função Permutation_tests , refazer parâmetros Bootstrapping .0.1.3 Update README.md .0.1.2 Adicione a exibição de progresso do processo de operação Bootstrapping .0.1.1 Update README.md , setup.py . Adicionar CONTRIBUTING.md .0.1.0 Primeira edição