Trace uma curva ROC em Python
- Definição de Curva ROC em Python
- Biblioteca Scikit-Learn em Python
- Código Python para traçar a curva ROC
- Explicação do código
Neste guia, vamos ajudá-lo a saber mais sobre esta função Python e o método que você pode usar para plotar uma curva ROC como a saída do programa.
Definição de Curva ROC em Python
O termo curva ROC significa curva de característica de operação do receptor. Essa curva é basicamente uma representação gráfica do desempenho de qualquer modelo de classificação em todos os limites de classificação.
Existem dois parâmetros desta curva:
- Taxa de Positivo Verdadeiro (TPR) - Significa verdadeiro, ou seja, sensibilidade verdadeira
- Taxa de falso positivo (FPR) - Significa pseudo, ou seja, falsa sensibilidade
Ambos os parâmetros são conhecidos como características operacionais e são usados como fatores para definir a curva ROC.
Em Python, a eficiência do modelo é determinada pela visualização da área sob a curva (AUC). Assim, o modelo mais eficiente possui AUC igual a 1, e o modelo menos eficiente possui AUC igual a 0,5.
Biblioteca Scikit-Learn em Python
A biblioteca Scikit-learn
é uma das mais importantes bibliotecas de código aberto usadas para realizar o aprendizado de máquina em Python. Esta biblioteca consiste em muitas ferramentas para tarefas como classificação, agrupamento e regressão.
Neste tutorial, várias funções desta biblioteca são usadas para ajudar na plotagem da curva ROC. Essas funções são:
make_classification
- Esta função é importada porque ajuda a gerar um problema de classificação aleatória de n classes criando clusters de pontos.RandomForestClassifier
- Esta função é importada comoRandom Forest Classifier
e é usada como um modelo de amostra neste tutorial no qual a curva ROC é feita.train_test_split
- Esta função é usada para dividir todos os dados em dois subconjuntos (Train
eTest
) que são usados para treinar e testar os dados.roc_curve
- Esta função é usada para retornar a curva ROC de um determinado modelo.
Código Python para traçar a curva ROC
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_curve
def plot_roc_curve(fper, tper):
plt.plot(fper, tper, color="red", label="ROC")
plt.plot([0, 1], [0, 1], color="green", linestyle="--")
plt.xlabel("False Positive Rate")
plt.ylabel("True Positive Rate")
plt.title("Receiver Operating Characteristic Curve")
plt.legend()
plt.show()
data_X, cls_lab = make_classification(
n_samples=2100, n_classes=2, weights=[1, 1], random_state=2
)
train_X, test_X, train_y, test_y = train_test_split(
data_X, cls_lab, test_size=0.5, random_state=2
)
model = RandomForestClassifier()
model.fit(train_X, train_y)
prob = model.predict_proba(test_X)
prob = probs[:, 1]
fper, tper, thresholds = roc_curve(test_y, prob)
plot_roc_curve(fper, tper)
Resultado:
Explicação do código
Primeiro, todas as bibliotecas e funções necessárias para plotar uma curva ROC são importadas. Em seguida, uma função chamada plot_roc_curve
é definida na qual todos os fatores críticos da curva como a cor, rótulos e título são mencionados usando a biblioteca Matplotlib
. Depois disso, a função make_classification
é usada para fazer amostras aleatórias, e então elas são divididas em conjuntos train
e test
com a ajuda da função train_test_split
. Aqui, a proporção train-test
dos dados é 0.50
. Em seguida, o algoritmo RandomForestClassifier
é usado para ajustar os dados train_X
e train_y
. Finalmente, a função roc_curve
é usada para plotar a Curva ROC.
Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.
LinkedIn